嵌入式系統設計大學教程_第1頁
嵌入式系統設計大學教程_第2頁
嵌入式系統設計大學教程_第3頁
嵌入式系統設計大學教程_第4頁
嵌入式系統設計大學教程_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、嵌入式系統設計大學教程習題與解答第1章嵌入式系統設計基本概念(緒論)1、嵌入式系統的定義是什么?你是如何理解嵌入式系統的?(P3)答:嵌入式系統一般定義為以應用為中心、以計算機技術為基礎,軟硬件可裁剪,應用系統對功能、可靠性、成本、體積、功耗和應用環境有特殊要求的專用計算機系統。一個嵌入式系統就是一個硬件和軟件的集合體,它包括硬件和軟件兩部分。其中硬件包括嵌入式處理器/控制器/數字信號處理器(DSP)、存儲器及外設器件、輸入輸出(I/O)端口、圖形控制器等;軟件部分包括操作系統軟件(嵌入式操作系統)和應用程序(應用軟件),由于應用領域不同,應用程序千差萬別。2、列出并說明嵌入式系統不同于其他計

2、算機系統的主要特征。(P3P4)答:主要特征有:?系統內核?。河捎谇度胧较到y一般是應用于小型電子裝置,系統資源相對有限,所以內核較傳統的操作系統要小得多。?專用性強:嵌入式系統通常是面向特定任務的,個性化很強,其中軟件系統和硬件的結合非常緊密,一般要針對硬件進行軟件系統的移植。?運行環境差異大:嵌入式系統使用范圍極為廣泛,其運行環境差異很大。?可靠性要求高:嵌入式系統往往要長期在無人值守的環境下運行,甚至是常年運行,因此對可靠性的要求特別高。?系統精簡和高實時性操作系統:?具有固化在非易失性存儲器中的代碼:為了系統的初始化,幾乎所有系統都要在非易失性存儲器中存放部分代碼(啟動代碼)。為了提高執

3、行速度和系統可靠性,大多數嵌入式系統常常把所有代碼(或者其壓縮代碼)固化,存放在存儲器芯片或處理器的內部存儲器件中,而不使用外部存儲介質。?嵌入式系統開發工作和環境:嵌入式系統開發需要專門的開發工具和環境。3、簡述嵌入式系統的體系結構。(P5)答:嵌入式系統自底向上包含四個部分:硬件平臺、嵌入式實時操作系統(RTOS)、硬件抽象層(HAL)和嵌入式實時應用程序。硬件抽象層位于操作系統和硬件之間,包含了系統中與硬件相關的大部分功能。屏蔽了底層硬件的多樣性,操作系統不再直接面對具體的硬件環境,而是面向由這個中間層次所代表的、邏輯上的硬件環境。4、嵌入式系統是怎樣分類的?(P8)答:根據不同的分類標

4、準,嵌入式系統有不同的分類方法。按嵌入式微處理器的位數分類:嵌入式系統可分為4位、8位、16位、32位和64位等;按軟件實時性需求分類:可分為非實時系統(如PDA)、軟實時系統(如消費類產品)和硬實時系統(如工業實時控制系統)。按嵌入式系統的復雜程度分類:嵌入式系統可分為小型嵌入式系統、中型嵌入式系統和復雜嵌入式系統。5、什么是實時操作系統,其主要功能是什么?(P8)答:實時多任務操作系統(RealTimemulti-taskingOperationSystem,RTOS)簡稱實時操作系統,主要用來完成嵌入式實時應用的任務調度和控制等核心功能。這些功能是通過內核服務函數形式交給用戶調用的,也就

5、是RTOS的系統調用,或者叫做RTOS的API。6、在日常生活中,你接觸過哪些嵌入式產品?他們都有些什么功能?(P9P10)答:略第2章嵌入式系統設計基本概念1、嵌入式系統的硬件由哪幾個部分組成?(P1213)答:嵌入式系統的硬件系統是由嵌入式處理器、存儲器、I/O接口電路、通信模塊以及其他外部設備組成的。其核心是嵌入式處理器。存儲器是構成嵌入式系統硬件的重要組成部分。嵌入式處理器工作時,必須有附屬電路支持,如時鐘電路、復位電路、調試電路、監視定時器、中斷控制電路等,這些電路并不完成數據的輸入/輸出功能,而是為嵌入式處理器的工作提供必要的條件。嵌入式處理器與通用處理器的最大區別在于嵌入式處理器

6、集成了大量的不同功能的I/O模塊。用戶在開發嵌入式系統時,可以根據系統需求選擇合適的嵌入式處理器,而無需再另外配備I/O電路。此外,嵌入式系統通常還包括人機交互界面,用于系統與用戶的交互。人機界面常常使用鍵盤、液晶屏、觸摸屏等部件,以方便與用戶的交互操作。2、通用處理器與嵌入式處理器有哪些相同和不同的地方?(P13)答:嵌入式微處理器一般具備四個特點:?對實時和多任務有很強的支持能力,能完成多任務并且有較短的中斷響應時間,從而使內部的代碼和實時操作系統的執行時間減少到最低限度;?具有功能很強的存儲區保護功能,這是由于嵌入式系統的軟件結構已模塊化,而為了避免在軟件模塊之間出現錯誤的交叉作用,需要

7、設計強大的存儲區保護功能,同時也有利于軟件診斷;?可擴展的處理器結構,以能迅速地擴展出滿足應用的高性能的嵌入式微處理器;?嵌入式處理器的功耗必須很低,尤其是用于便攜式的無線及移動的計算和通信設備中靠電池供電的嵌入式系統更是如此,功耗只能為mW甚至uW級。嵌入式處理器與通用處理器的最大區別在于嵌入式處理器集成了大量的不同功能的I/O模塊。用戶在開發嵌入式系統時,可以根據系統需求選擇合適的嵌入式處理器,而無需再另外配備I/O電路。3、常用的嵌入式處理器通常分成哪幾大類?(P13)答:嵌入式系統中的處理器通常分為三大類,即微處理器(Micro-ProcessorUnit,MPU)、微控制器(Micr

8、o-ControllerUnit,MCU)和數字信號處理器(DSP)。微處理器是指功能較強大的CPU,它不是為任何特定的計算目標而設計的。因此這種芯片通常用于個人計算機與服務器。微控制器是針對嵌入式系統而設計的,它將CPU、存儲器以及其他外設都集成在同一片電路板上。數字信號處理器(DSP)中的CPU是針對快速離散時間信號處理計算的。因此,DSP非常適用于音頻及視頻通信?,F代的芯片生產工藝已經允許將重要處理器的內核和各種外圍的芯片器件整合在一起,以進一步降低功耗,達到專用的需求,這時,便出現了片上系統SoC(SystemOnChip)。4、什么是嵌入式外圍設備?簡要說明嵌入式外圍設備是如何分類的

9、。(P2223)答:5、嵌入式操作系統的發展經歷了哪幾個階段?(P28)答:嵌入式操作系統伴隨著嵌入式系統的發展,大致經歷了四個階段:第一階段:無操作系統的嵌入算法階段,以單芯片為核心的可編程控制器形式的系統,具有與監測、伺服、指示設備相配合的功能。第二階段:以嵌人式CPU為基礎、簡單操作系統為核心的嵌入式系統。由于CPU種類繁多,因此通用性比較差;系統開銷小,效率高;具有一定的兼容性和擴展性;系統主要用來控制系統負載以及監控應用程序運行。第三階段:通用的嵌入式實時操作系統階段。以嵌入式操作系統為核心的嵌入式系統,能運行于各種類型的微處理器上,兼容性好;內核精小、效率高,具有高度的模塊化和擴展

10、性;具備文件和目錄管理、設備支持、多任務、網絡支持、圖形窗口以及用戶界面等功能;具有大量的應用程序接口(API);嵌入式應用軟件豐富。Internet的第四階段:以基于Internet為標志的嵌入式系統。這是一個正在迅速發展的階段。嵌入式設備與結合將代表著嵌入式技術的真正未來。6、現階段常用的操作系統有哪些?通過調研,指出幾種常用的嵌入式操作系統的特點是什么?常用在什么場合?(P2829)答:常用的嵌入式RTOS分三大類:商用系統、專用系統和開放系統。商品化的嵌入式實時操作系統,主要有WindRiver的Vxworks和pSOS+,3Com的PalmOS以及Microsoft的WindowsC

11、E等。專用操作系統功能相對較弱,但針對性強,其安全可靠性大都超過普通商用系統,如應用于手機的嵌入式操作系統SymbianOS。開放系統的典型代表是嵌入式Linux和C/OS-H。7、嵌入式操作系統的主要任務有哪些?(P28)答:嵌入式操作系統通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器等。嵌入式操作系統具有通用操作系統的基本特點,如能夠有效管理越來越復雜的系統資源;能夠把硬件虛擬化,使得開發人員從繁忙的驅動程序移植和維護中解脫出來;能夠提供庫函數、驅動程序、工具集以及應用程序。8、嵌入式系統的基本設計過程包括哪幾個階段?每一個階段的主要工作有哪些?

12、(P33)答:以自頂向下的角度來看,系統設計包括五個階段,從系統需求分析開始;第二步是規格說明,在這一步,我們對需設計的系統功能進行更細致地描述,這些描述并不涉及系統的組成;第三步是系統結構設計,在這一階段以大的構件為單位設計系統內部詳細構造,明確軟、硬件功能的劃分;第四步是構件設計,它包括系統程序模塊設計、專用硬件芯片選擇及硬件電路設計;第五步是系統集成,在完成了所有構件設計的基礎上進行系統集成,構造出所需的完整系統。9、需求分析階段細分為哪幾個步驟?每個步驟完成什么工作?(P3435)答:需求分析階段可細分為四個階段:1、需求與規格說明:通過與客戶進行交流,了解用戶的意圖,明確客戶需求,整

13、理成正式的規格說明,這些規格說明里包含了進行系統體系結構設計所需要的足夠信息。2、確認需求:確認這一系列的需求不僅需要理解什么是用戶需要的,而且需要理解他們是如何表達這些需求的。3、簡單的需求表格:將復雜而費時的工作用相對少量的格式清晰、簡單的需求表格來表示,在考慮系統基本特征時可以將這個表格作為檢查表。4、需求的內部一致性:在寫完需求分析以后,應該對它們的內部一致性進行檢查。10、試通過各種渠道調查目前市場上主要有哪些嵌入式系統開發平臺,它們各自有什么特點。答:略第3章ARM體系結構及基于ARM9處理器的嵌入式系統硬件平臺OMAP59121、試比較RISC和CISC體系結構的異同,為什么AR

14、M內核要采用RISC體系結構?(P47)答:ARM體系結構總的設計思路是在不犧牲性能的同時盡可能簡化處理器。同時從體系結構的層面上支持靈活的處理器擴展。這種簡化和開放的思路使ARM處理器采用了很簡單的結構精簡指令集計算機(ReducedInstructionSetComputer,RISC)體系結構來進行實現。傳統的復雜指令集計算機(ComplexInstructionSetComputer,CISC)結構有其固有的缺點,即隨著計算機技術的發展而不斷引入新的復雜的指令集,為支持這些新增的指令,計算機的體系結構會越來越復雜,然而,在CISC指令集的各種指令中,其使用頻率卻相差懸殊,大約有20的指

15、令會被反復使用,占整個程序代碼的80。而余下的80的指令卻不經常使用,在程序設計中只占20,顯然,這種結構是不太合理的。基于以上的不合理性,1979年美國加州大學伯克利分校提出了RISC的概念。RISC并非只是簡單地去減少指令。RISC是一種設計思想,其目標是設計出一套能在高時鐘頻率下單周期執行、簡單而有效的指令集。RISC的設計重點在于降低由硬件執行的指令的復雜度,因為軟件比硬件容易提供更大的靈活性和更高的智能。因此,RICS設計對編譯器有更高的要求;相反,傳統的CISC則更側重于硬件執行指令的功能性,使CISC指令變得更復雜。2、簡述ARM的設計思想及其與單純的RISC定義的不同。(P48

16、49)答:ARM內核并不是一個純粹的RISC體系結構,這是為了使它能夠更好地適應其主要應用領域嵌入式系統。為了使ARM指令集能夠更好地滿足嵌入式應用的需要,ARM指令集和單純的RISC定義有以下幾個方面的不同:?一些特定的指令周期數可變并不是所有的ARM指令都是單周期的。例如:多寄存器裝載/存儲的Load/Store指令的執行周期就是不確定的,必須根據被傳送的寄存器個數來定。如果是訪問連續的存儲器地址,就可以改善性能,因為連續的內存訪問通常比隨機訪問要快;同時,代碼密度也得到了提高,因為在函數的起始和結尾,多個寄存器的傳輸是很常用的操作。?內嵌桶形移位器產生了更為復雜的指令內嵌桶形移位器是一個

17、硬件部件,在一個輸入寄存器被一條指令使用之前,內嵌桶形移位器可以處理該寄存器中的數據。它擴展了許多指令的功能,以此改善了內核性能,提高了代碼密度。?Thumb16位指令集ARM內核增加了一套稱之為Thumb指令的16位指令集,使得內核既能夠執行16位指令,也能夠執行32位指令,從而增強了ARM內核的功能。16位指令與32位的定長指令相比較,代碼密度可以提高約30%。?條件執行只有當某個特定條件滿足時指令才會被執行。這個特性可以減少分支指令的數目,從而改善性能,提高代碼密度。3、ARM體系結構發展過程中,主要有哪些變種,對各變種做簡要介紹。(P4950)答:我們將在ARM體系中增加的某些特定功能

18、稱為ARM體系的某種變種(variant),下面介紹ARM體系的一些變種形式。(1)Thumb指令集(T變種)Thumb指令集是將ARM指令集的一個子集重新編碼而形成的一個指令集。ARM指令長度為32位,Thumb指令長度為16位。這樣,使用Thumb指令集可以得到密度更高的代碼,這對于需要嚴格控制產品成本的設計非A;常有意義。(2)長乘法指令(M變種)M變種增加了兩條用于進行長乘法操作的ARM指令:其中一條指令用于實現32位整數乘以32位整數,生成64位整數的長乘法操作,另一條指令用于實現32位整數乘以32位整數,然后再加上32位整數,生成64位整數的長乘加操作。(3)增強型DSP指令(E變

19、種)E變種包含了一些附加的指令,這些指令用于增強處理器對一些典型DSP算法的處理性能,主要包括:幾條新的實現16位數據乘法和乘加操作的指令,實現飽和的帶符號數的加減法操作的指令。(4)Java加速器Jazelle(J變種)ARM的Jazelle技術將Java的優勢和先進的32位RISC芯片完美地結合在一起。Jazelle技術提供了Java加速功能,可以得到比普通Java虛擬機高得多的性能。與普通的Java虛擬機相比,Jazelle使Java代碼運行速度提高了3倍,而功耗降低了80%。Jazelle技術使得程序員可以在一個單獨的處理器上同時運行Java應用程序、已經建立好的操作系統、中間件以及其

20、他應用程序。與使用協處理器和雙處理器相比,使用單獨的處理器可以在提供高性能的同時,保證低功耗和低成本。(5)ARM媒體功能擴展(SIMD變種)SIMD變種的主要特點是:可以同時進行兩個16位操作數或者4個8位操作數的運算,提供了小數算術運算,用戶可以定義飽和運算的模式,兩套16位操作數的乘加/乘減運算,32位乘以32位的小數MAC,同時8位/16位選擇操作。4、ARM體系結構版本的命名規則有哪些?簡單說明ARM7TDMI的含義。(P50)答:ARM產品通常以ARMxyzTDMIEJF-S形式出現。ARM體系結構的命令規則中這些后綴的具體含義見表3-2。ARM7TDMI的含義即ARM7內核,增加

21、了Thumb指令集(T變種)、JTAG調試器、長乘法指令(M變種)和嵌入式跟蹤宏單元的功能。5、列舉目前常用的ARM微處理器的型號及功能特點。(P5153)答:ARM微處理器目前包括下面幾個系列,以及其它廠商基于ARM體系結構的處理器,除了具有ARM體系結構的共同特點以外,每一個系列的ARM微處理器都有各自的特點和應用領域。?ARM7系列?ARM9系列?ARM9E系列?ARM10E系列?ARM11系列?SecurCore系列?Inter的Xscale?Inter的StrongARM其中,ARM7、ARM9、ARM9E和ARM10E為4個通用處理器系列,每一個系列提供一套相對獨特的性能來滿足不同

22、應用領域的需求。SecurCore系列專門為安全要求較高的應用而設計。6、比較ARM9與ARM7處理器的性能特點,試說明它們有何異同。(P5556)答:ARM7提供了非常好的性能功耗比,它包含了Thumb指令集快速乘法指令和ICE調試技術的內核。ARM9處理器通過全新的設計,采用了更多的晶體管,能夠達到兩倍以上于ARM7處理器的處理能力。ARM7內核是0.9MIPS/MHZ的三級流水線和馮諾伊曼結構,而ARM9內核是5級流水線,提供1.1MIPS/MHZ的哈佛結構。從ARM7到ARM9的性能提升還來源于存儲器讀寫指令一一load和store,以及互鎖技術的應用。7、簡單介紹OMAP5912微處

23、理器的特點和功能。(P5960)答:OMAP5912處理器是OMAP1510系列的一個分支,是由TI應用最為廣泛的TMS320C55XDSP內核與低功耗、高性能的ARM926EJ-S微處理器組成的雙核應用處理器,這兩個內核通過一種專用的處理器內部通信機制相連接。OMAP5912的結構如圖3-10所示。C55x系列可提供對低功耗應用的實時多媒體處理的支持;ARM926可滿足控制和接口方面的處理需要?;陔p核結構,OMAP5912具有極強的運算能力和極低的功耗,一方面,產品性能高、省電;另一方面,同其它OMAP處理器一樣,采用開放式、易于開發的軟件設施,支持廣泛的操作系統,如Linux、Windo

24、ws、WinCE、Nucleus、PalmOS、VxWorks等。可以通過API及用戶熟悉且易于使用的工具優化其應用程序。OMAP5912處理器的目標應用是:?需要密集信號處理的設備?通訊終端?WAN802.11XBlueToothGSM,GPRS,EDGE高級語言處理應用(text-to-speech,speechrecognition)CDMA視頻和圖像處理(MPEG4,JPEG,WindowsMediaVideo,etc.)音頻處理(MPEG-1AudioLayer3MP3,AMR,WMA,AAC,及其它GSMSpeechCodecs)圖形和視頻加速數據處理8、常用的OMAP5912開發

25、工具有哪些?(P6061)答:常用的OMAP591開發工具有:(1)OMAP5912StarterKit(OSK)Omap5912基本板,提供了完成設計與測試過程所需的所有軟件,這包括一系列主板專用庫、芯片專用庫以及一套針對OMAP5912Linux內核的Linux開發工具。(2)MU-Q-VGALCDModuleforOMAP5912OSK的LCD擴充套件,提供了LCD觸摸屏。(3)AcceleratorProgramforOMAP5912針對omap5912OSK的Linux和WinCE4.2BSP和驅動程序軟件包,方便易用,支持很多設備和擴展模塊,如LCD、USBClient&Host、

26、鍵盤、觸摸屏、以太網、串口等設備。(4)RAPIDDEVELOPMENTKIT(RDK)omap5912OSK無線模塊擴充套件。(5)PortableDataTerminalReferenceDesign基于omap5912的便攜式數據終端(PDT)參考設計,一個完整的多媒體智能手機設計案例。相關應用包括導航、游戲、學習輔助、通話、娛樂等等。第4章ARM微處理器的編程模型與指令系統1、ARM微處理器有哪幾種運行模式?其中哪些是特權模式,哪些又是異常模式?(P64)答:ARM微處理器支持7種運行模式,分別為:用戶模式;快速中斷模式;外部中斷模式;管理模式;數據訪問終止模式;系統模式;未定義指令中

27、止模式。除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或特權模式(PrivilegedModes);而除去用戶模式和系統模式以外的5種又稱為異常模式(ExceptionModes),常用于處理中斷或異常。2、ARM體系結構的存儲器格式有哪幾種?(P6465)答:ARM體系結構可以用兩種方法存儲字數據,稱之為大端格式(big-endian)和小端格式(little-endian)。大端格式:字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中;小端格式:低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。3、ARM狀態下和Thumb狀態下寄存器的組織有何不同?(P697

28、0)答:Thumb狀態下的寄存器集是ARM狀態下寄存器集的一個子集,程序可以直接訪問8個通用寄存器(R7R0)、程序計數器(PC)、堆棧指針(SP)、連接寄存器(LR)和CPSR。同時,在每一種特權模式下都有一組SP、LR和SPSR。在Thumb狀態下,高位寄存器R8R15并不是標準寄存器集的一部分,但可使用匯編語言程序受限制的訪問這些寄存器,將其用作快速的暫存器。4、簡述CPSR各狀態位的作用,并說明如何對其進行操作,以改變各狀態位。(P6768)答:CPSR可在任何運行模式下被訪問,它包含條件碼標志位、中斷禁止位、當前處理器模式標志位,以及其他一些相關的控制和狀態位。條件碼標志位:?N(N

29、egative)當用兩個補碼表示的帶符號數進行運算時,N=1表示運算的結果為負數;N=0表示運算的結果為正數或零;?Z(Zero)Z=1表示運算的結果為零;Z=0表示運算的結果為非零;?C(Carry)可以有4種方法設置C的值:加法運算(包括比較指令CMN):當運算結果產生了進位時(無符號數溢出),C=1,否則C=0。減法運算(包括比較指令CMP):當運算時產生了借位(無符號數溢出),C=0,否則C=1。對于包含移位操作的非加/減運算指令,C為移出值的最后一位。對于其他的非加/減運算指令,C的值通常不改變。?V(Overflow)可以有2種方法設置V的值:對于加/減法運算指令,當操作數和運算結

30、果為二進制的補碼表示的帶符號數時,V=1表示符號位溢出。對于其他的非加/減運算指令,V的值通常不改變。CPSR的低8位(包括I、F、T和M4:0)稱為控制位,當發生異常時這些位可以被改變。如果處理器運行特權模式,這些位也可以由程序修改。狀態寄存器(PSR)中的其余位為保留位,當改變PSR中的條件碼標志位或者控制位時,保留位不要被改變,在程序中也不要使用保留位來存儲數據。保留位將用于ARM版本的擴展。5、ARM體系結構所支持的異常類型有哪些?具體描述各類異常,在應用程序中應該如何處理?(P7071)答:ARM體系結構所支持的異常類型有復位、未定義指令、軟件中斷、指令預取中止、數據中止、外部中斷請

31、求、快速中斷請求。具體地:?當處理器的復位電平有效時,產生復位異常,程序跳轉到復位異常處理程序處執行;?當ARM處理器或協處理器遇到不能處理的指令時,產生未定義指令異常。可使用該異常機制進行軟件仿真;?軟件中斷異常由執行SWI指令產生,可用于用戶模式下的程序調用特權操作指令??墒褂迷摦惓C制實現系統功能調用;?若處理器預取指令的地址不存在,或該地址不允許當前指令訪問,存儲器會向處理器發出中止信號,但當預取的指令被執行時,才會產生指令預取中止異常;?若處理器數據訪問指令的地址不存在,或該地址不允許當前指令訪問時,產生數據中止異常;?當處理器的外部中斷請求引腳有效,且CPSR中的I位為0時,產生I

32、RQ異常。系統的外設可通過該異常請求中斷服務;?當處理器的快速中斷請求引腳有效,且CPSR中的F位為0時,產生FIQ異常。6、ARM指令有哪幾種尋址方式?試分別敘述其各自的特點并舉例說明。(P77)答:ARM指令系統支持的基本尋址方式有7種:立即數尋址、寄存器尋址、寄存器間接尋址、基址變址尋址、多寄存器尋址、堆棧尋址、相對尋址。他們的特點分別是:ADDR0,R1,立即數尋址:操作數本身就在指令中給出。如:ADDR0,R0,#0 x3f寄存器尋址:指令中地址碼給出的是寄存器編號。如:ADDR0,R1,R2寄存器間接尋址:寄存器中的值作為操作數的地址,操作數本身存放在存儲器中。如:R2從而得到一個

33、操作數的有效地址,用基址變址尋址:將寄存器的內容與指令中給出的地址偏移量相加,相對尋址:以程序計數器操作數的有效地址。如:PC的當前值為基地址,指令中的地址標號作為偏移量,將兩者相加之后得到BLNEXT相對尋址:以程序計數器操作數的有效地址。如:PC的當前值為基地址,指令中的地址標號作為偏移量,將兩者相加之后得到BLNEXTLDRR0,R1,#4LDMIAR0,R1,R2,R3,R4STMFDSP!R1-R7,LR于訪問基址附近的存儲器單元。如:多寄存器尋址:塊拷貝尋址。如:堆棧尋址:用堆棧作為地址。如:7、簡述ARM指令集的分類。(P81)答:ARM指令集總體分為六大類:數據處理指令、程序狀

34、態寄存器訪問指令、Load/Store指令、跳轉指令(轉移指令)、異常中斷指令、協處理器指令。8、假設R0的內容為0 x8000,寄存器R1、R2內容分別為0 x01和0 x10,存儲器內容為空。執行下述指令后,說明PC如何變化?存儲器及寄存器的內容如何變化?STMIBR0!,R1,R2LDMIAR0!,R1,R2答:略。9、如何從ARM指令集跳轉到Thumb指令集?ARM指令集中的跳轉指令與匯編語言中的跳轉指令有什么區別?(P96)答:進入Thumb指令模式有2種方法:一種是執行一條交換轉移指令BX,將指令中的目標地址寄存器的最低位置1并將其他位的值放入程序計數器PC,則可進入Thumb指令

35、。另一種方法是利用異常返回,也可把微處理器從ARM模式轉換為Thumb模式。在這個過程中,ARM提供了2種機制:當返回地址保存在當前異常模式的R14(LR)時,采用傳送指令;當返回地址保存在堆棧時,使用多寄存器Load/Store指令。ARM指令集中的跳轉指令與匯編語言中的跳轉指令的區別是ARM指令集中的跳轉指令可以直接向程序計數器PC寫入跳轉地址值。10、ARM指令集支持哪幾種協處理器指令?試分別簡述并列舉其特點。(P93)答:ARM協處理器指令包括以下5條,其特點分別是:?CDP協處理器數操作指令:用于ARM處理器通知ARM協處理器執行特定的操作,若協處理器不能成功完成特定的操作,則產生未

36、定義指令異常。?LDC協處理器數據加載指令:用于將源寄存器所指向的存儲器中的字數據傳送到目的寄存器中,若協處理器不能成功完成傳送操作,則產生未定義指令異常。?STC協處理器數據存儲指令:用于將源寄存器中的字數據傳送到目的寄存器所指向的存儲器中,若協處理器不能成功完成傳送操作,則產生未定義指令異常。?MCR處理器寄存器到協處理器寄存器的數據傳送指令:用于將ARM處理器寄存器中的數據傳送到協處理器寄存器中,若協處理器不能成功完成操作,則產生未定義指令異常。?MRC協處理器寄存器到ARM處理器寄存器的數據傳送指令:用于將協處理器寄存器中的數據傳送到ARM處理器寄存器中,若協處理器不能成功完成操作,則

37、產生未定義指令異常。第5章嵌入式操作系統1、嵌入式操作系統進程的定義是什么?(P101)答:進程是可并發執行的、具有獨立功能的程序在一個數據集合上的運行過程,是操作系統進行資源分配和保護的基本單位。2、一個比較完善的操作系統應當包括哪幾個模塊?(P100)答:一個比較完善的操作系統應當包括內存管理、進程管理、文件管理以及為了充分利用各種資源而設計的調度機制等四個模塊。3、說明嵌入式操作系統進程調度的幾種策略,并說出不同之處和優缺點。(P105108)答:實時調度方法大致可以劃分為以下幾類:離線和在線調度:對于離線調度算法,運行過程中使用的調度信息在系統運行之前就確定了。離線調度算法具有確定性,

38、但缺乏靈活性,適用于那些特性能夠預先確定,且不容易發生變化的應用。在線調度算法的調度信息則在系統運行過程中動態獲得,在線調度算法在形成最佳調度決策上具有較大的靈活性。搶占和非搶占調度:在搶占式調度算法中,正在運行的任務可能被其他任務所打斷,搶占式調度算法,使關鍵任務能夠打斷非關鍵任務的執行,確保關鍵任務的截止時間能夠得到滿足,搶占式調度算法要更復雜些,且需要更多的資源,并可能在使用不當的情況下會造成低優先級任務出現長時間得不到執行的情況。非搶占式調度常用于那些任務需要按照預先確定的順序進行執行,且只有當任務主動放棄CPU資源后,其他任務才能得到執行的情況。靜態和動態調度:在靜態調度算法中,任務

39、的優先級需要在系統運行前進行確定,且在運行過程中不會發生變化。在動態調度算法中,任務的優先級可根據需要進行改變,也可能隨著時間按照一定的策略自動發生變化。答:嵌入式系統中進程間通信主要采用兩種形式:共享內存和消息傳遞。二者在邏輯上沒有什么區別,進程通信采用哪種方式,主要依賴實際需要。進程間通信也可以采用信號和管道的方式。5、簡述嵌入式操作系統的中斷管理和時鐘管理模式。(P117-118)答:在嵌入式操作系統中,中斷前導和中斷后續通常由內核的中斷接管程序來實現。硬件中斷發生后,中斷接管程序獲得控制權,先由中斷接管程序進行處理,然后才將控制權交給相應的用戶中斷服務程序。用戶中斷服務程序執行完成后,

40、又回到中斷接管程序。實時內核通常還提供如下中斷管理功能:掛接中斷服務程序、獲得中斷服務程序入口地址、獲取中斷嵌套層次、開中斷、關中斷。在實時系統中,時鐘具有非常重要的作用。通過時鐘,應用和內核能夠查詢當前時間、定時地完成各項工作、報警、有限的等待和睡眠等,是處理具有時間約束特性應用必不可少的內容。因此,實時內核都需要提供對時鐘進行管理的機制。時鐘管理一般具有以下功能:維持日歷時間,任務有限等待的計時,軟定時器的定時管理和維持系統時間片輪轉調度。6、嵌入式操作系統中的內存管理功能有哪些?并做簡要闡述。(P120)答:嵌入式操作系統中的內存管理功能有:1)虛擬內存空間:操作系統采用虛擬內存功能使系

41、統顯得它有比實際大得多的內存空間,虛擬內存可以比系統中的物理內存大許多倍。2)內存保護:系統中每個進程有自己的虛擬地址空間,這些虛擬地址空間相互之間完全分離。因此運行一個應用的進程不會影響其他的進程。同樣,硬件的虛擬內存機制允許內存區域被寫保護,這樣保護了代碼和數據不被惡意應用重寫。3)內存映射:用來把映像和數據文件映像到一個進程的地址空間。在內存映射中,文件的內容被直接鏈接到進程的虛擬地址空間。4)公平物理內存分配:內存管理子系統分配給系統中運行的每個進程公平的一份系統物理內存。5)共享虛擬內存:允許進程擁有分隔的虛擬地址空間,但有時還需要進程共享內存。如進程間通信需要共享內存。7、C/OS

42、-II的主要特點有哪些?簡要說明之。(P121)答:C/OS-II的主要特點有:1)公開源代碼2)可移植性(Portable)絕大部分C/OS-II的源碼是用移植性很強的ANSIC寫的。和微處理器硬件相關的那部分是用匯編語言寫的。匯編語言寫的部分已經壓到最低限度,使得C/OS-II便于移植到其他微處理器上。C/OS-II可以在絕大多數8位、16位、32位以至64位微處理器、微控制器、數字信號處理器(DSP)上運行。3)可固化(Romable)C/OS-II是為嵌入式應用而設計的,這就意味著,只要讀者有固化手段(C編譯、連接、下載和固化),C/OS-II可以嵌入到讀者的產品中成為產品的一部分。4

43、)可裁剪(Scalable)可以只使用C/OS-II中應用程序需要的那些系統服務。也就是說某產品可以只使用很少幾個C/OS-II調用,而另一個產品則使用了幾乎所有C/OS-II的功能,這樣可以減少產品中的C/OS-II所需的存儲器空間(RAM和ROM)。這種可剪裁性是靠條件編譯實現的。5)占先式(Preemptive)C/OS-II是完全占先式的實時內核,C/OS-II總是運行就緒條件下優先級最高的任務。6)多任務C/OS-II可以管理64個任務,目前這一版本保留8個給系統。留給用戶的應用程序最多可以有56個任務。賦予每個任務的優先級必須是不相同的,這意味著C/OS-II不支持時間片輪轉調度法

44、(常用的非搶占式調度算法)。7)可確定性全部C/OS-II的函數調用與服務的執行時間具有可確定性。8)任務棧每個任務有自己單獨的棧,C/OS-II允許每個任務有不同的??臻g,以便壓低應用程序對RAM的需求。9)系統服務C/OS-II提供很多系統服務,例如郵箱、消息隊列、信號量、塊大小固定的內存的申請與釋放、時間相關函數等。10)中斷管理中斷可以使正在執行的任務暫時掛起,如果優先級更高的任務被該中斷喚醒,則高優先級的任務在中斷嵌套全部退出后立即執行,中斷嵌套層數可達255層。8、常用的linux操作系統采用怎樣的內存管理機制和調度機制?(P130)答:Linux內存管理程序通過映射機制把用戶程序

45、的邏輯地址映射到物理地址,在用戶程序運行時,如果發現程序中要用的虛擬地址沒有對應的物理內存時,就發出請頁要求。如果有空閑的內存可供分配,就請求分配內存,并把正在使用的物理頁記錄在頁緩存中;如果沒有足夠的內存可供分配,那么就調用交換機制,騰出一部分內存。為了支持虛擬存儲器的管理,Linux系統采用分頁(paging)的方式來載入進程。所謂分頁即是把實際的存儲器分割為相同大小的段,例如每個段1024個字節,這樣1024個字節大小的段稱為一個頁面(page)。Linux屬于典型的多用戶多任務操作系統。它采用分時技術,進程交替執行,實現所謂的“假并行”。它主要有三種調度算法,一個是基于優先級的循環執行

46、法,二是FIFO算法,三是傳統的基于優先級的循環執行法。前兩種調度算法都是軟實時的,而第三種則并非實時的。第6章嵌入式Linux開發環境及其在ARM上的移植1、試述嵌入式Linux系統移植的一般過程。(P141142)答:嵌入式系統的開發和應用層軟件的開發不同,有其自身的特點,尤其在開發流程上有很大的不同。從大體上講,Linux系統移植一般分為下面幾步:(1)開發環境的搭建嵌入式系統移植過程中,目標機和宿主機往往在軟硬件環境上有很大的不同,開發時常常在功能強大的宿主機上進行,這就形成了交叉開發環境的搭建與選擇問題。同時由于宿主機和目標機在體系結構等方面的差異,編譯時也需要采用交叉編譯工具對目標

47、代碼進行編譯,這樣,才能使生成的可執行文件在目標機上能夠執行。(2)系統引導在微處理器第一次啟動的時候,會從預定的、固定的地址空間開始執行指令。一般的嵌入式系統中并沒有PC機上的BIOS,而是由一種稱為Bootloader的系統引導程序來完成上述功能,啟動代碼完全依賴于硬件,需要在系統移植中完成。(3)內核引導系統移植的開發人員還應當完成Bootloader和內核的銜接部分的移植以及I/O映射、存儲器映射等與目標硬件平臺相關的板級初始化和CPU自身初始化的移植工作。(4)設備驅動程序Linux內核源代碼樹中的相當大部分是各類驅動程序,在實際的開發過程中,也需要對相應的設備進行驅動,如LCD、網

48、卡、觸摸屏等等進行移植和編寫。由于一般在Linux源碼和相關社區中都擁有相當豐富的設備驅動源碼資源,因此,設備驅動的任務主要是相近源碼的移植修改工作。(5)文件系統在嵌入式Linux內核啟動的最后階段,將進行文件系統的加載。不同的嵌入式目標平臺有不同的應用需求,需要根據具體情況實現對文件系統的移植工作。目前,常用的嵌入式文件系統有JFFS2、Cramfs、Romfs等。2、Linux系統中常用的交叉編譯工具有哪些?簡述它們的功能和基本用法。(P143153)答:(1)GNUbinutils是一套用來構造和使用二進制所需的工具集。建立嵌入式交叉編譯環境,Binutils工具包是必不可少的,而且B

49、inutils與GNU的C編譯器gcc是緊密相集成的,沒有binutils,gcc也不能正常工作。GNUbinutils是一組開發工具,包括連接器、匯編器和其他用于目標文件和檔案的工具。GUNcc(GUNCCompiler,簡稱gcc)是GUN項目的C編譯器套件,能夠編譯用C、C+、ObjectiveC編寫的程序。(3)make工具通過一個稱為makefile的文件來完成并自動維護編譯工作。(4)glibc是提供系統調用和基本函數的C庫,比如open,malloc,printf等等。所有動態連接的程序都要用到它。它是編譯Linux系統程序很重要的組成部分。(5)gdb是一個用來調試C和C+程序

50、的調試器(Debugger),它能使用戶在程序運行時觀察程序的內部結構和內存的使用情況。gdb的功能主要是監視程序中變量的值、設置斷點以使程序在指定的代碼行上停止執行、支持單步執行等。3、如何分步編譯和安裝交叉編譯環境所需要的庫和源代碼?試著自己構建嵌入式Linux系統交叉編譯環境。(P156160)答:略4、5題應在第九章,此處為作者疏漏(見第九章習題)6、Linux操作系統的移植工作主要分為哪幾個方面?其中內核功能模塊的裁剪主要有哪幾種方法?(P162164)答:對Linux操作系統的移植工作主要分為兩個方面,一方面是針對硬件特點對源代碼的修改,比如內核的啟動部分、存儲設備的大小、具體的驅

51、動問題等等;另一方面是功能模塊的裁剪,主要是對內核功能的配置,包括支持的文件類型、外設模塊等等??傮w上講,針對硬件的修改有兩種方法:(1)對一種全新的硬件平臺開展移植工作時,需采用“自底向上”的設計方法從頭設計,即從硬件的需求考慮逐步地采用分析、設計、編碼、測試。(2)大多數情況下,是在前人工作的基礎上修改己有的代碼。Linux己經可以在多種體系結構中運行,可以參考相近的體系結構的代碼,修改與目標硬件平臺不同的部分即可。嵌入式Linux內核功能模塊的裁剪主要有三種方法:(1)使用Linux自身的配置工具,編譯定制內核。(2)修改內核源代碼,進行內核裁剪。(3)基于系統調用關系,進行內核裁剪7、

52、如何使用Linux自身的配置工具編譯定制內核?(P169)答:配置完內核之后,內核仍然以源代碼的方式存在,不能直接下載到嵌入式系統中運行,因此,必須對內核進行編譯,生成最終在目標板上運行的可執行代碼。編譯內核分以下三步進行:執行以下命令,正確設置編譯內核所需的附屬文件,進行依賴性編譯:#makedep執行以下命令,清除以前構造內核時產生的所有目標文件、模塊文件和一些臨時文件:#makeclean(3)執行以下命令,生成新的可執行內核映像文件:#makezImage完成上述命令之后,就會在/arch/arm/boot/下生成一個自己定制的內核映像文件了,系統文件名可以任意取,如zImage.ro

53、m。8、什么是文件系統?常用的嵌入式文件系統有哪些?(P169170)答:文件系統是指在一個物理設備上的任何文件組織和目錄,它構成了Linux系統上所有數據的基礎,Linux程序、庫、系統文件和用戶文件都駐留其中,因此,它是系統中龐大復雜且又是最為基本和重要的資源。通常對于一個嵌入式系統,僅包含內核是不夠的,還必須有文件系統的支持。Linux支持的文件系統有很多種,比如ext2(LinuxExtended-2)、minix文件系統、msdos(最初的FAT文件系統)、ntfs(WindowsNT文件系統)、nfs(網絡文件系統)、hpft(OS/2高性能文件系統)、ncpfs(NovellNe

54、tWare文件系統)、affsAmiga(快速文件系統)等等。9、如何構建一個嵌入式Linux文件系統?(P172)答:要構建一個小型的Linux文件系統,就需要決定文件系統中哪些部分要保留,哪些部分可以裁減。首先應該保留那些保證系統運行的最基本的文件和目錄,再通過對系統功能的分析,決定哪些模塊是可以裁減的。一個最小的文件系統必須包括以下的內容:程序函數庫、庫函數文件的鏈接、/bin/sh(shell)、最基本的設備文件。但是,這些文件目錄組成的最基本的文件系統只能運行shell,不能完成其它任何的應用程序。要完成一些基本的功能還需要以下的一些文件:init程序、系統啟動設置、基本的應用程序、

55、設備文件、顯示系統信息的虛擬文件系統、其它文件系統掛載目錄、系統啟動時執行的腳本、壓縮工具等。第7章linux下設備驅動程序的開發設計1、設備驅動程序在大多數嵌入式系統中起著重要作用,因為它們提供了應用程序和設備之間的軟件層。2、設備驅動程序通常包含中斷處理程序和設備服務子程序兩部分。3、嵌入式系統中A、C、D等都屬于字符設備,典型的塊設備有B、E等。A.按鍵B.硬盤C.觸摸屏D.手寫板E.CD-ROM4、系統中不同的設備有_A_主設備號,主設備號_A設備使用_A_驅動程序。A.相同的B.不同的5、CS8900A有兩種工作模式:MEMORY模式和10模式。6、如何理解設備管理的“設備無關性”概

56、念?(P174)答:在Linux/uclinux的框架結構中,和設備相關的處理可以分為兩個層次一一文件系統層和設備驅動層。設備驅動層屏蔽具體設備的細節,文件系統層則向用戶提供一組統一的、規范的用戶接口。在嵌入式操作系統下的設備驅動程序主要是控制和管理下層物理設備的硬件控制器,同時為上層應用提供統一的、與設備無關的系統調用服務,這種設備管理方法稱為“設備無關性”。7、按模塊化設計,一個典型的Linux設備驅動程序應包含哪幾部分?在Linux操作系統中如何實現一個驅動程序的開發?(P177)答:一個典型的Linux設備驅動程序應包含以下幾部分代碼:驅動程序模塊的注冊與注銷函數、設備的打開、關閉、讀

57、、寫及需要的其他操作函數、設備的中斷服務程序。在Linux操作系統中實現一個驅動程序的開發,必須按照如下步驟進行:設備或模塊的初始化;實現該文件操作接口;注冊了設備中斷;編寫中斷服務程序;文件讀寫操作。8、Linux中的設備可以分為哪幾類,各有何特點?(P177179)答:Linux中的設備可以分為三類:字符設備、塊設備和網絡設備。各自的特點是:字符設備是指數據處理以字節為單位按順序進行的設備,它沒有緩沖區,不支持隨機讀寫。在對字符設備發出讀/寫請求時,實際的硬件I/O一般就緊接著發生了。塊設備是指那些在輸入/輸出時數據處理以塊為單位的設備,它一般都采用了緩存技術,支持數據的隨機讀寫。網絡設備

58、面向的上一層不是文件系統層而是網絡協議層,設備節點只有在系統正確初始化網絡控制器之后才能建立。內核和網絡設備驅動程序間的通信,與字符設備驅動程序、塊設備驅動程序與內核間的通信也是完全不一樣的。在Linux中,整個網絡接口驅動程序的框架可分為四層,從上到下分別為協議接口層、網絡設備接口層、提供實際功能的設備驅動功能層、以及網絡設備和網絡媒介層。9、如何理解驅動程序的設備文件接口?(P182)答:略。10、詳細描述在Linux操作系統下CS8900A網絡芯片驅動程序的實現。(P194)答:Linux操作系統下CS8900A網絡芯片驅動程序的實現按照如下步驟進行:(1)初始化CS8900A芯片對于C

59、S8900A芯片,初始化函數是通過cs89x0_probe()和cs89x0_probe1()函數來實現。intcs89x0_probe(structdevice*dev)intbase_addr=CS8900_BASE;returncs89x0_probe1(dev,base_addr);其中CS8900_BASE是I/O被映射到的基地址。staticintcs89x0_probel(structdevice*dev,intioaddr)irq2dev_map0=dev;/*初始化寄存器,建立片選和芯片工作方式*/*(volatileunsignedchar*)0 xfffff42b|=0

60、x01;/*output/sleep*/*(volatileunsignedshort*)0 xfffff428|=0 x0101;/*notsleeping*/*(volatileunsignedchar*)0 xfffff42b&=0 x02;/*inputirq5*/*(volatileunsignedshort*)0 xfffff428&=0 x0202;/*irq5fcnon*/*(volatileunsignedshort*)0 xfffff102=0 x8000;/*0 x04000000*/*(volatileunsignedshort*)0 xfffff112=0 x01e1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論