




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 BootLoaderBootLoader第5章本章結(jié)構(gòu)本章結(jié)構(gòu)BootLoader簡介簡介 BootLoaderU-Boot分析分析BootLoader的概念的概念常用常用BootLoader介紹介紹BootLoader的結(jié)構(gòu)和啟動過程的結(jié)構(gòu)和啟動過程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)的因此,在嵌入式世界里建立一個通用的因此,在嵌入式世界里建立一個通用的 Boot Loader 幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫缀跏遣豢赡艿?。盡管如此,我們?nèi)匀豢梢詫?Boot Loader 歸納出一些通用的概念來,以指導(dǎo)用戶特定的歸納出一些通用的概念來,以指導(dǎo)用戶特定的 Boot Loader 設(shè)計與實(shí)現(xiàn)。設(shè)計與實(shí)現(xiàn)。5-1-1BootLoader操作模式操作模式大多數(shù) Boot Loader 都包含兩種不同的操作模式:啟動加載(啟動加載(Boot loading)模式:)模式:這種模式也稱為自主(Autonomous)模式。也即 Boo
3、t Loader 從目標(biāo)機(jī)上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個過程并沒有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時侯,Boot Loader 顯然必須工作在這種模式下 下載(下載(Downloading)模式:)模式:在這種模式下,目標(biāo)機(jī)上的 Boot Loader 將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被 Boot Loader 保存到目標(biāo)機(jī)的 RAM 中,然后再被 Boot Loader 寫到目標(biāo)機(jī)上的FLASH 類固態(tài)存儲設(shè)備中。Bo
4、ot Loader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用;此外,以后的系統(tǒng)更新也會使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會向它的終端用戶提供一個簡單的命令行接口。 5-1-1BootLoader的位置的位置系統(tǒ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 在完成硬件檢測和資源分配后,將硬盤 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)行,也即開始啟動操作系統(tǒng)。 5-1-1BootLoader的位置的位置而在嵌入式系統(tǒng)中,通常并沒有像 BIOS 那樣的固件程序(注,有的嵌入式 CPU 也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務(wù)就完全由 Boot Loader 來完成。比如在一個基于 ARM的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時通常都從
6、地址 0 x00000000 處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的 Boot Loader 程序。 嵌入式Linux系統(tǒng)從軟件的角度看通常可以分為4個層次:引導(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 就同時支持 ARM 體系結(jié)構(gòu)和MIPS 體系結(jié)構(gòu)。除了依賴于 CPU 的體系結(jié)構(gòu)外,Boot Loader 實(shí)際上也依賴于具體的嵌入式板級設(shè)備的配置。這也就是說,對于兩
7、塊不同的嵌入式板而言,即使它們是基于同一種 CPU 而構(gòu)建的,要想讓運(yùn)行在一塊板子上的 Boot Loader 程序也能運(yùn)行在另一塊板子上,通常也都需要修改 Boot Loader 的源程序。 系統(tǒng)加電或復(fù)位后,所有的 CPU 通常都從某個由 CPU 制造商預(yù)先安排的地址上取指令。比如,基于 ARM 的 CPU 在復(fù)位時通常都從地址 0 x00000000 取它的第一條指令。而基于 CPU 構(gòu)建的嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設(shè)備(比如:ROM、EEPROM 或 FLASH 等)被映射到這個預(yù)先安排的地址上。因此在系統(tǒng)加電后,CPU 將首先執(zhí)行 Boot Loader 程序。 5-1-2
8、BootLoader的兩個階段的兩個階段 BootLoader第一階段的功能硬件設(shè)備初始化。為加載Bootloader的第二階段代碼準(zhǔn)備RAM空間。 -復(fù)制Bootloader的第二階段代碼到RAM空間中。設(shè)置好棧。跳轉(zhuǎn)到第二階段代碼的C入口點(diǎn)。5-1-2BootLoader的兩個階段的兩個階段 BootLoader第二階段的功能初始化本階段要使用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射(memory map)。將內(nèi)核映象和根文件系統(tǒng)映象從Flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動參數(shù)。調(diào)用內(nèi)核。5-1-2BootLoader與內(nèi)核的交互與內(nèi)核的交互 Bootloader與內(nèi)核的交互是單向的,與內(nèi)核的
9、交互是單向的,Bootloader將各類將各類參數(shù)傳給內(nèi)核。由于它們不能同時運(yùn)行,傳遞辦法只有參數(shù)傳給內(nèi)核。由于它們不能同時運(yùn)行,傳遞辦法只有一個:一個:Bootloader將參數(shù)放在某個約定的地方之后,再將參數(shù)放在某個約定的地方之后,再啟動內(nèi)核,內(nèi)核啟動后從這個地方獲得參數(shù)。啟動內(nèi)核,內(nèi)核啟動后從這個地方獲得參數(shù)。 標(biāo)記列表標(biāo)記列表以標(biāo)記ATAG_CORE開始,以標(biāo)記ATAG_NONE結(jié)束。 標(biāo)記的數(shù)據(jù)結(jié)構(gòu)為tag,它由一個tag_header結(jié)構(gòu)和一個聯(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否通過以太網(wǎng)啟動Linux系統(tǒng)的固件是否否LinuxBIOS否完全替代BUIS的Linux引導(dǎo)程序是否否BLOB否LART等硬件平臺的引導(dǎo)程序否是否U-boot是通用引導(dǎo)程序是是是RedBoot是基于eCos的引導(dǎo)程序是是是5-2 -1U-Boot工程簡介工程簡介U-Boot,全稱為Universal Boot Loader,即通用Bootloader,是遵循GPL條款的開放代碼項(xiàng)目?!巴ㄓ谩庇袃蓪雍x:可
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個子目錄,可以分為4類。(1)平臺相關(guān)的或開發(fā)板相關(guān)的。(2)通用的函數(shù)。(3)通用的設(shè)備驅(qū)動程序。(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?!皊etenv name”刪除名字為name的環(huán)境變量“s
16、aveenv”將更改后的所有環(huán)境變量寫入Nand Flash中5-2-3U-Boot的常用命令的常用命令啟動命令“bootm addrarg” 命令啟動存放在地址adds處的U-Boot格式的映象文件“go addrarg” 啟動存放在地址addr處的二進(jìn)制文件“nbootloadAddr dev offset” 命令將NAND Flash設(shè)備dev上偏移地址off處的映象文件復(fù)制到內(nèi)存loadAddr處,然后,如果環(huán)境變量autostart的值為“yes”,就啟動這個映象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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCPITCSC 087-2021跨境電子商務(wù)知識產(chǎn)權(quán)保護(hù)指南
- T/CCOA 55-2023營養(yǎng)強(qiáng)化面條
- T/CCBD 19-2022品牌餐廳評價規(guī)范
- T/CAQI 18-2016嬰幼兒室內(nèi)空氣質(zhì)量分級
- java模塊面試題及答案
- 高考聯(lián)考試題及答案
- 人類健康與長壽秘密課件
- T/CAEPI 49-2022污水處理廠低碳運(yùn)行評價技術(shù)規(guī)范
- 人的健康課件
- 競選大隊(duì)委員演講稿
- 河砂、碎石組織供應(yīng)、運(yùn)輸、售后服務(wù)方案
- 免疫學(xué)實(shí)驗(yàn)技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年哈爾濱醫(yī)科大學(xué)大慶校區(qū)
- 2024年福建省泉州市惠安縣綜治網(wǎng)格員招聘173人歷年高頻考題難、易錯點(diǎn)模擬試題(共500題)附帶答案詳解
- 《城軌通信信號基礎(chǔ)設(shè)備應(yīng)》課件-FTGS軌道電路
- 浙江省寧波市鎮(zhèn)海區(qū)人教PEP版2022年小學(xué)畢業(yè)考試英語試卷【含答案】
- 中班語言《傘》課件
- 心悸-《中醫(yī)內(nèi)科學(xué)》教案
- 營區(qū)物業(yè)服務(wù)營區(qū)物業(yè)服務(wù)保密措施
- 托槽粘結(jié)醫(yī)學(xué)課件
- 藍(lán)曬創(chuàng)作方案
- 醫(yī)院智慧后勤管理平臺建設(shè)規(guī)劃方案
評論
0/150
提交評論