版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.引言在專用的嵌入式板子運(yùn)行GNULinux系統(tǒng)已經(jīng)變得越來(lái)越流行。一個(gè)嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€(gè)層次:1.引導(dǎo)加載程序。引導(dǎo)加載程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。2.LinuxLinux內(nèi)核。內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動(dòng)參數(shù)。3.文件系統(tǒng)。文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上文件系統(tǒng)。通常用ramdisk來(lái)作為
2、rootfs。4.用戶應(yīng)用程序。用戶應(yīng)用程序。特定于用戶的應(yīng)用程序。有時(shí)在用戶應(yīng)用程序和內(nèi)核層之間可能還會(huì)包括一個(gè)嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI懂。引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。回憶一下PC的體系結(jié)構(gòu)我們可以知道,PC機(jī)中的引導(dǎo)加載程序由BIOS(其本質(zhì)就是一段固件程序)和位于硬盤MBR中的OSBootLoader(比如,LILO和GRUB等)一起組成。BIOS在完成硬
3、件檢測(cè)和資源分配后,將硬盤MBR中的BootLoader讀到系統(tǒng)的RAM中,然后將控制權(quán)交給OSBootLoader。BootLoader的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,也即開始啟動(dòng)操作系統(tǒng)。而在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來(lái)完成。比如在一個(gè)基于ARM7TDMIce
4、的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00000000處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。本文將從BootLoader的概念、BootLoader的主要任務(wù)、BootLoader的框架結(jié)構(gòu)以及BootLoader的安裝等四個(gè)方面來(lái)討論嵌入式系統(tǒng)的BootLoader。2.BootLoader的概念簡(jiǎn)單地說(shuō),BootLoader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們
5、可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。通常,BootLoader是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的BootLoader幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?duì)BootLoader歸納出一些通用的概念來(lái),以指導(dǎo)用戶特定的BootLoader設(shè)計(jì)與實(shí)現(xiàn)。1.BootLoader所支持的CPU和嵌入式板每種
6、不同的CPU體系結(jié)構(gòu)都有不同的BootLoader。有些BootLoader也支持多種體系結(jié)構(gòu)的CPU,比如UBoot就同時(shí)支持ARM體系結(jié)構(gòu)和MIPS體系結(jié)構(gòu)。除了依賴于CPU的體系結(jié)構(gòu)外,BootLoader實(shí)際上也依賴于具體的嵌入式板級(jí)設(shè)備的配置。這也就是說(shuō),對(duì)于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構(gòu)建的,要想讓運(yùn)行在一塊板子上的BootLoader程序也能運(yùn)行在另一塊板子上,通常也都需要修改BootLoader的
7、源程序。次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用BootLoader的這種工作模式。工作于這種模式下的BootLoader通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。像Blob或UBoot等這樣功能強(qiáng)大的BootLoader通常同時(shí)支持這兩種工作模式,而且允許用戶在這兩種工作模式之間進(jìn)行切換。比如,Blob在啟動(dòng)時(shí)處于正常的啟動(dòng)加載模式,但是它會(huì)延時(shí)10秒等待終端用戶按下任意鍵而將blob切換到下載模式。如果在1
8、0秒內(nèi)沒有用戶按鍵,則blob繼續(xù)啟動(dòng)Linux內(nèi)核。6.BootLoader與主機(jī)之間進(jìn)行文件傳輸所用的通信設(shè)備及協(xié)議最常見的情況就是,目標(biāo)機(jī)上的BootLoader通過串口與主機(jī)之間進(jìn)行文件傳輸,傳輸協(xié)議通常是xmodem/ymodem/zmodem協(xié)議中的一種。但是,串口傳輸?shù)乃俣仁怯邢薜?,因此通過以太網(wǎng)連接并借助TFTP協(xié)議來(lái)下載文件是個(gè)更好的選擇。此外,在論及這個(gè)話題時(shí),主機(jī)方所用的軟件也要考慮。比如,在通過以太網(wǎng)連接和TFT
9、P協(xié)議來(lái)下載文件時(shí),主機(jī)方必須有一個(gè)軟件用來(lái)的提供TFTP服務(wù)。在討論了BootLoader的上述概念后,下面我們來(lái)具體看看BootLoader的應(yīng)該完成哪些任務(wù)。3.BootLoader的主要任務(wù)與典型結(jié)構(gòu)框架在繼續(xù)本節(jié)的討論之前,首先我們做一個(gè)假定,那就是:假定內(nèi)核映像與根文件系統(tǒng)映像都被加載到RAM中運(yùn)行。之所以提出這樣一個(gè)假設(shè)前提是因?yàn)椋谇度胧较到y(tǒng)中內(nèi)核映像與根文件系統(tǒng)映像也可以直接在ROM或Flash這樣的固態(tài)存儲(chǔ)設(shè)備中直接
10、運(yùn)行。但這種做法無(wú)疑是以運(yùn)行速度的犧牲為代價(jià)的。從操作系統(tǒng)的角度看,BootLoader的總目標(biāo)就是正確地調(diào)用內(nèi)核來(lái)執(zhí)行。另外,由于BootLoader的實(shí)現(xiàn)依賴于CPU的體系結(jié)構(gòu),因此大多數(shù)BootLoader都分為stage1和stage2兩大部分。依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語(yǔ)言來(lái)實(shí)現(xiàn),以達(dá)到短小精悍的目的。而stage2則通常用C語(yǔ)言來(lái)實(shí)現(xiàn),這樣可以實(shí)現(xiàn)給復(fù)雜的功能
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- arduino燒錄引導(dǎo)程序詳解
- 嵌入式Linux設(shè)備驅(qū)動(dòng)程序和引導(dǎo)程序的研究.pdf
- 基于CAN總線的DSP程序遠(yuǎn)程加載原理研究與實(shí)現(xiàn).pdf
- 嵌入式固件二級(jí)引導(dǎo)加載及相關(guān)技術(shù)的研究與實(shí)現(xiàn).pdf
- 政府應(yīng)對(duì)突發(fā)事件的輿論引導(dǎo)程序研究.pdf
- 手機(jī)軟件開發(fā)中的程序加載方法研究及應(yīng)用.pdf
- 加載excel
- revit 2013里面用程序新建族然后加載到模型中
- Linux環(huán)境下DUET平臺(tái)引導(dǎo)程序設(shè)計(jì)與實(shí)現(xiàn).pdf
- 表格加載
- 汽車電動(dòng)液壓助力轉(zhuǎn)向系統(tǒng)和CAN通訊程序遠(yuǎn)程加載的研究.pdf
- Android系統(tǒng)啟動(dòng)和應(yīng)用程序加載加速的研究與優(yōu)化.pdf
- 分頁(yè)加載
- Cortex-A7雙核MX7D-SDB上引導(dǎo)加載系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 金屬齒板連接輕型木桁架試驗(yàn)方法及加載程序研究.pdf
- 8r6x系列燒寫引導(dǎo)及主程序方法
- 加載裝置.dwg
- 加載機(jī)構(gòu).dwg
- 基于DSP28335的程序加載和資源優(yōu)化配置的研究與實(shí)現(xiàn).pdf
- 自動(dòng)變速器標(biāo)準(zhǔn)分析及試驗(yàn)臺(tái)加載程序的開發(fā).pdf
評(píng)論
0/150
提交評(píng)論