對于嵌入式系統(tǒng),Bootloader是基于特定硬件平臺來實現(xiàn)的。因此,幾乎不可能為所有的嵌入式系統(tǒng)建立一個通用的Bootloader,不同的處理器架構(gòu)都有不同的Bootloader。Bootloader不但依賴于CPU的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級設(shè)備的配置。對于2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運行在一塊板子上的Bootloader程序也能運行在另一塊板子上,一般也都需要修改Bootloader的源程序。
反過來,大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支持多種體系結(jié)構(gòu)的嵌入式系統(tǒng)。例如,U-Boot就同時支持PowerPC、ARM、MIPS和X86等體系結(jié)構(gòu),支持的板子有上百種。通常,它們都能夠自動從存儲介質(zhì)上啟動,都能夠引導操作系統(tǒng)啟動,并且大部分都可以支持串口和以太網(wǎng)接口。
嵌入式系統(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。
表列出了Linux的開放源碼引導程序及其支持的體系結(jié)構(gòu)。表中給出了X86 ARM PowerPC體系結(jié)構(gòu)的常用引導程序,并且注明了每一種引導程序是不是“Monitor”。
表 開放源碼的Linux 引導程序
對于每種體系結(jié)構(gòu),都有一系列開放源碼Bootloader可以選用。
。1)X86