1、概念
簡而言之即在具有操作系統(Linux內核)的嵌入式設備啟動操作系統啟動前運行的一段引導程序。
2、功能
(1)初始化硬件設備
(2)建立內存空間的映射圖
(3)完成內核的加載,為內核設置啟動參數
從而準備好一個適合操作系統運行的軟硬件環境。
3、bootLoader程序結構框架
嵌入式系統中的boot Loader 的實現完全依賴于 CPU 的體系結構,因此大多數 Boot Loader 都分為第一階段和第二階段兩大部分,依賴于CPU體系結構的代碼,比如設備初始化代碼等,通常都放在階段1中,而且通常都用匯編語言來實現,以達到短小精悍的目的。而階段2 則通常用C語言來實現,這樣可以實現一些復雜的功能,而且代碼會具有更好的可讀性和可移植性。
(1)、Boot Loader 的階段1通常主要包括以下步驟:
硬件設備初始化;
拷貝Boot Loader的程序到RAM空間中;
設置好堆棧;
跳轉到階段2的C入口點。
(2)、Boot Loader的階段2通常主要包括以下步驟:
初始化本階段要使用到的硬件設備;
系統內存映射(memory map);
將kernel映像和根文件系統映像從Flash讀到RAM空間中;
為內核設置啟動參數;
調用內核。
3、常見的BootLoader
Redboot:
Redboot是Redhat公司隨eCos發布的一個BOOT方案,是一個開源項目。
U-Boot:
U-Boot是由開源項目PPCBoot發展起來的,ARMboot并入了PPCBoot,和其他一些arch的Loader合稱U-Boot。2002年12月17日第一個版本U-Boot-0.2.0發布,同時PPCBoot和ARMboot停止維護。
Bootldr:
Bootldr是康柏(Compaq)公司發布的,類似于compaq iPAQ Pocket PC,支持SA1100芯片。它被推薦用來引導Llinux,支持串口Y-modem協議以及jffs文件系統。
Blob:
Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw發布的,是專門為StrongARM 構架下的LART設計的Boot Loader。
4、u-boot的啟動流程及典型操作系統的啟動流程
我們通常使用交叉編譯工具對BootLoader的源碼進行編譯,再通過下載器或者SD卡將boot燒寫至開發板上。