在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內核運行之前運行。可以初始化硬件設備、建立內存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調用操作系統(tǒng)內核準備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務就完全由BootLoader來完成。在一個基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時通常都從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。
1.自啟動模式:在這種模式下,bootloader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到RAM中運行,整個過程并沒有用戶的介入。
2.交互模式:在這種模式下,目標機上的bootloader將通過串口或網(wǎng)絡等通行手段從開發(fā)主機(Host)上下載內核映像等到RAM中?梢员籦ootloader寫到目標機上的固態(tài)存儲媒質中,或者直接進入系統(tǒng)的引導。也可以通過串口接收用戶的命令。
第一階段:
1.初始化基本硬件;
2.把bootloader自動搬運到內存中;
3.設置堆棧指針并將bss段清零。為后續(xù)執(zhí)行代碼做準備;
第二階段:
1.初始化本階段要用到的硬件;
2.讀取環(huán)境變量;
3.啟動:
(a)自啟動模式,從Flash或通過網(wǎng)絡加載內核并執(zhí)行;
(b)下載模式,接收到用戶的命令后執(zhí)行;