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