今天咱們來聊聊嵌入式系統的主要成員之一,也是系統在開機啟動時最先執行的程式,我們稱之為Boot Loader。
(X86平台上有LILO、GRUB等,ARM平台上則有U-boot、VIVI等。)
1. BootLoader的作用:
PC中的引導載入程式由BIOS和位於硬碟MBR中的OS Boot Loader一起組成。BIOS在完成硬體檢測和資源分配後,將硬碟MBR中的Boot Loader讀到系統的RAM中,然後將控制權交給OS Boot Loader。Boot Loader的主要執行任務就是將核心映像從硬碟上讀到RAM中,然後跳轉到核心的入口點去執行,也即開始啟動作業系統。
嵌入式系統中,通常並沒有像BIOS那樣的硬體程式,因此整個系統的載入啟動任務完全由BootLoader來完成。BootLoader是在作業系統執行之前執行的一段小程式。它在系統上電時開始執行,可以初始化硬體設備、建立記憶體空間的映像表,從而建立適當的系統軟硬體環境,為最終呼叫作業系統核心做準備。
BootLoader 的主要作用:
(1) 初始化硬體設備
(2) 建立記憶體空間的映射圖
(3) 完成核心的載入,為核心設定啟動參數
2. BootLoader程式結構框架:
嵌入式系統中的BootLoader的實現完全依賴於CPU的體系結構,因此大多數BootLoader都分為第一階段和第二階段兩大部分,依賴於CPU體系結構的程式,比如設備初始化程式等,通常都放在階段1中,而且通常都用組合語言來實現,以達到高效能的目的。而階段2則通常用C語言來實現,這樣可以實現一些複雜的功能,而且程式會具有更好的可讀性和可攜性。
(1) BootLoader的階段1 通常主要包括以下步驟:
@ 硬體設備初始化
@ 複製 BootLoader的程式到RAM空間中
@ 設定好堆疊
@ 跳轉到階段2的C入口點
(2) BootLoader的階段2 通常主要包括以下步驟:
@ 初始化本階段要使用到的硬體設備
@ 系統記憶體映射(memory map)
@ 將kernel映射和根檔案系統映射從Flash讀到RAM空間中
@ 為核心設定啟動參數
@ 調用核心
以上內容是從網路上收集整理而來的,如有錯誤還請各位前輩多多指導,謝謝。