




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、真誠(chéng)為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請(qǐng)指正。嵌入式系統(tǒng)原理復(fù)習(xí)題1、 嵌入式系統(tǒng)的概念廣義上講,凡是帶有微處理器的專(zhuān)用軟硬件系統(tǒng)都可稱(chēng)為嵌入式系統(tǒng)。如各類(lèi)單片機(jī)和DSP系統(tǒng)。這些系統(tǒng)在完成較為單一的專(zhuān)業(yè)功能時(shí)具有簡(jiǎn)潔高效的特點(diǎn)。但由于他們沒(méi)有操作系統(tǒng),管理系統(tǒng)硬件和軟件的能力有限,在實(shí)現(xiàn)復(fù)雜多任務(wù)功能時(shí),往往困難重重,甚至無(wú)法實(shí)現(xiàn)。從狹義上講,我們更加強(qiáng)調(diào)那些使用嵌入式微處理器構(gòu)成獨(dú)立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場(chǎng)合的嵌入式系統(tǒng)。本書(shū)所謂的嵌入式系統(tǒng)是指狹義上的嵌入式系統(tǒng)。根據(jù)IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))的定義:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的
2、裝置”(原文為devices used to control, monitor, or assist the operation of equipment, machinery or plants)。嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。2、 嵌入式系統(tǒng)的特點(diǎn)1) 系統(tǒng)內(nèi)核小2) 專(zhuān)用性強(qiáng)3) 運(yùn)行環(huán)境差異大4) 可靠性要求高5) 系統(tǒng)精簡(jiǎn)和高實(shí)時(shí)性操作系統(tǒng)6) 具有固化在非易失性存儲(chǔ)器中的代碼7) 無(wú)自舉開(kāi)發(fā)能力3、 嵌入式系統(tǒng)的硬件平臺(tái)由哪些部分組成嵌入式系統(tǒng)的微硬件包括嵌入式核心芯片、存儲(chǔ)器系統(tǒng)及外部接口4、
3、 什么是分時(shí)系統(tǒng)、軟實(shí)時(shí)系統(tǒng)、硬實(shí)時(shí)系統(tǒng),它們的區(qū)別是什么?分時(shí)操作系統(tǒng)按照相等的時(shí)間片調(diào)度進(jìn)程輪流運(yùn)行,分時(shí)操作系統(tǒng)由調(diào)度程序自動(dòng)計(jì)算進(jìn)程的優(yōu)先級(jí),而不是由用戶(hù)控制進(jìn)程的優(yōu)先級(jí)。這樣的系統(tǒng)無(wú)法實(shí)時(shí)響應(yīng)外部異步事件。硬實(shí)時(shí)系統(tǒng)有一個(gè)剛性的、不可改變的時(shí)間限制,它不允許任何超出時(shí)限的錯(cuò)誤。超時(shí)錯(cuò)誤會(huì)帶來(lái)?yè)p害甚至導(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)的分類(lèi)按嵌入式微處理器的位數(shù)分類(lèi)a) 4位b) 8位c) 16位d) 32位e) 64位按軟件實(shí)時(shí)性需求分類(lèi)
4、a) 非實(shí)時(shí)系統(tǒng)b) 軟實(shí)時(shí)系統(tǒng)c) 硬實(shí)時(shí)系統(tǒng)按嵌入系統(tǒng)的復(fù)雜程度分類(lèi)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è)寄存器,可以分為以下兩類(lèi)寄存器 :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_
5、fiq 。8、 ARM9處理器的工作模式有哪些用戶(hù),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í),自動(dòng)切換到Thumb狀態(tài)。進(jìn)入ARM狀態(tài):當(dāng)操作數(shù)寄存器Rm的狀態(tài)位bit0為0時(shí),執(zhí)行BX Rm指令進(jìn)
6、入ARM狀態(tài)。如果處理器進(jìn)行異常處理(IRQ,F(xiàn)IQ,Undef,Abort和SWI),在此情況下,把PC放入異常模式鏈接寄存器LR中,從異常向量XXX開(kāi)始執(zhí)行也可以進(jìn)入ARM狀態(tài)。 11、 ARM為何集成了32位的ARM指令集和16位的Thumb指令集ARM的RISC體系結(jié)構(gòu)的發(fā)展中已經(jīng)提供了低功耗、小體積、高性能的方案。而為了解決代碼長(zhǎng)度的問(wèn)題,ARM體系結(jié)構(gòu)又增加了變種,開(kāi)發(fā)了一種新的指令體系,這就是Thumb指令集。它有從標(biāo)準(zhǔn)32位ARM指令集抽出來(lái)的36條指令格式,可以重新編成16位的操作碼。這能帶來(lái)很高的代碼密度。12、 ARM指令尋址方式與ARM指令集中各類(lèi)常用指令的用法(內(nèi)容太
7、多,第三章全部?jī)?nèi)容?。?3、 什么是交叉編譯,為什么要進(jìn)行交叉編譯在一種計(jì)算機(jī)環(huán)境中運(yùn)行的編譯程序,能編譯出在另外一種環(huán)境下運(yùn)行的代碼,這個(gè)編譯過(guò)程就叫交叉編譯。原因:有時(shí)是因?yàn)槟康钠脚_(tái)上不允許或不能夠安裝我們所需要的編譯器,而我們又需要這個(gè)編譯器的某些特征;有時(shí)是因?yàn)槟康钠脚_(tái)上的資源貧乏,無(wú)法運(yùn)行我們所需要編譯器;有時(shí)又是因?yàn)槟康钠脚_(tái)還沒(méi)有建立,連操作系統(tǒng)都沒(méi)有,根本談不上運(yùn)行什么編譯器。14、 簡(jiǎn)述構(gòu)建交叉編譯鏈的主要步驟1) 獲取相關(guān)的源代碼和補(bǔ)丁包2) 它們都存放在src目錄下3) 安裝binutils4) 安裝Linux header5) 安裝Glibc 頭文件6) 編譯GCC St
8、age17) 使用剛編譯出的GCC編譯Glibc8) 重新編譯GCC,即GCCStage215、 簡(jiǎn)述嵌入式系統(tǒng)的開(kāi)發(fā)流程主要包括系統(tǒng)需求分析(要求有嚴(yán)格規(guī)范的技術(shù)要求)、體系結(jié)構(gòu)設(shè)計(jì)、軟硬件及機(jī)械系統(tǒng)設(shè)計(jì)、系統(tǒng)集成、系統(tǒng)測(cè)試,最終得到最終產(chǎn)品。16、 嵌入式系統(tǒng)與通用計(jì)算機(jī)的區(qū)別一是能力不同。通用計(jì)算機(jī)系統(tǒng)通常什么都能做,我們買(mǎi)個(gè)電腦,上網(wǎng)、聽(tīng)音樂(lè)、看電影、做軟件都不在話(huà)下。嵌入式系統(tǒng)一般面向某一特定應(yīng)用,不是什么都能干。例如鼠標(biāo)里的嵌入式系統(tǒng)任務(wù)只是監(jiān)視鼠標(biāo)的按鍵,并向主CPU發(fā)送鍵碼,數(shù)碼相機(jī)里面的嵌入式系統(tǒng)主要進(jìn)行圖像處理,讓它們什么都能做,有點(diǎn)難也沒(méi)必要。二是大小不同。通用計(jì)算機(jī)系統(tǒng)
9、通常對(duì)個(gè)頭沒(méi)有要求,臺(tái)式機(jī)占據(jù)一張桌子,大型服務(wù)器可以占據(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í)性要求很高。比如汽車(chē)?yán)锏那度胧较到y(tǒng),如果發(fā)動(dòng)機(jī)過(guò)熱,必須要求在規(guī)定的時(shí)間內(nèi)作出反應(yīng),如果像PC那樣不緊不慢的,后果可想而知。四是可靠性要求不同。電腦死機(jī)估計(jì)每個(gè)人都經(jīng)常遇到,死機(jī)了怎么辦?重啟就是。但是如果火箭發(fā)射時(shí)里面的嵌入式系統(tǒng)死機(jī)了.,五是二次開(kāi)發(fā)能力不同。我們買(mǎi)來(lái)個(gè)電腦,通常也就裝了個(gè)操作系統(tǒng),其它的程序
10、我們需要什么就可以裝什么,我們甚至可以打開(kāi)機(jī)箱,加幾條內(nèi)存。但嵌入式系統(tǒng)通常買(mǎi)來(lái)后就那樣了,軟件和硬件都不變了。數(shù)碼相機(jī)相信多數(shù)人沒(méi)有打開(kāi)過(guò),也沒(méi)有再安裝什么新軟件。倒是智能手機(jī)可以裝一些軟件,但能力有限。六是數(shù)量不同。嵌入式系統(tǒng)的數(shù)量遠(yuǎn)大于通用計(jì)算機(jī)系統(tǒng)的數(shù)量。因?yàn)橐粋€(gè)通用計(jì)算系統(tǒng)中至少包括數(shù)十個(gè)嵌入式系統(tǒng)。更別說(shuō)其它的嵌入式系統(tǒng)了。17、 常見(jiàn)的嵌入式操作系統(tǒng)有哪些,各自有什么特點(diǎn)1) VxWorks:性能優(yōu)越,開(kāi)發(fā)調(diào)試便利,強(qiáng)大的技術(shù)支持,但是昂貴的價(jià)格讓開(kāi)發(fā)者望而卻步。2) Windows CE:精簡(jiǎn)的模塊化操作系統(tǒng)多硬件平臺(tái)支持支持有線(xiàn)和無(wú)線(xiàn)的網(wǎng)絡(luò)連接穩(wěn)健的實(shí)時(shí)性支持豐富的多媒體和多
11、語(yǔ)言支持強(qiáng)大的開(kāi)發(fā)工具3) Palm OS:3Com公司產(chǎn)品,專(zhuān)門(mén)為掌上電腦開(kāi)發(fā)的32位的嵌入式操作系統(tǒng)占有非常小的內(nèi)存,基于Palm OS編寫(xiě)的應(yīng)用程序占用的空間也非常小(通常只有幾十KB)Palm提供了串行通信接口和紅外線(xiàn)傳輸接口,利用它可以方便地與其它外部設(shè)備通信、傳輸數(shù)據(jù)擁有開(kāi)放的OS應(yīng)用程序接口,開(kāi)發(fā)商可根據(jù)需要自行開(kāi)發(fā)所需的應(yīng)用程序具有強(qiáng)開(kāi)放性,現(xiàn)在有大約數(shù)千種專(zhuān)門(mén)為Palm OS編寫(xiě)的應(yīng)用程序,從程序內(nèi)容上看,小到個(gè)人管理、游戲,大到行業(yè)解決方案,Palm OS無(wú)所不包。在豐富的軟件支持下,基于Palm OS的掌上電腦功能得以不斷擴(kuò)展。操作系統(tǒng)的節(jié)能功能。在Palm OS的應(yīng)用程
12、序中,如果沒(méi)有事件運(yùn)行,則系統(tǒng)設(shè)備進(jìn)入半休眠(doze)的狀態(tài);如果應(yīng)用程序停止活動(dòng)一段時(shí)間,則系統(tǒng)自動(dòng)進(jìn)入休眠(sleep)狀態(tài)。合理的內(nèi)存管理。Palm的存儲(chǔ)器全部是可讀寫(xiě)的快速RAM,動(dòng)態(tài)RAM(Dynamic RAM)類(lèi)似于PC機(jī)上的RAM,它為全局變量和其它不需永久保存的數(shù)據(jù)提供臨時(shí)的存儲(chǔ)空間;存儲(chǔ)RAM(Storage RAM)類(lèi)似于PC機(jī)上的硬盤(pán),可以永久保存應(yīng)用程序和數(shù)據(jù)。Palm OS的數(shù)據(jù)是以數(shù)據(jù)庫(kù)(database)的格式來(lái)存儲(chǔ)的。4) 嵌入式Linux:嵌入式Linux OS逐漸形成了可與Windows CE等EOS相抗衡的局面。目前正在開(kāi)發(fā)的嵌入式系統(tǒng)中,49%的項(xiàng)目
13、選擇Linux作為嵌入式操作系統(tǒng)。Linux現(xiàn)已成為嵌入式操作系統(tǒng)的理想選擇。開(kāi)放源碼,豐富的軟件資源,廣泛的軟件開(kāi)發(fā)者的支持,價(jià)格低廉,結(jié)構(gòu)靈活,適用面廣。精簡(jiǎn)的內(nèi)核,性能高、穩(wěn)定,多任務(wù)。適用于不同的CPU,支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、ALPHA、SPARC等。能夠提供完善的嵌入式GUI以及嵌入式X-Windows。提供嵌入式瀏覽器、郵件程序、MP3播放器、MPEG播放器、記事本等應(yīng)用程序。提供完整的開(kāi)發(fā)工具和SDK,同時(shí)提供PC上的開(kāi)發(fā)版本。用戶(hù)可定制,可提供圖形化的定制和配置工具。常用嵌入式芯片的驅(qū)動(dòng)集,支持大量的周邊硬件設(shè)備,驅(qū)動(dòng)豐富。針對(duì)嵌入式的存儲(chǔ)方案,提供實(shí)時(shí)
14、版本和完善的嵌入式解決方案。完善的中文支持,強(qiáng)大的技術(shù)支持,完整的文檔。18、 什么是Boot Loader,ARM系統(tǒng)中Boot Loader的主要作用是什么Boot Loader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過(guò)這段小程序,我們能初始化硬件設(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、 簡(jiǎn)述Boot Loader的啟動(dòng)過(guò)程大多數(shù)BootLoader都包含兩種不同的操作模式:?jiǎn)?dòng)加載模式和下載模式。啟動(dòng)加載模式也稱(chēng)為自主模式,即BootLoader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)
15、備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶(hù)的介入。而下載模式則是目標(biāo)機(jī)上的BootLoader將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件。從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被BootLoader寫(xiě)到目標(biāo)機(jī)上的FLASH類(lèi)固態(tài)存儲(chǔ)設(shè)備中。這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用,或系統(tǒng)更新時(shí)使用。一般嵌入式系統(tǒng)的BootLoader較為常用的是啟動(dòng)加載模式,它的加載流程也是我們要重點(diǎn)討論的內(nèi)容。(1)啟動(dòng)部分啟動(dòng)部分主要是實(shí)現(xiàn)初始化硬件的功能。在參考板的BootLoader目錄下,會(huì)發(fā)現(xiàn)一些.s文件,可能會(huì)是init.
16、s或者是reset.s等,這樣的文件是CPU加電后最先執(zhí)行的代碼。接著Oal.exe通過(guò)Startup函數(shù)完成硬件的初始化,StartUp函數(shù)是BootLoader的入口函數(shù)。該函數(shù)一般是使用匯編語(yǔ)言編寫(xiě),與CPU關(guān)系非常緊密,能完成初始化CPU、內(nèi)存等核心硬件。Startup.s代碼與硬件平臺(tái)的Bootloader啟動(dòng)代碼共用。如果是熱啟動(dòng),即在該函數(shù)調(diào)用之前已經(jīng)啟動(dòng)了Bootloader程序,相當(dāng)基本硬件初始化已經(jīng)完成,則直接跳轉(zhuǎn)到OALStartUp函數(shù)中;否則需要進(jìn)行硬件中斷屏蔽、內(nèi)存、系統(tǒng)時(shí)鐘頻率、電源管理等硬件的基本初始化過(guò)程。在系統(tǒng)硬件初始化完畢之后,Startup調(diào)用OALSt
17、artUp函數(shù),OALStartUp函數(shù)主要完成將OEMAddressTable表傳遞給內(nèi)核,然后調(diào)用KernelStart函數(shù)跳轉(zhuǎn)到內(nèi)核。因此,這部分工作是BootLoader的一大重點(diǎn)。(2)主控部分StartUp函數(shù)初始化CPU等核心硬件并跳轉(zhuǎn)到Main函數(shù)后,系統(tǒng)就會(huì)轉(zhuǎn)入C語(yǔ)言代碼執(zhí)行環(huán)境。這時(shí)函數(shù)分為3個(gè)模塊:BLCOMMON、Download、FLASH。其中BLCOMMON模塊是由微軟提供的,執(zhí)行一些邏輯上的功能,因此建議開(kāi)發(fā)人員不要對(duì)其進(jìn)行修改。而Download、FLASH中的函數(shù)與硬件平臺(tái)息息相關(guān),因此對(duì)于每種硬件平臺(tái)都要將函數(shù)的實(shí)現(xiàn)進(jìn)行修改。其中,BLCOMMON庫(kù)是與B
18、ootLoader程序鏈接在一起的,BLCOMMON庫(kù)的入口點(diǎn)為BootloaderMain函數(shù),它是Startup匯編函數(shù)完成后跳轉(zhuǎn)至該入口的。Main函數(shù)的主要任務(wù)時(shí)調(diào)用BLCommon中的BootloaderMain()函數(shù),這是BootLoader的主控函數(shù),它控制了BootLoader的完整執(zhí)行流程。這部分代碼由C語(yǔ)言實(shí)現(xiàn),是BLCOMMON代碼的一部分,它可以用來(lái)執(zhí)行比較復(fù)雜的操作。比如檢測(cè)內(nèi)存和Flash的有效性、檢測(cè)外部設(shè)備接口、檢測(cè)串口并且向已經(jīng)連接的主機(jī)發(fā)送調(diào)試信息、通過(guò)串口等待命令、啟動(dòng)網(wǎng)絡(luò)接口、建立內(nèi)存映射等匯編無(wú)法完成的工作。(3)下載部分一般在平臺(tái)調(diào)試完畢后,可以在
19、不用人工干預(yù)的情況下自動(dòng)加載CE,這也是BootLoader的功能之一。而在調(diào)試階段時(shí),這需要通過(guò)Loader所支持的命令來(lái)進(jìn)行操作的,借助于這些命令不僅可以完成硬件平臺(tái)的部分測(cè)試,還能完成CE的BootLoader程序最為重要的一個(gè)功能-下載CE映像。如果說(shuō)硬件調(diào)試功能可以由其它的程序代替而不放入BootLoader中,但是下載映像文件卻是BootLoader必需的功能。CE映像文件通常叫做nk.bin,它是WindowsCE二進(jìn)制數(shù)據(jù)格式文件,不僅包含了有效的程序代碼,還有按照一定規(guī)則加入的控制信息。當(dāng)然,也可以選擇生成.sre格式的代碼文件,但是相于對(duì)前一種格式,它的代碼要長(zhǎng)很多,所需要
20、的下載時(shí)間也更長(zhǎng)。(4)支持DOC部份對(duì)于WinCE操作系統(tǒng)而言,豐富的多媒體功能是其一大特點(diǎn)。但是隨之而來(lái)的問(wèn)題是,如果選擇了圖形界面和中文支持,系統(tǒng)很容易大大超出嵌入式系統(tǒng)上百KB的數(shù)量級(jí)。而DOC(DiskOnChip)則提供了一種相對(duì)廉價(jià)的大存儲(chǔ)容量的解決方案。DOC本質(zhì)上是一種加以軟件控制的NAND格式的Flash,通過(guò)TFFS這一軟件層提供對(duì)WinCE的支持。由于DOC不能像內(nèi)存一樣被直接訪(fǎng)問(wèn),所以其加載WinCE的過(guò)程有些特殊,必須要在BootLoader中加入專(zhuān)門(mén)的代碼,才能使用DOC來(lái)存放WinCE映像文件20、 Linux內(nèi)核源碼是如何組織的,主要的目錄文件有哪些?arch
21、包含和硬件體系結(jié)構(gòu)相關(guān)的代碼,每種平臺(tái)占一個(gè)相應(yīng)的目錄。和32位PC相關(guān)的代碼存放在i386目錄下,其中比較重要的包括:kernel內(nèi)核核心部分mm內(nèi)存管理math-emu浮點(diǎn)單元仿真lib硬件相關(guān)工具函數(shù)boot引導(dǎo)程序pciPCI總線(xiàn)和power CPU相關(guān)狀態(tài)block 部分塊設(shè)備驅(qū)動(dòng)程序crypto 常用加密和散列算法如AES、SHA等還有一些壓縮和CRC校驗(yàn)算法。/*/drivers放置系統(tǒng)所有的設(shè)備驅(qū)動(dòng)程序;每種驅(qū)動(dòng)程序又各占用一個(gè)子目錄:如,/block下為塊設(shè)備驅(qū)動(dòng)程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系統(tǒng)的設(shè)備是如何初始化的,你可以看drivers/b
22、lock/genhd.c中的device_setup()。它不僅初始化硬盤(pán),也初始化網(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)核所需的大部分頭文件,與平臺(tái)無(wú)關(guān)的頭文件放在include/linux子目錄下,平臺(tái)相關(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ù),
23、其中最重要的文件當(dāng)屬sched.c;同樣,和體系結(jié)構(gòu)相關(guān)的代碼在arch/*/kernel中。Lib庫(kù)函數(shù)代碼。Mm這個(gè)目錄包括所有獨(dú)立于cpu體系結(jié)構(gòu)的內(nèi)存管理代碼,如頁(yè)式存儲(chǔ)管理內(nèi)存的分配和釋放等;而和體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼則位arch/*/mm/,例如arch/i386/mm/Fault.c;Net網(wǎng)絡(luò)支持代碼sound音頻設(shè)備驅(qū)動(dòng)代碼Scripts描述文件,腳本,用于對(duì)核心的配置;documentation關(guān)于內(nèi)核各部分的通用解釋和注釋ipc進(jìn)程間通信的代碼。security主要是一個(gè)SELinux的模塊。Modules模塊文件目錄,是個(gè)空目錄,用于存放編譯時(shí)產(chǎn)生的模塊目標(biāo)文件。/
24、*/在每個(gè)子目錄下,都有一個(gè)Makefile和一個(gè)Readme文件,仔細(xì)閱讀這兩個(gè)文件,對(duì)內(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來(lái)決定使用哪些Makefile。21、 內(nèi)核移植的一般步驟第一階段:1、獲取源碼解壓2、在系統(tǒng)中添加對(duì)平臺(tái)(ARM)的支
25、持:toplevelMakefile改交叉編譯器路徑3、改平臺(tái)輸入:arch/arm/mach-s3c2440/mach-smdk2440.c4、改機(jī)器碼,與U-Boot配合才能啟動(dòng):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 distcl
26、ean#make zImage9、啟動(dòng)內(nèi)核看console信息第二階段:1、移植NandFlash驅(qū)動(dòng):(驅(qū)動(dòng)內(nèi)核已做好,只修改幾個(gè)地方)arch/arm/plat-s3c24xx/common-smdk.c改分區(qū)信息改讀寫(xiě)匹配時(shí)間Drivers/mtd/nand/s3c2410.c去掉ECC校驗(yàn)(內(nèi)核與U-Boot校驗(yàn)不同)#make menuconfig添加NandFlash支持2、完善串口驅(qū)動(dòng)(內(nèi)核只支持兩個(gè)串口,可把紅外接口修改為串口)(可選操作)紅外改串口:arch/arm/mach-smdk2440.cdrivers/serial/s3c2410.c和samsung.c配置菜單3、
27、移植文件系統(tǒng)1、獲得yaffs文件系統(tǒng)源碼和yaffs文件系統(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ù)制:Bus
28、yBox生成的_install目錄下的目錄新建:#mkdir dev etc home lib mnt opt proc root sddisk systmp udisk var web usr/lib usr/share4.2、添加文件dev設(shè)備目錄/etc配置文件目錄/home用戶(hù)目錄/lib庫(kù)目錄/mnt移動(dòng)設(shè)備掛載目錄/opt與QT等相關(guān)/proc虛擬文件系統(tǒng)和目錄/root超級(jí)用戶(hù)目錄/sys可能mdev建目錄/tmp臨時(shí)文件目錄/var臨時(shí)文件目錄/usr/bin串口有關(guān)5、編譯文件系統(tǒng)鏡像:#mkyaffs2image root_2.6.30.4 root_2.6.30.4.bi
29、n得到文件系統(tǒng)鏡像第三階段:1、移植網(wǎng)卡驅(qū)動(dòng)2、移植USB驅(qū)動(dòng)3、移植LCD驅(qū)動(dòng)4、移植觸摸驅(qū)動(dòng)5、移植聲卡驅(qū)動(dòng)6、移植SD卡驅(qū)動(dòng)7、移植IIS驅(qū)動(dòng)8、移植RTC驅(qū)動(dòng)9、移植看門(mén)狗驅(qū)動(dòng)22、 嵌入式系統(tǒng)中根文件系統(tǒng)架構(gòu)是如何組織的1./bin目錄 該目錄下存放所有用戶(hù)都可以使用的、基本的命令,這些命令在掛接其它文件系統(tǒng)之前就可以使用,所以/bin目錄必須和根文件系統(tǒng)在同一個(gè)分區(qū)中。2./sbin 目錄 該目錄下存放系統(tǒng)命令,即只有管理員能夠使用的命令,系統(tǒng)命令還可以存放在/usr/sbin,/usr/local/sbin目錄下,/sbin目錄中存放的是基本的系統(tǒng)命令,它們用于啟動(dòng)系統(tǒng),修復(fù)系統(tǒng)
30、等,與/bin目錄相似,在掛接其他文件系統(tǒng)之前就可以使用/sbin,所以/sbin目錄必須和根文件系統(tǒng)在同一個(gè)分區(qū)中。3、/dev目錄 該目錄下存放的是設(shè)備文件,設(shè)備文件是Linux中特有的文件類(lèi)型,在Linux系統(tǒng)下,以文件的方式訪(fǎng)問(wèn)各種設(shè)備,即通過(guò)讀寫(xiě)某個(gè)設(shè)備文件操作某個(gè)具體硬件。比如通過(guò)dev/ttySAC0文件可以操作串口0,通過(guò)/dev/mtdblock1可以訪(fǎng)問(wèn)MTD設(shè)備的第2個(gè)分區(qū)。4./etc目錄 該目錄下存放著各種配置文件,對(duì)于PC上的Linux系統(tǒng),/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴(lài)于系統(tǒng)中所擁有的應(yīng)用程序,依賴(lài)于這些程序是否需要配置文件。在嵌入式系統(tǒng)中,這些內(nèi)容可以大為精減。5./lib目錄 該目錄下存放共享庫(kù)和可加載(驅(qū)動(dòng)程序),共
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 肺相關(guān)健康知識(shí)培訓(xùn)課件
- 2025畢業(yè)答辯:模板36
- 美甲工藝知識(shí)培訓(xùn)課件
- 美容產(chǎn)品知識(shí)培訓(xùn)課件
- 托班安全教育:防止溺水
- 意識(shí)障礙診斷思路
- 勞務(wù)分包安全協(xié)議書(shū)范文
- 二零二五無(wú)債務(wù)離婚協(xié)議書(shū)
- 貨物運(yùn)輸保險(xiǎn)單合同
- 施工隊(duì)勞務(wù)分包合同范例
- 2025年浙江省初中名校發(fā)展共同體中考語(yǔ)文一模試卷附參考答案
- 2025年食安食品考試題及答案
- 醫(yī)院保安服務(wù)方案投標(biāo)文件(技術(shù)方案)
- 保證食品安全的規(guī)章制度清單
- 紅樓夢(mèng)專(zhuān)題元妃省親39課件
- 預(yù)防性健康檢管理制度管理辦法
- ISO50001-2018能源管理體系內(nèi)審計(jì)劃、記錄及報(bào)告
- 初中人教版七年級(jí)上冊(cè)音樂(lè)5.2甘美蘭(22張)ppt課件
- 工程土石方挖運(yùn)機(jī)械租賃合同
- 新版GMP批生產(chǎn)記錄模板(2013年10月)
- ST-結(jié)構(gòu)文本-PLC編程語(yǔ)言-教程
評(píng)論
0/150
提交評(píng)論