嵌入式系統(tǒng)原理復(fù)習(xí)題及答案_第1頁
嵌入式系統(tǒng)原理復(fù)習(xí)題及答案_第2頁
嵌入式系統(tǒng)原理復(fù)習(xí)題及答案_第3頁
嵌入式系統(tǒng)原理復(fù)習(xí)題及答案_第4頁
嵌入式系統(tǒng)原理復(fù)習(xí)題及答案_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、嵌入式系統(tǒng)原理復(fù)習(xí)題1、 嵌入式系統(tǒng)的概念廣義上講,凡是帶有微處理器的專用軟硬件系統(tǒng)都可稱為嵌入式系統(tǒng)。如各類單片機(jī)和DSP系統(tǒng)。這些系統(tǒng)在完成較為單一的專業(yè)功能時(shí)具有簡潔高效的特點(diǎn)。但由于他們沒有操作系統(tǒng),管理系統(tǒng)硬件和軟件的能力有限,在實(shí)現(xiàn)復(fù)雜多任務(wù)功能時(shí),往往困難重重,甚至無法實(shí)現(xiàn)。從狹義上講,我們更加強(qiáng)調(diào)那些使用嵌入式微處理器構(gòu)成獨(dú)立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場合的嵌入式系統(tǒng)。本書所謂的嵌入式系統(tǒng)是指狹義上的嵌入式系統(tǒng)。根據(jù)IEEE(國際電氣和電子工程師協(xié)會)的定義:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置”(原文為devices used to c

2、ontrol, monitor, or assist the operation of equipment, machinery or plants)。嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。2、 嵌入式系統(tǒng)的特點(diǎn)1) 系統(tǒng)內(nèi)核小2) 專用性強(qiáng)3) 運(yùn)行環(huán)境差異大4) 可靠性要求高5) 系統(tǒng)精簡和高實(shí)時(shí)性操作系統(tǒng)6) 具有固化在非易失性存儲器中的代碼7) 無自舉開發(fā)能力3、 嵌入式系統(tǒng)的硬件平臺由哪些部分組成嵌入式系統(tǒng)的微硬件包括嵌入式核心芯片、存儲器系統(tǒng)及外部接口4、 什么是分時(shí)系統(tǒng)、軟實(shí)時(shí)系統(tǒng)、硬實(shí)時(shí)系統(tǒng),它們的

3、區(qū)別是什么?分時(shí)操作系統(tǒng)按照相等的時(shí)間片調(diào)度進(jìn)程輪流運(yùn)行,分時(shí)操作系統(tǒng)由調(diào)度程序自動計(jì)算進(jìn)程的優(yōu)先級,而不是由用戶控制進(jìn)程的優(yōu)先級。這樣的系統(tǒng)無法實(shí)時(shí)響應(yīng)外部異步事件。硬實(shí)時(shí)系統(tǒng)有一個(gè)剛性的、不可改變的時(shí)間限制,它不允許任何超出時(shí)限的錯(cuò)誤。超時(shí)錯(cuò)誤會帶來損害甚至導(dǎo)致系統(tǒng)失敗、或者導(dǎo)致系統(tǒng)不能實(shí)現(xiàn)它的預(yù)期目標(biāo)。 軟實(shí)時(shí)系統(tǒng)的時(shí)限是一個(gè)柔性靈活的,它可以容忍偶然的超時(shí)錯(cuò)誤。失敗造成的后果并不嚴(yán)重,僅僅是輕微的降低了系統(tǒng)的吞吐量。5、 嵌入式系統(tǒng)的分類按嵌入式微處理器的位數(shù)分類a) 4位b) 8位c) 16位d) 32位e) 64位按軟件實(shí)時(shí)性需求分類a) 非實(shí)時(shí)系統(tǒng)b) 軟實(shí)時(shí)系統(tǒng)c) 硬實(shí)時(shí)系統(tǒng)

4、按嵌入系統(tǒng)的復(fù)雜程度分類b) 小型嵌入式系統(tǒng)c) 中型嵌入式系統(tǒng)d) 復(fù)雜嵌入式系統(tǒng)6、 ARM9處理器的工作狀態(tài)有哪些ARM狀態(tài),Thumb狀態(tài) 7、 ARM9處理器的內(nèi)部寄存器結(jié)構(gòu)ARM處理器總共有37個(gè)寄存器,可以分為以下兩類寄存器 :1) 31個(gè)通用寄存器 :R0R15;R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_frq-R14_frq。 2)6個(gè)狀態(tài)寄存器 CPSR;SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq 。8、 ARM9處理器的工作模式有哪些用

5、戶,F(xiàn)IQ,IRQ,SVC,中止,未定義,系統(tǒng)9、 CPSR寄存器各數(shù)據(jù)位的作用CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其它狀態(tài)和控制信息。10、 如何實(shí)現(xiàn)ARM狀態(tài)和Thumb狀態(tài)的切換ARM處理器在兩種工作狀態(tài)之間切換方法:進(jìn)入Thumb狀態(tài):當(dāng)操作數(shù)寄存器Rm的狀態(tài)位bit0為1時(shí),執(zhí)行BX Rm指令進(jìn)入Thumb狀態(tài)。如果處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ,F(xiàn)IQ,Undef,Abort和SWI)返回時(shí),自動切換到Thumb狀態(tài)。進(jìn)入ARM狀態(tài):當(dāng)操作數(shù)寄存器Rm的狀態(tài)位bit0為0時(shí),執(zhí)行BX Rm指令進(jìn)入ARM狀態(tài)。如果處理器進(jìn)行異常處理(IRQ,F(xiàn)

6、IQ,Undef,Abort和SWI),在此情況下,把PC放入異常模式鏈接寄存器LR中,從異常向量地址開始執(zhí)行也可以進(jìn)入ARM狀態(tài)。 11、 ARM為何集成了32位的ARM指令集和16位的Thumb指令集ARM的RISC體系結(jié)構(gòu)的發(fā)展中已經(jīng)提供了低功耗、小體積、高性能的方案。而為了解決代碼長度的問題,ARM體系結(jié)構(gòu)又增加了變種,開發(fā)了一種新的指令體系,這就是Thumb指令集。它有從標(biāo)準(zhǔn)32位ARM指令集抽出來的36條指令格式,可以重新編成16位的操作碼。這能帶來很高的代碼密度。12、 ARM指令尋址方式與ARM指令集中各類常用指令的用法(內(nèi)容太多,第三章全部內(nèi)容?。?3、 什么是交叉編譯,為什

7、么要進(jìn)行交叉編譯在一種計(jì)算機(jī)環(huán)境中運(yùn)行的編譯程序,能編譯出在另外一種環(huán)境下運(yùn)行的代碼,這個(gè)編譯過程就叫交叉編譯。原因:有時(shí)是因?yàn)槟康钠脚_上不允許或不能夠安裝我們所需要的編譯器,而我們又需要這個(gè)編譯器的某些特征;有時(shí)是因?yàn)槟康钠脚_上的資源貧乏,無法運(yùn)行我們所需要編譯器;有時(shí)又是因?yàn)槟康钠脚_還沒有建立,連操作系統(tǒng)都沒有,根本談不上運(yùn)行什么編譯器。14、 簡述構(gòu)建交叉編譯鏈的主要步驟1) 獲取相關(guān)的源代碼和補(bǔ)丁包2) 它們都存放在src目錄下3) 安裝binutils4) 安裝Linux header5) 安裝Glibc 頭文件6) 編譯GCC Stage17) 使用剛編譯出的GCC編譯Glibc8

8、) 重新編譯GCC,即GCCStage215、 簡述嵌入式系統(tǒng)的開發(fā)流程主要包括系統(tǒng)需求分析(要求有嚴(yán)格規(guī)范的技術(shù)要求)、體系結(jié)構(gòu)設(shè)計(jì)、軟硬件及機(jī)械系統(tǒng)設(shè)計(jì)、系統(tǒng)集成、系統(tǒng)測試,最終得到最終產(chǎn)品。16、 嵌入式系統(tǒng)與通用計(jì)算機(jī)的區(qū)別一是能力不同。通用計(jì)算機(jī)系統(tǒng)通常什么都能做,我們買個(gè)電腦,上網(wǎng)、聽音樂、看電影、做軟件都不在話下。嵌入式系統(tǒng)一般面向某一特定應(yīng)用,不是什么都能干。例如鼠標(biāo)里的嵌入式系統(tǒng)任務(wù)只是監(jiān)視鼠標(biāo)的按鍵,并向主CPU發(fā)送鍵碼,數(shù)碼相機(jī)里面的嵌入式系統(tǒng)主要進(jìn)行圖像處理,讓它們什么都能做,有點(diǎn)難也沒必要。二是大小不同。通用計(jì)算機(jī)系統(tǒng)通常對個(gè)頭沒有要求,臺式機(jī)占據(jù)一張桌子,大型服務(wù)器

9、可以占據(jù)一個(gè)房間,筆記本放到膝蓋上就行。嵌入式系統(tǒng)由于要嵌入到它服務(wù)的主體里面,一般都比較小,而且要與服務(wù)的主體有機(jī)結(jié)合成為一個(gè)整體。三是實(shí)時(shí)性要求不同。實(shí)時(shí)性指完成任務(wù)的時(shí)間要求。通用計(jì)算機(jī)系統(tǒng)一般實(shí)時(shí)性要求不高,但嵌入式系統(tǒng)往往實(shí)時(shí)性要求很高。比如汽車?yán)锏那度胧较到y(tǒng),如果發(fā)動機(jī)過熱,必須要求在規(guī)定的時(shí)間內(nèi)作出反應(yīng),如果像PC那樣不緊不慢的,后果可想而知。四是可靠性要求不同。電腦死機(jī)估計(jì)每個(gè)人都經(jīng)常遇到,死機(jī)了怎么辦?重啟就是。但是如果火箭發(fā)射時(shí)里面的嵌入式系統(tǒng)死機(jī)了.,五是二次開發(fā)能力不同。我們買來個(gè)電腦,通常也就裝了個(gè)操作系統(tǒng),其它的程序我們需要什么就可以裝什么,我們甚至可以打開機(jī)箱,加

10、幾條內(nèi)存。但嵌入式系統(tǒng)通常買來后就那樣了,軟件和硬件都不變了。數(shù)碼相機(jī)相信多數(shù)人沒有打開過,也沒有再安裝什么新軟件。倒是智能手機(jī)可以裝一些軟件,但能力有限。六是數(shù)量不同。嵌入式系統(tǒng)的數(shù)量遠(yuǎn)大于通用計(jì)算機(jī)系統(tǒng)的數(shù)量。因?yàn)橐粋€(gè)通用計(jì)算系統(tǒng)中至少包括數(shù)十個(gè)嵌入式系統(tǒng)。更別說其它的嵌入式系統(tǒng)了。17、 常見的嵌入式操作系統(tǒng)有哪些,各自有什么特點(diǎn)1) VxWorks:性能優(yōu)越,開發(fā)調(diào)試便利,強(qiáng)大的技術(shù)支持,但是昂貴的價(jià)格讓開發(fā)者望而卻步。2) Windows CE:精簡的模塊化操作系統(tǒng)多硬件平臺支持支持有線和無線的網(wǎng)絡(luò)連接穩(wěn)健的實(shí)時(shí)性支持豐富的多媒體和多語言支持強(qiáng)大的開發(fā)工具3) Palm OS:3Co

11、m公司產(chǎn)品,專門為掌上電腦開發(fā)的32位的嵌入式操作系統(tǒng)占有非常小的內(nèi)存,基于Palm OS編寫的應(yīng)用程序占用的空間也非常?。ㄍǔV挥袔资甂B)Palm提供了串行通信接口和紅外線傳輸接口,利用它可以方便地與其它外部設(shè)備通信、傳輸數(shù)據(jù)擁有開放的OS應(yīng)用程序接口,開發(fā)商可根據(jù)需要自行開發(fā)所需的應(yīng)用程序具有強(qiáng)開放性,現(xiàn)在有大約數(shù)千種專門為Palm OS編寫的應(yīng)用程序,從程序內(nèi)容上看,小到個(gè)人管理、游戲,大到行業(yè)解決方案,Palm OS無所不包。在豐富的軟件支持下,基于Palm OS的掌上電腦功能得以不斷擴(kuò)展。操作系統(tǒng)的節(jié)能功能。在Palm OS的應(yīng)用程序中,如果沒有事件運(yùn)行,則系統(tǒng)設(shè)備進(jìn)入半休眠(do

12、ze)的狀態(tài);如果應(yīng)用程序停止活動一段時(shí)間,則系統(tǒng)自動進(jìn)入休眠(sleep)狀態(tài)。合理的內(nèi)存管理。Palm的存儲器全部是可讀寫的快速RAM,動態(tài)RAM(Dynamic RAM)類似于PC機(jī)上的RAM,它為全局變量和其它不需永久保存的數(shù)據(jù)提供臨時(shí)的存儲空間;存儲RAM(Storage RAM)類似于PC機(jī)上的硬盤,可以永久保存應(yīng)用程序和數(shù)據(jù)。Palm OS的數(shù)據(jù)是以數(shù)據(jù)庫(database)的格式來存儲的。4) 嵌入式Linux:嵌入式Linux OS逐漸形成了可與Windows CE等EOS相抗衡的局面。目前正在開發(fā)的嵌入式系統(tǒng)中,49%的項(xiàng)目選擇Linux作為嵌入式操作系統(tǒng)。Linux現(xiàn)已成

13、為嵌入式操作系統(tǒng)的理想選擇。開放源碼,豐富的軟件資源,廣泛的軟件開發(fā)者的支持,價(jià)格低廉,結(jié)構(gòu)靈活,適用面廣。精簡的內(nèi)核,性能高、穩(wěn)定,多任務(wù)。適用于不同的CPU,支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、ALPHA、SPARC等。能夠提供完善的嵌入式GUI以及嵌入式X-Windows。提供嵌入式瀏覽器、郵件程序、MP3播放器、MPEG播放器、記事本等應(yīng)用程序。提供完整的開發(fā)工具和SDK,同時(shí)提供PC上的開發(fā)版本。用戶可定制,可提供圖形化的定制和配置工具。常用嵌入式芯片的驅(qū)動集,支持大量的周邊硬件設(shè)備,驅(qū)動豐富。針對嵌入式的存儲方案,提供實(shí)時(shí)版本和完善的嵌入式解決方案。完善的中文支持,強(qiáng)大的

14、技術(shù)支持,完整的文檔。18、 什么是Boot Loader,ARM系統(tǒng)中Boot Loader的主要作用是什么Boot Loader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們能初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。作用:硬件初始化,操作系統(tǒng)引導(dǎo)。19、 簡述Boot Loader的啟動過程大多數(shù)BootLoader都包含兩種不同的操作模式:啟動加載模式和下載模式。啟動加載模式也稱為自主模式,即BootLoader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程并沒有用

15、戶的介入。而下載模式則是目標(biāo)機(jī)上的BootLoader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件。從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被BootLoader寫到目標(biāo)機(jī)上的FLASH類固態(tài)存儲設(shè)備中。這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用,或系統(tǒng)更新時(shí)使用。一般嵌入式系統(tǒng)的BootLoader較為常用的是啟動加載模式,它的加載流程也是我們要重點(diǎn)討論的內(nèi)容。(1)啟動部分啟動部分主要是實(shí)現(xiàn)初始化硬件的功能。在參考板的BootLoader目錄下,會發(fā)現(xiàn)一些.s文件,可能會是init.s或者是reset.s等,這樣的文件是CPU加電后

16、最先執(zhí)行的代碼。接著Oal.exe通過Startup函數(shù)完成硬件的初始化,StartUp函數(shù)是BootLoader的入口函數(shù)。該函數(shù)一般是使用匯編語言編寫,與CPU關(guān)系非常緊密,能完成初始化CPU、內(nèi)存等核心硬件。Startup.s代碼與硬件平臺的Bootloader啟動代碼共用。如果是熱啟動,即在該函數(shù)調(diào)用之前已經(jīng)啟動了Bootloader程序,相當(dāng)基本硬件初始化已經(jīng)完成,則直接跳轉(zhuǎn)到OALStartUp函數(shù)中;否則需要進(jìn)行硬件中斷屏蔽、內(nèi)存、系統(tǒng)時(shí)鐘頻率、電源管理等硬件的基本初始化過程。在系統(tǒng)硬件初始化完畢之后,Startup調(diào)用OALStartUp函數(shù),OALStartUp函數(shù)主要完成將

17、OEMAddressTable表傳遞給內(nèi)核,然后調(diào)用KernelStart函數(shù)跳轉(zhuǎn)到內(nèi)核。因此,這部分工作是BootLoader的一大重點(diǎn)。(2)主控部分StartUp函數(shù)初始化CPU等核心硬件并跳轉(zhuǎn)到Main函數(shù)后,系統(tǒng)就會轉(zhuǎn)入C語言代碼執(zhí)行環(huán)境。這時(shí)函數(shù)分為3個(gè)模塊:BLCOMMON、Download、FLASH。其中BLCOMMON模塊是由微軟提供的,執(zhí)行一些邏輯上的功能,因此建議開發(fā)人員不要對其進(jìn)行修改。而Download、FLASH中的函數(shù)與硬件平臺息息相關(guān),因此對于每種硬件平臺都要將函數(shù)的實(shí)現(xiàn)進(jìn)行修改。其中,BLCOMMON庫是與BootLoader程序鏈接在一起的,BLCOMMO

18、N庫的入口點(diǎn)為BootloaderMain函數(shù),它是Startup匯編函數(shù)完成后跳轉(zhuǎn)至該入口的。Main函數(shù)的主要任務(wù)時(shí)調(diào)用BLCommon中的BootloaderMain()函數(shù),這是BootLoader的主控函數(shù),它控制了BootLoader的完整執(zhí)行流程。這部分代碼由C語言實(shí)現(xiàn),是BLCOMMON代碼的一部分,它可以用來執(zhí)行比較復(fù)雜的操作。比如檢測內(nèi)存和Flash的有效性、檢測外部設(shè)備接口、檢測串口并且向已經(jīng)連接的主機(jī)發(fā)送調(diào)試信息、通過串口等待命令、啟動網(wǎng)絡(luò)接口、建立內(nèi)存映射等匯編無法完成的工作。(3)下載部分一般在平臺調(diào)試完畢后,可以在不用人工干預(yù)的情況下自動加載CE,這也是BootL

19、oader的功能之一。而在調(diào)試階段時(shí),這需要通過Loader所支持的命令來進(jìn)行操作的,借助于這些命令不僅可以完成硬件平臺的部分測試,還能完成CE的BootLoader程序最為重要的一個(gè)功能-下載CE映像。如果說硬件調(diào)試功能可以由其它的程序代替而不放入BootLoader中,但是下載映像文件卻是BootLoader必需的功能。CE映像文件通常叫做nk.bin,它是WindowsCE二進(jìn)制數(shù)據(jù)格式文件,不僅包含了有效的程序代碼,還有按照一定規(guī)則加入的控制信息。當(dāng)然,也可以選擇生成.sre格式的代碼文件,但是相于對前一種格式,它的代碼要長很多,所需要的下載時(shí)間也更長。(4)支持DOC部份對于WinC

20、E操作系統(tǒng)而言,豐富的多媒體功能是其一大特點(diǎn)。但是隨之而來的問題是,如果選擇了圖形界面和中文支持,系統(tǒng)很容易大大超出嵌入式系統(tǒng)上百KB的數(shù)量級。而DOC(DiskOnChip)則提供了一種相對廉價(jià)的大存儲容量的解決方案。DOC本質(zhì)上是一種加以軟件控制的NAND格式的Flash,通過TFFS這一軟件層提供對WinCE的支持。由于DOC不能像內(nèi)存一樣被直接訪問,所以其加載WinCE的過程有些特殊,必須要在BootLoader中加入專門的代碼,才能使用DOC來存放WinCE映像文件20、 Linux內(nèi)核源碼是如何組織的,主要的目錄文件有哪些?arch包含和硬件體系結(jié)構(gòu)相關(guān)的代碼,每種平臺占一個(gè)相應(yīng)的

21、目錄。和32位PC相關(guān)的代碼存放在i386目錄下,其中比較重要的包括:kernel內(nèi)核核心部分mm內(nèi)存管理math-emu浮點(diǎn)單元仿真lib硬件相關(guān)工具函數(shù)boot引導(dǎo)程序pciPCI總線和power CPU相關(guān)狀態(tài)block 部分塊設(shè)備驅(qū)動程序crypto 常用加密和散列算法如AES、SHA等還有一些壓縮和CRC校驗(yàn)算法。/*/drivers放置系統(tǒng)所有的設(shè)備驅(qū)動程序;每種驅(qū)動程序又各占用一個(gè)子目錄:如,/block下為塊設(shè)備驅(qū)動程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系統(tǒng)的設(shè)備是如何初始化的,你可以看drivers/block/genhd.c中的device_setu

22、p()。它不僅初始化硬盤,也初始化網(wǎng)絡(luò),因?yàn)榘惭bnfs文件系統(tǒng)的時(shí)候需要網(wǎng)絡(luò);fs文件系統(tǒng)代碼,每個(gè)支持的文件系統(tǒng)有相應(yīng)的子目錄,如cramfs,yaffs,jffs2等。include包括編譯內(nèi)核所需的大部分頭文件,與平臺無關(guān)的頭文件放在include/linux子目錄下,平臺相關(guān)的頭文件如include/asm-arminit這個(gè)目錄包含核心的初始化代碼(注:不是系統(tǒng)的引導(dǎo)代碼),包含兩個(gè)文件main.c和Version.c,這是研究核心如何工作的好的起點(diǎn)之一。kernel主要的核心代碼,此目錄下的文件實(shí)現(xiàn)了大多數(shù)linux系統(tǒng)的內(nèi)核函數(shù),其中最重要的文件當(dāng)屬sched.c;同樣,和體系結(jié)

23、構(gòu)相關(guān)的代碼在arch/*/kernel中。Lib庫函數(shù)代碼。Mm這個(gè)目錄包括所有獨(dú)立于cpu體系結(jié)構(gòu)的內(nèi)存管理代碼,如頁式存儲管理內(nèi)存的分配和釋放等;而和體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼則位arch/*/mm/,例如arch/i386/mm/Fault.c;Net網(wǎng)絡(luò)支持代碼sound音頻設(shè)備驅(qū)動代碼Scripts描述文件,腳本,用于對核心的配置;documentation關(guān)于內(nèi)核各部分的通用解釋和注釋ipc進(jìn)程間通信的代碼。security主要是一個(gè)SELinux的模塊。Modules模塊文件目錄,是個(gè)空目錄,用于存放編譯時(shí)產(chǎn)生的模塊目標(biāo)文件。/*/在每個(gè)子目錄下,都有一個(gè)Makefile和一個(gè)

24、Readme文件,仔細(xì)閱讀這兩個(gè)文件,對內(nèi)核源碼的理解很有用。其中頂層目錄下的Makefile負(fù)責(zé)整個(gè)內(nèi)核的編譯,編譯的時(shí)候遞歸的調(diào)用各個(gè)目錄下的Makefile文件,最終將產(chǎn)生內(nèi)核的可執(zhí)行映像文件。Makefile:分布在Linux內(nèi)核源碼中的Makefile定義了Linux內(nèi)核編譯的規(guī)則。Makefile決定編譯哪些文件、怎樣編譯這些文件、按什么順序連接這些文件。config:在配置內(nèi)核時(shí)生成的一個(gè)文件,根據(jù).config來決定使用哪些Makefile。21、 內(nèi)核移植的一般步驟第一階段:1、獲取源碼解壓2、在系統(tǒng)中添加對平臺(ARM)的支持:toplevelMakefile改交叉編譯器路

25、徑3、改平臺輸入:arch/arm/mach-s3c2440/mach-smdk2440.c4、改機(jī)器碼,與U-Boot配合才能啟動:arch/arm/tools/mach-types5、改鏡像的存放地:arch/arm/bootMakefile默認(rèn)鏡像存在arch/arm/boot6、做自己的配置單:#make menuconfig加載2410的配置單修改System type修改版本信息:general setup使支持交叉編譯器kernel features7、保存.config并復(fù)制一個(gè)配置單的備份8、編譯鏡像:#make distclean#make zImage9、啟動內(nèi)核看con

26、sole信息第二階段:1、移植NandFlash驅(qū)動:(驅(qū)動內(nèi)核已做好,只修改幾個(gè)地方)arch/arm/plat-s3c24xx/common-smdk.c改分區(qū)信息改讀寫匹配時(shí)間Drivers/mtd/nand/s3c2410.c去掉ECC校驗(yàn)(內(nèi)核與U-Boot校驗(yàn)不同)#make menuconfig添加NandFlash支持2、完善串口驅(qū)動(內(nèi)核只支持兩個(gè)串口,可把紅外接口修改為串口)(可選操作)紅外改串口:arch/arm/mach-smdk2440.cdrivers/serial/s3c2410.c和samsung.c配置菜單3、移植文件系統(tǒng)1、獲得yaffs文件系統(tǒng)源碼和yaf

27、fs文件系統(tǒng)補(bǔ)丁解壓2、內(nèi)核中添加yaffs支持打補(bǔ)丁改配置單Device Drivers、File system3、編譯BusyBox:目的是生成文件系統(tǒng)所需要的一些目錄和文件3.1、解壓BusyBox源碼進(jìn)入源碼目錄添加編譯器路徑改Makefile3.2、改BusyBox配置單#make menuconfig保存配置單3.3、編譯安裝BusyBox#make; make install生成文件系統(tǒng)部分源碼在_install4、構(gòu)建文件系統(tǒng):目的是構(gòu)建一個(gè)比較完整的文件系統(tǒng)4.1、構(gòu)建框架主目錄:root_2.6.30.4子目錄:復(fù)制:BusyBox生成的_install目錄下的目錄新建:#

28、mkdir dev etc home lib mnt opt proc root sddisk systmp udisk var web usr/lib usr/share4.2、添加文件dev設(shè)備目錄/etc配置文件目錄/home用戶目錄/lib庫目錄/mnt移動設(shè)備掛載目錄/opt與QT等相關(guān)/proc虛擬文件系統(tǒng)和目錄/root超級用戶目錄/sys可能mdev建目錄/tmp臨時(shí)文件目錄/var臨時(shí)文件目錄/usr/bin串口有關(guān)5、編譯文件系統(tǒng)鏡像:#mkyaffs2image root_2.6.30.4 root_2.6.30.4.bin得到文件系統(tǒng)鏡像第三階段:1、移植網(wǎng)卡驅(qū)動2、移

29、植USB驅(qū)動3、移植LCD驅(qū)動4、移植觸摸驅(qū)動5、移植聲卡驅(qū)動6、移植SD卡驅(qū)動7、移植IIS驅(qū)動8、移植RTC驅(qū)動9、移植看門狗驅(qū)動22、 嵌入式系統(tǒng)中根文件系統(tǒng)架構(gòu)是如何組織的1./bin目錄 該目錄下存放所有用戶都可以使用的、基本的命令,這些命令在掛接其它文件系統(tǒng)之前就可以使用,所以/bin目錄必須和根文件系統(tǒng)在同一個(gè)分區(qū)中。2./sbin 目錄 該目錄下存放系統(tǒng)命令,即只有管理員能夠使用的命令,系統(tǒng)命令還可以存放在/usr/sbin,/usr/local/sbin目錄下,/sbin目錄中存放的是基本的系統(tǒng)命令,它們用于啟動系統(tǒng),修復(fù)系統(tǒng)等,與/bin目錄相似,在掛接其他文件系統(tǒng)之前就可

30、以使用/sbin,所以/sbin目錄必須和根文件系統(tǒng)在同一個(gè)分區(qū)中。3、/dev目錄 該目錄下存放的是設(shè)備文件,設(shè)備文件是Linux中特有的文件類型,在Linux系統(tǒng)下,以文件的方式訪問各種設(shè)備,即通過讀寫某個(gè)設(shè)備文件操作某個(gè)具體硬件。比如通過dev/ttySAC0文件可以操作串口0,通過/dev/mtdblock1可以訪問MTD設(shè)備的第2個(gè)分區(qū)。4./etc目錄 該目錄下存放著各種配置文件,對于PC上的Linux系統(tǒng),/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴于系統(tǒng)中所擁有的應(yīng)用程序,依賴于這些程序是否需要配置文件。在嵌入式系統(tǒng)中,這些內(nèi)容可以大為精減。5./lib目錄 該目錄下存放共享庫和可加載(驅(qū)動程

溫馨提示

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

評論

0/150

提交評論