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