什么是Bootloader
時間:2018-12-13 來源:華清遠(yuan)見
1、概念
簡而言之即在(zai)具有操(cao)作系統(Linux內核)的嵌入(ru)式設備啟(qi)動(dong)操(cao)作系統啟(qi)動(dong)前運行的一(yi)段引導程序。
2、功能
(1)初(chu)始(shi)化(hua)硬件設備
(2)建立內(nei)存空(kong)間的(de)映射圖
(3)完成內核的加載,為內核設置啟動(dong)參(can)數
從而準備好一(yi)個適合操作系統(tong)運(yun)行(xing)的軟硬件(jian)環境。
3、bootLoader程序結構框架
嵌(qian)入式系統中的(de)(de)(de)boot Loader 的(de)(de)(de)實(shi)現(xian)完(wan)全依(yi)賴(lai)(lai)于 CPU 的(de)(de)(de)體系結構(gou),因(yin)此大(da)多數 Boot Loader 都分(fen)為第(di)一階段和第(di)二階段兩(liang)大(da)部(bu)分(fen),依(yi)賴(lai)(lai)于CPU體系結構(gou)的(de)(de)(de)代碼(ma)(ma),比如設(she)備初始化(hua)代碼(ma)(ma)等,通常都放(fang)在階段1中,而(er)且(qie)通常都用(yong)(yong)匯編語言(yan)來實(shi)現(xian),以達到短小精悍的(de)(de)(de)目的(de)(de)(de)。而(er)階段2 則通常用(yong)(yong)C語言(yan)來實(shi)現(xian),這樣可以實(shi)現(xian)一些復雜的(de)(de)(de)功能,而(er)且(qie)代碼(ma)(ma)會具有更好的(de)(de)(de)可讀性和可移植性。
(1)、Boot Loader 的階段1通常主要包括以下(xia)步驟:
硬(ying)件設備(bei)初始化;
拷貝Boot Loader的(de)程序(xu)到(dao)RAM空(kong)間(jian)中(zhong);
設置好堆(dui)棧;
跳轉(zhuan)到階段2的(de)C入口點。
(2)、Boot Loader的階段2通常(chang)主要包括以下(xia)步驟(zou):
初始化本階(jie)段要使(shi)用到的硬件設備;
系統內存映(ying)射(memory map);
將kernel映像和根文件系(xi)統映像從(cong)Flash讀到RAM空間中(zhong);
為內核設置啟動參數;
調用內核。
3、常見的(de)BootLoader
Redboot:
Redboot是(shi)(shi)Redhat公司隨eCos發布的一個BOOT方案,是(shi)(shi)一個開源項目。
U-Boot:
U-Boot是由開源項目PPCBoot發展起來的,ARMboot并入(ru)了(le)PPCBoot,和其他一(yi)些(xie)arch的Loader合稱U-Boot。2002年12月17日(ri)第一(yi)個版本U-Boot-0.2.0發布,同時(shi)PPCBoot和ARMboot停止維護。
Bootldr:
Bootldr是(shi)康(kang)柏(Compaq)公司(si)發布的,類似(si)于compaq iPAQ Pocket PC,支持SA1100芯(xin)片。它(ta)被(bei)推(tui)薦用來引導Llinux,支持串口Y-modem協議以及jffs文件系統。
Blob:
Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw發布的,是專門為StrongARM 構架下的LART設計的Boot Loader。
4、u-boot的啟動(dong)流(liu)程及典型操作系統(tong)的啟動(dong)流(liu)程


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