




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 BootLoaderBootLoader第5章本章結(jié)構(gòu)本章結(jié)構(gòu)BootLoader簡(jiǎn)介簡(jiǎn)介 BootLoaderU-Boot分析分析BootLoader的概念的概念常用常用BootLoader介紹介紹BootLoader的結(jié)構(gòu)和啟動(dòng)過(guò)程的結(jié)構(gòu)和啟動(dòng)過(guò)程5-1 BootLoader 的概念的概念Boot Loader 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序段小程序目的目的:為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境初始化硬件設(shè)備初始化硬件設(shè)備建立內(nèi)存空間的映射圖建立內(nèi)存空間的映射圖特點(diǎn)特點(diǎn): Boot Loader 是嚴(yán)重
2、地依賴于硬件而實(shí)現(xiàn)的是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的因此,在嵌入式世界里建立一個(gè)通用的因此,在嵌入式世界里建立一個(gè)通用的 Boot Loader 幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?duì)幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?duì) Boot Loader 歸納出一些通用的概念來(lái),以指導(dǎo)用戶特定的歸納出一些通用的概念來(lái),以指導(dǎo)用戶特定的 Boot Loader 設(shè)計(jì)與實(shí)現(xiàn)。設(shè)計(jì)與實(shí)現(xiàn)。5-1-1BootLoader操作模式操作模式大多數(shù) Boot Loader 都包含兩種不同的操作模式:?jiǎn)?dòng)加載(啟動(dòng)加載(Boot loading)模式:)模式:這種模式也稱為自主(Autonomous)模式。也即 Boo
3、t Loader 從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Boot Loader 顯然必須工作在這種模式下 下載(下載(Downloading)模式:)模式:在這種模式下,目標(biāo)機(jī)上的 Boot Loader 將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被 Boot Loader 保存到目標(biāo)機(jī)的 RAM 中,然后再被 Boot Loader 寫到目標(biāo)機(jī)上的FLASH 類固態(tài)存儲(chǔ)設(shè)備中。Bo
4、ot Loader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。 5-1-1BootLoader的位置的位置系統(tǒng)啟動(dòng)代碼包括固化在固件(firmware)中的 boot 代碼(可選),和 Boot Loader 兩大部分。引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。回憶一下 PC 的體系結(jié)構(gòu),PC 機(jī)中的引導(dǎo)加載程序由 BIOS(其本質(zhì)就是一段固件程序)和位于硬盤 MBR 中的 OS Boot Loader(比如,LILO
5、和 GRUB 等)一起組成BIOS 在完成硬件檢測(cè)和資源分配后,將硬盤 MBR 中的 Boot Loader 讀到系統(tǒng)的 RAM 中,然后將控制權(quán)交給 OS Boot Loader。Boot Loader 的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤上讀到 RAM 中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,也即開(kāi)始啟動(dòng)操作系統(tǒng)。 5-1-1BootLoader的位置的位置而在嵌入式系統(tǒng)中,通常并沒(méi)有像 BIOS 那樣的固件程序(注,有的嵌入式 CPU 也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由 Boot Loader 來(lái)完成。比如在一個(gè)基于 ARM的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從
6、地址 0 x00000000 處開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的 Boot Loader 程序。 嵌入式Linux系統(tǒng)從軟件的角度看通常可以分為4個(gè)層次:引導(dǎo)加載程序。Linux 內(nèi)核。根文件系統(tǒng)。用戶應(yīng)用程序。5-1-2嵌入式嵌入式Linux系統(tǒng)典型分區(qū)結(jié)構(gòu)系統(tǒng)典型分區(qū)結(jié)構(gòu)每種不同的 CPU 體系結(jié)構(gòu)都有不同的 Boot Loader。有些 Boot Loader 也支持多種體系結(jié)構(gòu)的 CPU,比如 U-Boot 就同時(shí)支持 ARM 體系結(jié)構(gòu)和MIPS 體系結(jié)構(gòu)。除了依賴于 CPU 的體系結(jié)構(gòu)外,Boot Loader 實(shí)際上也依賴于具體的嵌入式板級(jí)設(shè)備的配置。這也就是說(shuō),對(duì)于兩
7、塊不同的嵌入式板而言,即使它們是基于同一種 CPU 而構(gòu)建的,要想讓運(yùn)行在一塊板子上的 Boot Loader 程序也能運(yùn)行在另一塊板子上,通常也都需要修改 Boot Loader 的源程序。 系統(tǒng)加電或復(fù)位后,所有的 CPU 通常都從某個(gè)由 CPU 制造商預(yù)先安排的地址上取指令。比如,基于 ARM 的 CPU 在復(fù)位時(shí)通常都從地址 0 x00000000 取它的第一條指令。而基于 CPU 構(gòu)建的嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲(chǔ)設(shè)備(比如:ROM、EEPROM 或 FLASH 等)被映射到這個(gè)預(yù)先安排的地址上。因此在系統(tǒng)加電后,CPU 將首先執(zhí)行 Boot Loader 程序。 5-1-2
8、BootLoader的兩個(gè)階段的兩個(gè)階段 BootLoader第一階段的功能硬件設(shè)備初始化。為加載Bootloader的第二階段代碼準(zhǔn)備RAM空間。 -復(fù)制Bootloader的第二階段代碼到RAM空間中。設(shè)置好棧。跳轉(zhuǎn)到第二階段代碼的C入口點(diǎn)。5-1-2BootLoader的兩個(gè)階段的兩個(gè)階段 BootLoader第二階段的功能初始化本階段要使用到的硬件設(shè)備。檢測(cè)系統(tǒng)內(nèi)存映射(memory map)。將內(nèi)核映象和根文件系統(tǒng)映象從Flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動(dòng)參數(shù)。調(diào)用內(nèi)核。5-1-2BootLoader與內(nèi)核的交互與內(nèi)核的交互 Bootloader與內(nèi)核的交互是單向的,與內(nèi)核的
9、交互是單向的,Bootloader將各類將各類參數(shù)傳給內(nèi)核。由于它們不能同時(shí)運(yùn)行,傳遞辦法只有參數(shù)傳給內(nèi)核。由于它們不能同時(shí)運(yùn)行,傳遞辦法只有一個(gè):一個(gè):Bootloader將參數(shù)放在某個(gè)約定的地方之后,再將參數(shù)放在某個(gè)約定的地方之后,再啟動(dòng)內(nèi)核,內(nèi)核啟動(dòng)后從這個(gè)地方獲得參數(shù)。啟動(dòng)內(nèi)核,內(nèi)核啟動(dòng)后從這個(gè)地方獲得參數(shù)。 標(biāo)記列表標(biāo)記列表以標(biāo)記ATAG_CORE開(kāi)始,以標(biāo)記ATAG_NONE結(jié)束。 標(biāo)記的數(shù)據(jù)結(jié)構(gòu)為tag,它由一個(gè)tag_header結(jié)構(gòu)和一個(gè)聯(lián)合(union)組成。 struct tag_header u32 size;u32 tag;struct tag struct tag_
10、header hdr;union struct tag_corecore;struct tag_mem32mem;5-1-2標(biāo)志列表標(biāo)志列表設(shè)置標(biāo)記設(shè)置標(biāo)記ATAG_CORE params = (struct tag *) 0 x30000100;params -hdr.tag = ATAG_CORE;params -hdr.size = tag_size(tag_core);params-u.core.flags = 0;params-u.core.pagesize = 0;params-u.core.rootdev = 0;params = tag_next(params);5-1-2標(biāo)志
11、列表標(biāo)志列表設(shè)置內(nèi)存標(biāo)記設(shè)置內(nèi)存標(biāo)記設(shè)置標(biāo)記設(shè)置標(biāo)記ATAG_NONE params -hdr.tag = ATAG_MEM;params -hdr.size = tag_size(tag_mem32);params -u.mem.start = 0 x30000000;params -u.mem.size = 0 x40000000params = tag.next(params);params-hdr.tag = ATAG_NONE;params-hdr.size = 0;5-1-3常用常用BootLoader介紹介紹BootLoaderMonitor描述描述x86ARMPowerPCLI
12、LO否Linux磁盤引導(dǎo)程序是否否GRUB否GNU的LILO替代程序是否否Loadlin否從DOS引導(dǎo)Linux是否否ROLO否從ROM引導(dǎo)Linux而不需要BIOS是否否Etherboot否通過(guò)以太網(wǎng)啟動(dòng)Linux系統(tǒng)的固件是否否LinuxBIOS否完全替代BUIS的Linux引導(dǎo)程序是否否BLOB否LART等硬件平臺(tái)的引導(dǎo)程序否是否U-boot是通用引導(dǎo)程序是是是RedBoot是基于eCos的引導(dǎo)程序是是是5-2 -1U-Boot工程簡(jiǎn)介工程簡(jiǎn)介U-Boot,全稱為Universal Boot Loader,即通用Bootloader,是遵循GPL條款的開(kāi)放代碼項(xiàng)目。“通用”有兩層含義:可
13、以引導(dǎo)多種操作系統(tǒng)支持多種架構(gòu)的CPU。它支持如下操作系統(tǒng):Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等支持如下架構(gòu)的CPU:PowerPC、MIPS、x86、ARM、NIOS、XScale等。獲取U-Boot源碼http:/ 5-2-2U-Boot源碼結(jié)構(gòu)源碼結(jié)構(gòu)U-Boot-1.1.6根目錄下共有26個(gè)子目錄,可以分為4類。(1)平臺(tái)相關(guān)的或開(kāi)發(fā)板相關(guān)的。(2)通用的函數(shù)。(3)通用的設(shè)備驅(qū)動(dòng)程序。(4)U-Boot工具、示例程序、文檔。配置生成U-bootmake _configmake allU-Boot.bin:二進(jìn)制可執(zhí)行文件,它就是可以
14、直接燒入ROM、NOR Flash的文件。U-Boot:ELF格式的可執(zhí)行文件。U-Boot.srec:Motorola S-Record格式的可執(zhí)行文件。5-2-2U-Boot源碼結(jié)構(gòu)源碼結(jié)構(gòu)5-2-3U-Boot的常用命令的常用命令幫助命令help下載命令tftpboot命令使用TFTP協(xié)議從服務(wù)器下載文件nfs命令使用NFS協(xié)議下載文件help 命令名,命令名, 比如:比如: help bootmtftpboot loadAddress bootfilenamenfs 1oadAddresshost ip addr:bootfilename5-2-3U-Boot的常用命令的常用命令Nan
15、d Flash操作命令環(huán)境變量命令“nand info” 查看NAND Flash信息“nand erase clean off size”擦除NAND Flash“nand read.jffs2 addr off size”“nand write.yaffs addr off size”“nand read.yaffs addr off size”“nand write.yaffs addr off size”“printenv”命令打印全部環(huán)境變量“setenv name value”設(shè)置名字為 name的環(huán)境變量的值為value。“setenv name”刪除名字為name的環(huán)境變量“s
16、aveenv”將更改后的所有環(huán)境變量寫入Nand Flash中5-2-3U-Boot的常用命令的常用命令啟動(dòng)命令“bootm addrarg” 命令啟動(dòng)存放在地址adds處的U-Boot格式的映象文件“go addrarg” 啟動(dòng)存放在地址addr處的二進(jìn)制文件“nbootloadAddr dev offset” 命令將NAND Flash設(shè)備dev上偏移地址off處的映象文件復(fù)制到內(nèi)存loadAddr處,然后,如果環(huán)境變量autostart的值為“yes”,就啟動(dòng)這個(gè)映象5-2-3U-Boot命令使用實(shí)例命令使用實(shí)例制作內(nèi)核鏡像文件燒寫內(nèi)核鏡像文件uImagearm-linux-objcop
17、y o binary R .note R .comment S vmlinux linux.bingzip -9 linux.binmkimage A arm O linux T kernel C gzip a 0 x30008000 e 0 x30008000 n “Linux Kernel Image” d linux.bin.gz uImagetftp 0 x30000000 uImage 或 nfs 0 x30000000 01:/work/nfs_root/uImagenand erase 0 x0 0 x00200000nand write.jffs2 0 x
18、30000000 0 x0 $(filesize)5-2-3U-Boot命令使用實(shí)例命令使用實(shí)例燒寫yaffs文件系統(tǒng)鏡像燒寫jffs2文件系統(tǒng)鏡像tftp 0 x30000000 yaffs.img 或 nfs 0 x30000000 01:/ work/nfs_root/yaffs.imgnand erase 0 xA00000 0 x3600000nand write.yaffs 0 x30000000 0 xA00000 $(filesize)tftp 0 x30000000 jffs2.img 或 nfs 0 x30000000 01:/ work/nfs_root/jffs2.imgnand erase 0 x200000 0 x800000nand
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店師徒結(jié)對(duì)協(xié)議書(shū)
- 表演培訓(xùn)轉(zhuǎn)讓協(xié)議書(shū)
- 門面認(rèn)購(gòu)民間協(xié)議書(shū)
- 避險(xiǎn)搬遷補(bǔ)償協(xié)議書(shū)
- 停車場(chǎng)租戶合同協(xié)議書(shū)
- 合伙包工程合同協(xié)議書(shū)
- 便利店合作合同協(xié)議書(shū)
- Brand KPIs for second-hand apparel online shops I Need Brechó in Brazil-外文版培訓(xùn)課件(2025.2)
- 0萬(wàn)離婚補(bǔ)償協(xié)議書(shū)
- Brand KPIs for shoes Barker in the United Kingdom-外文版培訓(xùn)課件(2025.2)
- 《廣東省云浮市羅定產(chǎn)業(yè)轉(zhuǎn)移工業(yè)園地質(zhì)災(zāi)害危險(xiǎn)性評(píng)估報(bào)告pdf》
- JJF(陜) 054-2021 人體靜電綜合測(cè)試儀校準(zhǔn)規(guī)范
- 美國(guó)制造業(yè)經(jīng)濟(jì)2024年度報(bào)告-2024-12-宏觀大勢(shì)
- 《電工與電子技術(shù)》期末考試復(fù)習(xí)題庫(kù)(含答案)
- 《神華新疆能源有限責(zé)任公司瑪納斯?jié)硥螢趁旱V礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案》
- 我的家鄉(xiāng)河南許昌
- 2024年版水利水電工程標(biāo)準(zhǔn)施工招標(biāo)文件技術(shù)標(biāo)準(zhǔn)和要求(合同技術(shù)條款)
- 術(shù)后肺炎預(yù)防和控制專家共識(shí)解讀
- 《ISO標(biāo)準(zhǔn)講解a》課件
- 胸腔熱灌注治療課件
- 民航技能大賽(ARJ機(jī)型)理論考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論