0.Boot Loader的概念和功能
轉(zhuǎn)載:http://blog.chinaunix.net/uid-20543672-id-94371.html
1、嵌入式Linux軟件結(jié)構(gòu)與分布
在一般情況下嵌入式Linux系統(tǒng)中的軟件主要分為以下及部分:
(1)引導加載程序:其中包括內(nèi)部ROM中的固化啟動代碼和Boot Loader兩部分。
而這個內(nèi)部固化ROM是廠家在芯片生產(chǎn)時候固化的,作用基本上是引導Boot Loader。有的芯片比較復雜,比如Omap3,他在flash中沒有代碼的時候有許多啟動方式:USB、UART或以太網(wǎng)等等。而S3C24x0則很簡單,只有Norboot和Nandboot。
(2)Linux kernel 和drivers。
(3)文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設(shè)備之上的文件系統(tǒng)(EXT4、UBI、CRAMFS等等)。它是提供管理系統(tǒng)的各種配置文件以及系統(tǒng)執(zhí)行用戶應(yīng)用程序的良好運行環(huán)境的載體。
(4)應(yīng)用程序。用戶自定義的應(yīng)用程序,存放于文件系統(tǒng)之中。
在linux內(nèi)核的啟動運行除了內(nèi)核映像必須在主存的適當位置,CPU還必須具備一定的條件:
1. CPU 寄存器的設(shè)置:
R0=0;
R1=Machine ID(即Machine Type Number,定義在linux/arch/arm/tools/mach-types);
R2=內(nèi)核啟動參數(shù)在 RAM 中起始基地址;
2. CPU 模式:
必須禁止中斷(IRQs和FIQs);
CPU 必須 SVC 模式;
3. Cache 和 MMU 的設(shè)置:
MMU 必須關(guān)閉;
指令 Cache 可以打開也可以關(guān)閉;
數(shù)據(jù) Cache 必須關(guān)閉;
但是在CPU剛上電啟動的時候,一般連內(nèi)存控制器都沒有配置過,根本無法在內(nèi)存中運行程序,更不可能處在Linux內(nèi)核的啟動環(huán)境中。為了初始化CPU和其他外設(shè),使得Linux內(nèi)核可以在系統(tǒng)主存中跑起來,并讓系統(tǒng)符合Linux內(nèi)核啟動的必備條件,必須要由一個先于內(nèi)核運行的程序,他就是所謂的引導加載程序(Boot Loader)。
而Boot Loader并不是Linux才需要,是幾乎所有的運行操作系統(tǒng)的設(shè)備都具備的。我們的PC的BOIS就是Boot Loader的一部分(只是前期引導,后面一般還有外存中的各種Boot Loader),對于Linux PC來說,Boot Loader = BIOS + GRUB/LILO。
3、Boot Loader的功能和選擇
通過上面的講述,我們可以知道:bootloader是在OS內(nèi)核運行之前的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用OS內(nèi)核準備好正確的環(huán)境,最后從別處(flash/以太網(wǎng)/UART)載入內(nèi)核映像并跳到入口地址。
由于BootLoader直接操作硬件,所以她嚴重依賴于硬件,而且依據(jù)所引導的操作系統(tǒng)的不同,也有不同的選擇對于嵌入式世界中更是如此。就S3C24x0而言,如果是引導Linux,一般選用韓國的mizi公司設(shè)計的vivi或者DENX軟件工程中心的U-boot,如果是引導Win CE,就選用Eboot。如果是開發(fā)StrongARM 構(gòu)架下的LART,就可選用由Jan-Derk Bakker 和 Erik Mouw發(fā)布的Blob(Boot Loader Object)。如果是要引導eCos系統(tǒng),就可以選用同是Redhat公司開發(fā)的Redboot。
所以在嵌入式世界中建立一個通用的 BootLoader 幾乎是不可能的,而有可能的是讓一個 Boot Loader代碼支持多種不同的構(gòu)架和操作系統(tǒng),并讓她方便移植。U-boot就是支持多平臺多操作系統(tǒng)的一個杰出代表。這也是為什么我喜歡用U-boot的原因,因為如果在開發(fā)S3C2440時熟悉了U-boot,再轉(zhuǎn)到別的平臺的時候就可以很快地完成這個平臺下的U-boot移植,而且U-boot的代碼結(jié)構(gòu)越來越合理,對于新功能的添加也十分容易。
值得一提的是國內(nèi)的一個開源項目maxwit中的g-bios也是一個不錯的開源BootLoader,同樣支持多平臺。
轉(zhuǎn)載于:https://www.cnblogs.com/Ocean-Star/p/9236349.html
總結(jié)
以上是生活随笔為你收集整理的0.Boot Loader的概念和功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特种作业操作电工作业2021年电力电缆考
- 下一篇: 05- 基于UDS协议的故障代码状态字节