




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)的Boot Loader技術(shù)陳文智浙江大學(xué)計(jì)算機(jī)學(xué)院2005年5月1內(nèi)容提要要1.Boot Loader程序序的基本本概念2.Boot Loader的典典型結(jié)構(gòu)構(gòu)框架3.Boot Loader實(shí)驗(yàn)驗(yàn)實(shí)驗(yàn)一Boot Loader應(yīng)用實(shí)驗(yàn)驗(yàn)實(shí)驗(yàn)二U-BOOT的分析析和移植植21.Boot Loader程序序的基本本概念Boot Loader就是是在操作作系統(tǒng)內(nèi)內(nèi)核運(yùn)行行之前運(yùn)運(yùn)行的一一段小程程序初始化硬硬件設(shè)備備和建立立內(nèi)存空空間的映映射圖將系統(tǒng)的的軟硬件件環(huán)境帶帶到一個(gè)個(gè)合適的的狀態(tài),以便為為最終調(diào)調(diào)用操作作系統(tǒng)內(nèi)內(nèi)核準(zhǔn)備備好正確確的環(huán)境境系統(tǒng)的Boot Loader程序序通常安安排在
2、地地址0 x00000000處處3Boot Loader所支支持的硬硬件環(huán)境境每種不同同的CPU體系系結(jié)構(gòu)都都有不同同的BootLoaderBoot Loader的安安裝地址址Boot Loader相關(guān)關(guān)的設(shè)備備和機(jī)制制主機(jī)和目目標(biāo)機(jī)之之間一般般通過(guò)串串口建立立連接Boot Loader的啟啟動(dòng)過(guò)程程4Boot Loader的操操作模式式啟動(dòng)加載載模式下載模式式Boot Loader與主主機(jī)之間間的通信信設(shè)備及及協(xié)議52.Boot Loader的典典型結(jié)構(gòu)構(gòu)框架操作系統(tǒng)統(tǒng)的角度度看,Boot Loader的總總目標(biāo)就就是正確確地調(diào)用用內(nèi)核來(lái)來(lái)執(zhí)行大多數(shù)Boot Loader都分分為階段段1和階
3、階段2兩兩大部分分階段1實(shí)實(shí)現(xiàn)依賴(lài)賴(lài)于CPU體系系結(jié)構(gòu)的的代碼階段2實(shí)實(shí)現(xiàn)一些些復(fù)雜的的功能62.1BootLoader階階段1介介紹Boot Loader的的階段1通常包包括以下下步驟:1)硬件件設(shè)備初初始化。屏蔽所有有的中斷斷設(shè)置CPU的速速度和時(shí)時(shí)鐘頻率率RAM初初始化初始化LED關(guān)閉CPU內(nèi)部部指令數(shù)據(jù)Cache72)為加加載階段段2準(zhǔn)備備RAM空間除了階段段2可執(zhí)執(zhí)行映象象的大小小外,還還必須把把堆??湛臻g也考考慮進(jìn)來(lái)來(lái)必須確保保所安排排的地址址范圍的的的確確確是可讀讀寫(xiě)的RAM空空間83)拷貝貝階段2到RAM中4)設(shè)置置堆棧指指針sp5)跳轉(zhuǎn)轉(zhuǎn)到階段段2的C入口點(diǎn)點(diǎn)Boot Loa
4、der的的 階段段2可可執(zhí)行映映象剛被被拷貝到到 RAM空空間時(shí)的的系統(tǒng)內(nèi)內(nèi)存布局局,如下下圖:9102.2BootLoader階階段2介介紹1)初始始化本階階段要使使用到的的硬件設(shè)設(shè)備初始化至至少一個(gè)個(gè)串口,以便和和終端用用戶(hù)進(jìn)行行I/O輸出信信息初始化計(jì)計(jì)時(shí)器等等112)檢測(cè)測(cè)系統(tǒng)的的內(nèi)存映映射內(nèi)存映射射的描述述可以用如如下數(shù)據(jù)據(jù)結(jié)構(gòu)來(lái)來(lái)描述RAM地地址空間間中的一一段連續(xù)續(xù)的地址址范圍: 內(nèi)存映射射的檢測(cè)測(cè)typedef struct memory_area_struct u32 start; /* 內(nèi)存空間的基址 */u32 size; /* 內(nèi)存空間的大小 */int used; m
5、emory_area_t;123)加載載內(nèi)核映映像和根根文件系系統(tǒng)映像像規(guī)劃內(nèi)存存占用的的布局內(nèi)核映像像所占用用的內(nèi)存存范圍根文件系系統(tǒng)所占占用的內(nèi)內(nèi)存范圍圍從Flash上上拷貝134)設(shè)置置內(nèi)核的的啟動(dòng)參參數(shù)標(biāo)記列表表(taggedlist)的形形式來(lái)傳傳遞啟動(dòng)動(dòng)參數(shù),啟動(dòng)參參數(shù)標(biāo)記記列表以以標(biāo)記ATAG_CORE開(kāi)開(kāi)始,以以標(biāo)記ATAG_NONE結(jié)結(jié)束嵌入式Linux系統(tǒng)統(tǒng)中,通通常需要要由BootLoader設(shè)置的的常見(jiàn)啟啟動(dòng)參數(shù)數(shù)有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD14例:設(shè)置置ATAG_CORE的代碼碼如
6、下:params = (struct tag *)BOOT_PARAMS;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);BOOT_PARAMS表表示內(nèi)核核啟動(dòng)參參數(shù)在內(nèi)內(nèi)存中的的起始基基地址,指針params是是一個(gè)structtag類(lèi)型的的指針。宏tag_next()將將以指向向當(dāng)前標(biāo)標(biāo)記的指指針為參參數(shù),計(jì)
7、計(jì)算出當(dāng)當(dāng)前標(biāo)記記的下一一個(gè)標(biāo)記記的起始始地址155)調(diào)用用內(nèi)核CPU寄寄存器的的設(shè)置:R00;R1機(jī)機(jī)器類(lèi)型型ID;關(guān)于機(jī)機(jī)器類(lèi)型型號(hào),可可以參見(jiàn)見(jiàn):linux/arch/arm/tools/mach-types。R2啟啟動(dòng)參數(shù)數(shù)標(biāo)記列列表在RAM中中起始基基地址;CPU模模式:必須禁止止中斷(IRQs和FIQs);CPU必必須SVC模式式;Cache和MMU的的設(shè)置:MMU必必須關(guān)閉閉;指令Cache可以打打開(kāi)也可可以關(guān)閉閉;數(shù)據(jù)Cache必須關(guān)關(guān)閉;162.3關(guān)關(guān)于串串口終端端向串口終終端打印印信息也也是一個(gè)個(gè)非常重重要而又又有效的的調(diào)試手手段如果碰到到串口終終端顯示示亂碼或或根本沒(méi)沒(méi)有
8、顯示示的問(wèn)題題,可能能是因?yàn)闉椋築oot Loader對(duì)對(duì)串口的的初始化化設(shè)置不不正確運(yùn)行在host 端的的終端仿仿真程序序?qū)Υ诳诘脑O(shè)置置不正確確17Boot Loader啟啟動(dòng)內(nèi)核核后卻無(wú)無(wú)法看到到內(nèi)核的的啟動(dòng)輸輸出信息息:確認(rèn)內(nèi)核核在編譯譯時(shí)是否否配置了了對(duì)串口口終端的的支持,并配置置了正確確的串口口驅(qū)動(dòng)程程序Boot Loader對(duì)對(duì)串口的的初始化化設(shè)置是是否和內(nèi)內(nèi)核對(duì)串串口的初初始化設(shè)設(shè)置一致致還要確認(rèn)認(rèn) BootLoader 所用用的內(nèi)核核基地址址必須和和內(nèi)核映映像在編編譯時(shí)所所用的運(yùn)運(yùn)行基地地址一致致183.Boot Loader實(shí)驗(yàn)驗(yàn)實(shí)驗(yàn)一Boot Loader應(yīng)用實(shí)驗(yàn)驗(yàn)實(shí)驗(yàn)二
9、U-BOOT的分析析和移植植19實(shí)驗(yàn)一Boot Loader應(yīng)用實(shí)驗(yàn)驗(yàn)(1)燒寫(xiě)XsBase255的BootLoader編譯生成成XsBase255專(zhuān)用的JTAG程序Jflash-XSBase255編譯生成成XSBase的BootLoader x-boot255正確連線(xiàn)線(xiàn)利用JTAG燒寫(xiě)B(tài)ootLoaderrootXSBase JTAG# ./Jflash-XSBase255 x-boot25520實(shí)驗(yàn)一Boot Loader應(yīng)用實(shí)驗(yàn)驗(yàn)(2)熟悉使用用 Bootloader指指令,執(zhí)行各各個(gè)指令令后將其其結(jié)果與與下表的的 description進(jìn)行比比較 UsageHelpDescriptio
10、n對(duì)各個(gè)指令的簡(jiǎn)單的說(shuō)明。ArgumentsNoneExampleX-HYPER255 Help21UsageReload kernel/ramdiskDescription將Flash中紀(jì)錄的image復(fù)制到SDRAM為了復(fù)制 kernel image到 SDRAM, Autoboot時(shí)自動(dòng)執(zhí)行Arguments將Kernel flash的 kernel image復(fù)制到 SDRAM 0 xa0008000將Ramdisk flash的 ramdisk復(fù)制到 SDRAM 0 xa0800000ExampleX-HYPER255 reload kernel22UsageTftp file lo
11、ader/kernel/root/ramdiskTftp file addrDescription通過(guò)Ethernet將 Host的映像文件下載到SDRAM中ArgumentsLoader將接收到的文件儲(chǔ)存到loader的SDRAM 0 xa0000000Kernel將接收到的文件儲(chǔ)存到kernel的 SDRAM 0 xa0008000Root 將接收到的文件儲(chǔ)存到 0 xa0000000Ramdisk 將接收到的文件儲(chǔ)存到 0 xA0800000。Addr SDRAM上紀(jì)錄接收到的文件的地址ExampleX-HYPER255 tftp zImage kernelX-HYPER255 tftp
12、 zImage 0 xa000000023UsageFlash loader/kernel/root/ramdiskFlash dest src lenDescription將SDRAM上的數(shù)據(jù)儲(chǔ)存到flash的相應(yīng)地址ArgumentsLoader-將SDRAM的loader 0 xa00000000儲(chǔ)存到flash的0 x0地址Kernel-將SDRAM的Kernel 0 xa00080000儲(chǔ)存到flash的0 xc0000 地址Root-將SDRAM的root 0 xa0000000儲(chǔ)存到flash的0 x1c0000地址Ramdisk-將SDRAM的ramdisk 0 xA08000
13、00儲(chǔ)存到Flash的0 x1c00 00地址Dest-儲(chǔ)存到flash上的地址Src-原來(lái)的數(shù)據(jù)所在地址Len-復(fù)制的長(zhǎng)度ExampleXSBASE255 flash kernelXSBASE255 flash 0 xc0000 0 xa0000000 0 x10000024UsageBootBoot opt1 opt2Boot addr opt1 opt2Description驅(qū)動(dòng)SDRAM上的 kernel通過(guò)相應(yīng) arguments 驅(qū)動(dòng) 或者驅(qū)動(dòng)相應(yīng)地指的kernel。ArgumentsOpt1 kernel option(Only 0)Opt2 machine type( X-Hy
14、er255 : 200)Addr kernel image addressExampleXSBASE255 bootXSBASE255 boot 0 200XSBASE255 boot 0 xa0008000 0 20025實(shí)驗(yàn)二U-BOOT的分析析和移植植(1)U-BOOT的的特點(diǎn)在線(xiàn)讀寫(xiě)寫(xiě)Flash、DOC、IDE、IIC、EEROM、RTC支持串行行口kermit和S-record下載載代碼識(shí)別二進(jìn)進(jìn)制、ELF32、uImage格格式的Image,對(duì)對(duì)Linux引引導(dǎo)有特特別的支支持單任務(wù)軟軟件運(yùn)行行環(huán)境26腳本語(yǔ)言言支持(類(lèi)似BASH腳本)支持WatchDog、LCDlogo和狀態(tài)態(tài)指
15、示功功能等支持MTD和文文件系統(tǒng)統(tǒng)支持中斷斷詳細(xì)的開(kāi)開(kāi)發(fā)文檔檔27實(shí)驗(yàn)二U-BOOT的分析析和移植植(2)U-BOOT源源代碼結(jié)結(jié)構(gòu)board:和一些些已有開(kāi)開(kāi)發(fā)板相相關(guān)的文文件common:與體體系結(jié)構(gòu)構(gòu)無(wú)關(guān)的的文件,實(shí)現(xiàn)各各種命令令的C文文件cpu:CPU相關(guān)關(guān)文件disk:disk驅(qū)動(dòng)的的分區(qū)處處理代碼碼doc:文檔drivers:通用用設(shè)備驅(qū)驅(qū)動(dòng)程序序28fs:支支持文件件系統(tǒng)的的文件net:與網(wǎng)絡(luò)絡(luò)有關(guān)的的代碼lib_arm:與ARM體體系結(jié)構(gòu)構(gòu)相關(guān)的的代碼tools:創(chuàng)創(chuàng)建S-Record格式文文件和和U-BOOT images的工工具29實(shí)驗(yàn)二U-BOOT的分析析和移植植(3)對(duì)
16、U-BOOT的移植植建立自己己開(kāi)發(fā)板板的目錄錄和相關(guān)關(guān)文件在include/configs目錄中中添加頭頭文件xsbase.h在board/目錄下下新建xsbase目目錄,創(chuàng)創(chuàng)建如下下文件:flash.c、memsetup.S、xsbase.c、Makefile和u-boot.lds添加網(wǎng)口口設(shè)備控控制程序序,cs8900網(wǎng)口口設(shè)備的的控制程程序cs8900.c 和cs8900.h30實(shí)驗(yàn)二U-BOOT的分析析和移植植(4)修改Makefile在u-boot-1.1.2/Makefile中加入入:xsbase_config :unconfig./mkconfig$(:_config=) armpxaxsbase31實(shí)驗(yàn)二U-BOOT的分析析和移植植(5)生成目標(biāo)標(biāo)文件先運(yùn)行make clean然后運(yùn)行
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年叉車(chē)制動(dòng)分泵行業(yè)深度研究分析報(bào)告
- 彩鋼板公路護(hù)欄設(shè)備項(xiàng)目可行性研究報(bào)告
- 二零二五年度廠(chǎng)地租賃合同附租賃場(chǎng)地臨時(shí)占用許可協(xié)議
- 2025年度物流車(chē)輛運(yùn)輸與倉(cāng)儲(chǔ)管理合同樣本
- 2025年度城市軌道交通施工總承包合同(2024版)
- 2025年度建筑材料檢測(cè)與認(rèn)證服務(wù)合同
- 2025年度博物館藏品清潔保護(hù)合同
- 2025年初級(jí)農(nóng)產(chǎn)品種植基地建設(shè)與產(chǎn)品銷(xiāo)售合同
- 2025年度市政道路照明系統(tǒng)安裝施工合同范例
- 二零二五年度汽車(chē)金融擔(dān)保服務(wù)協(xié)議
- 川教版四年級(jí)《生命.生態(tài).安全》下冊(cè)全冊(cè) 課件
- 體育-水平二-三年級(jí)籃球大單元教學(xué)計(jì)劃表及原地運(yùn)球教學(xué)設(shè)計(jì)、教案
- 超齡員工用工免責(zé)協(xié)議書(shū)
- 伙食原料第二保質(zhì)期標(biāo)準(zhǔn)執(zhí)行表
- 備戰(zhàn)2025年高考數(shù)學(xué)壓軸題訓(xùn)練專(zhuān)題13三角函數(shù)(全題型壓軸題)(學(xué)生版+解析)
- 靜脈治療輸液工具的選擇2024課件
- KTV常見(jiàn)飛單方法
- 2024肥胖癥診療指南亮點(diǎn)內(nèi)容解讀課件
- 2023阿里云ACA大數(shù)據(jù)復(fù)習(xí)題題庫(kù)及答案
- (新版)山東省物流工程師職稱(chēng)考試參考試題庫(kù)-下(多選、判斷題)
- 貨運(yùn)有限公司2024年春節(jié)后復(fù)工復(fù)產(chǎn)安全生產(chǎn)方案
評(píng)論
0/150
提交評(píng)論