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