![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bootloader的種類 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一段小程序。通過這段小程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟、硬件環(huán)境,為終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。 對(duì)于嵌入式系統(tǒng),Bootloader是基于特定硬件平臺(tái)來實(shí)現(xiàn)的,因此,幾乎不可能為所有的嵌入式系統(tǒng)都建立一個(gè)通用的Bootloader,不同的處理器架構(gòu)有不同的Bootloader。Bootloader不但依賴于CPU的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級(jí)設(shè)備的配置。對(duì)于兩塊不同的嵌入式主板而言,即使它們使用同一種處理器,要想讓運(yùn)行在一塊主板上的Bootloader程序也能運(yùn)行在另一塊主板上,一般也都需要修改Bootloader的源程序。 反過來,大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支持多種體系結(jié)構(gòu)的嵌入式系統(tǒng)。例如,U-Boot就同時(shí)支持PowerPC、ARM、MIPS和X86等體系結(jié)構(gòu),支持的主板有上百種。通常,它們都能夠自動(dòng)從存儲(chǔ)介質(zhì)上啟動(dòng),都能夠引導(dǎo)操作系統(tǒng)啟動(dòng),并且大部分都可以支持串口和以太網(wǎng)接口。 Bootloader的種類 嵌入式系統(tǒng)世界已經(jīng)有各種各樣的Bootloader,種類劃分也有多種方式。除了按照處理器體系結(jié)構(gòu)不同劃分以外,還有通過功能復(fù)雜程度進(jìn)行劃分的。 首先區(qū)分一下“Bootloader”和“Monitor”的概念。嚴(yán)格來說,“Bootloader”只是引導(dǎo)設(shè)備并且執(zhí)行主程序的固件;而“Monitor”還提供了更多的命令行接口,進(jìn)行調(diào)試、讀寫內(nèi)存、燒寫Flash、配置環(huán)境變量等。“Monitor”在嵌入式系統(tǒng)開發(fā)過程中提供很好的調(diào)試功能,開發(fā)完成以后,就完全設(shè)置成了一個(gè)“Bootloader”。所以,習(xí)慣上把它們統(tǒng)稱為Bootloader。 表1.4列出了Linux的開放源碼引導(dǎo)程序及其支持的體系結(jié)構(gòu),表中給出了X86、ARM、PowerPC體系結(jié)構(gòu)的常用引導(dǎo)程序,并且注明了每一種引導(dǎo)程序是不是“Monitor”。 表1.4 Linux的開放源碼引導(dǎo)程序
續(xù)表
1.X86 X86的工作站和服務(wù)器上一般使用LILO和GRUB。LILO曾經(jīng)是Linux發(fā)行版主流的Bootloader,不過,現(xiàn)在幾乎所有的發(fā)行版都已經(jīng)使用了GRUB,GRUB比LILO有更友好的顯示接口,使用配置也更加靈活方便。 在某些X86嵌入式單板機(jī)或者特殊設(shè)備上,會(huì)采用其他的Bootloader,如ROLO。這些Bootloader可以取代BIOS的功能,能夠從Flash中直接引導(dǎo)Linux啟動(dòng)。現(xiàn)在ROLO支持的開發(fā)板已經(jīng)并入U(xiǎn)-Boot,所以U-Boot也可以支持X86平臺(tái)。 2.ARM ARM處理器的芯片提供商很多,所以每種芯片的開發(fā)板都有自己的Bootloader,使得ARM Bootloader也變得多種多樣。早有ARM720處理器開發(fā)板的固件,之后又有了armboot、StrongARM平臺(tái)的BLOB,還有S3C2410處理器開發(fā)板上的Vivi等。現(xiàn)在armboot已經(jīng)并入了U-Boot,所以U-Boot也支持ARM/XSCALE平臺(tái)。U-Boot已經(jīng)成為ARM平臺(tái)事實(shí)上的標(biāo)準(zhǔn)Bootloader。關(guān)于ARM的學(xué)習(xí)可以參考華清遠(yuǎn)見《ARM開發(fā)培訓(xùn)班》的課程大綱。 3.PowerPC PowerPC平臺(tái)的處理器有標(biāo)準(zhǔn)的Bootloader,就是PPCBOOT。PPCBOOT在合并armboot等之后,創(chuàng)建了U-Boot,成為各種體系結(jié)構(gòu)開發(fā)板的通用引導(dǎo)程序。U-Boot仍然是PowerPC平臺(tái)的主要Bootloader。 4.MIPS MIPS公司開發(fā)的YAMON是標(biāo)準(zhǔn)的Bootloader,也有許多MIPS芯片提供商為自己的開發(fā)板寫了Bootloader。現(xiàn)在,U-Boot也已經(jīng)支持MIPS平臺(tái)。 5.SH SH平臺(tái)的標(biāo)準(zhǔn)Bootloader是sh-boot,RedBoot在這種平臺(tái)上也很好用。 6.M68K M68K平臺(tái)沒有標(biāo)準(zhǔn)的Bootloader。RedBoot能夠支持M68K系列的系統(tǒng)。 值得說明的是,RedBoot幾乎能夠支持所有的體系結(jié)構(gòu),包括MIPS、SH、M68K等。RedBoot是以eCos為基礎(chǔ),采用GPL許可的開源軟件工程,現(xiàn)在由core eCos的開發(fā)人員維護(hù),源碼下載網(wǎng)站是//www.ecoscentric.com/snapshots。RedBoot的文檔也相當(dāng)完善,有詳細(xì)的使用手冊(cè)RedBoot User’s Guide。 本文選自華清遠(yuǎn)見嵌入式培訓(xùn)教材《從實(shí)踐中學(xué)嵌入式Linux應(yīng)用程序開發(fā)》 熱點(diǎn)鏈接:
1、配置主機(jī)交叉開發(fā)環(huán)境 |