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


我們通常使用交叉編譯工具對BootLoader的源碼進行編譯,再通過下載器或者SD卡將boot燒寫至開發(fā)板上。

