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