




已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1,第4章,Linux啟動(dòng)代碼編程實(shí)驗(yàn),2,BootLoader的基本概念,BootLoader是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。 嵌入式系統(tǒng)中,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)完全由 BootLoader來(lái)完成。比如在一個(gè)基于ARM920T core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)都從地址0x00000000開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader程序。 簡(jiǎn)單地說(shuō),BootLoader就是在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序準(zhǔn)備好正確的環(huán)境。 通常,BootLoader 是依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式領(lǐng)域,為嵌入式系統(tǒng)建立一個(gè)通用的 BootLoader 是很困難的。,3,Bootloader總結(jié),功能 硬件初始化 引導(dǎo)操作系統(tǒng) 下載程序(串口、網(wǎng)口、USB) 燒寫(xiě)flash 特征 程序復(fù)位運(yùn)行入口點(diǎn) 通常用匯編語(yǔ)言+C語(yǔ)言編寫(xiě) 代碼量較小,4,BootLoader 的移植和修改,BootLoader除了依賴于 CPU 的體系結(jié)構(gòu)外,BootLoader 實(shí)際上也依賴于具體的嵌入式板級(jí)設(shè)備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設(shè)的類型等。 對(duì)于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU而構(gòu)建的,如果他們的硬件資源和配置不一致的話,要想讓運(yùn)行在一塊板子上的BootLoader程序也能運(yùn)行在另一塊板子上,也還是需要作一些必要的修改。,5,BootLoader 的安裝,系統(tǒng)加電或復(fù)位后,所有的CPU通常都從CPU制造商預(yù)先安排的地址上取指令。比如,S3C2410在復(fù)位時(shí)都從地址 0x00000000 取它的第一條指令。 嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲(chǔ)設(shè)備(比如:ROM、EEPROM或FLASH等)被安排這個(gè)起始地址上,因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。 也就是說(shuō)對(duì)于基于S3C2410的這套系統(tǒng),我們的BootLoader是從0地址開(kāi)始存放的,而這塊起始地址需要采用可引導(dǎo)的固態(tài)存儲(chǔ)設(shè)備如FLASH。,6,用來(lái)控制 BootLoader 的設(shè)備或機(jī)制,串口通訊是最簡(jiǎn)單也是最廉價(jià)的一種雙機(jī)通訊設(shè)備,所以往往在BootLoader中主機(jī)和目標(biāo)機(jī)之間都通過(guò)串口建立連接,BootLoader 程序在執(zhí)行時(shí)通常會(huì)通過(guò)串口來(lái)進(jìn)行 I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當(dāng)然如果認(rèn)為串口通訊速度不夠,也可以采用網(wǎng)絡(luò)或者USB通訊,那么相應(yīng)的在BootLoader中就需要編寫(xiě)各自的驅(qū)動(dòng)。,7,Boot Loader 的操作模式,啟動(dòng)加載模式:這種模式也稱為“自主“(Autonomous)模式。也即BootLoader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。這種模式是BootLoader的正常工作模式。 下載模式:在這種模式下,目標(biāo)機(jī)上的BootLoader將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件,比如:下載應(yīng)用程序、數(shù)據(jù)文件、內(nèi)核映像等。從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被 BootLoader寫(xiě)到目標(biāo)機(jī)上的固態(tài)存儲(chǔ)設(shè)備中。BootLoader 的這種模式通常在系統(tǒng)更新時(shí)使用。工作于這種模式下的 BootLoader 通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。,8,BootLoader與主機(jī)間文件傳輸?shù)耐ㄐ旁O(shè)備及協(xié)議,最常見(jiàn)的情況就是,目標(biāo)機(jī)上的 BootLoader 通過(guò)串口與主機(jī)之間進(jìn)行文件傳輸,傳輸可以簡(jiǎn)單的采用直接數(shù)據(jù)收發(fā),當(dāng)然在串口上也可以采用xmodemymodemzmodem 協(xié)議以及在以太網(wǎng)上采用TFTP協(xié)議。,9,BootLoader的主要任務(wù)與典型結(jié)構(gòu)框架,從操作系統(tǒng)的角度看,BootLoader的總目標(biāo)就是正確地調(diào)用內(nèi)核來(lái)執(zhí)行。 大多數(shù)BootLoader都分為stage1和stage2兩大部分。 依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語(yǔ)言來(lái)實(shí)現(xiàn),以達(dá)到短小精悍的目的,也就是前面說(shuō)的啟動(dòng)代碼。 而stage2 則通常用C語(yǔ)言來(lái)實(shí)現(xiàn),這樣可以實(shí)現(xiàn)復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和可移植性。,10,BootLoader的主要任務(wù)與典型結(jié)構(gòu)框架,BootLoader的stage1通常包括以下步驟 為加載 BootLoader 的 stage2 準(zhǔn)備 RAM 空間 拷貝 BootLoader 的 stage2 到 RAM 空間中 設(shè)置好堆棧 跳轉(zhuǎn)到 stage2 的 C 入口點(diǎn) BootLoader的stage2通常包括以下步驟 初始化本階段要使用到的硬件設(shè)備 調(diào)用應(yīng)用程序或啟動(dòng)內(nèi)核,11,Stage 1初始化流程圖,stage 1的功能: RAM初始化,設(shè)置各個(gè)部件的時(shí)鐘和片選,將BootLoader拷貝到RAM中,設(shè)置堆棧,調(diào)用Stage 2。 注意:在本階段,特別是在堆棧設(shè)置之前,進(jìn)行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數(shù)據(jù)將產(chǎn)生不可預(yù)知的結(jié)果;,12,Stage 2,stage 2的功能: 初始化串口,顯示菜單,通過(guò)控制臺(tái)獲取用戶輸入,并執(zhí)行相應(yīng)的命令操作。 stage 2的代碼通常用C語(yǔ)言編寫(xiě),以便于實(shí)現(xiàn)更復(fù)雜的功能,以及取得更好的代碼可讀性和可移植性。但是與普通C語(yǔ)言應(yīng)用程序不同的是,在編譯和鏈接Boot Loader這樣的程序時(shí),不能使用任何glibc庫(kù)中支持的函數(shù)。因此,從哪里跳轉(zhuǎn)進(jìn)main()函數(shù)就成為需要解決的問(wèn)題。直接把main()函數(shù)的起始地址作為整個(gè)第二階段執(zhí)行映像的入口點(diǎn),或許是最直接的想法。 但是這樣做有兩個(gè)缺點(diǎn): 無(wú)法通過(guò)main()函數(shù)傳遞函數(shù)參數(shù); 無(wú)法處理main()函數(shù)返回的情況。 一種較為巧妙的方法是利用trampoline(彈簧床)的概念,即用匯編語(yǔ)言編寫(xiě)一段trampoline小程序,并將這段小程序作為第二階段可執(zhí)行映像的執(zhí)行入口點(diǎn)??梢栽趖rampoline匯編小程序中用CPU跳轉(zhuǎn)指令跳人到main()函數(shù)中去執(zhí)行;而當(dāng)main()函數(shù)返回時(shí),CPU執(zhí)行路徑顯然會(huì)再次回到trampoline程序。簡(jiǎn)而言之,這種方法的思想就是用這段trampoline小程序作為main()函數(shù)的外部包裹(External Wrapper)。,13,VIVI,VIVI是韓國(guó)Mizi公司開(kāi)發(fā)的一種Boot Loader,適合于ARM9處理器,支持S3C2410X。本實(shí)驗(yàn)系統(tǒng)采用的Boot Loader就是VIVI 同所有的Boot Loader一樣,VIVI也有兩種工作模式,即啟動(dòng)加載模式和下載模式。在正常運(yùn)行時(shí),都工作在啟動(dòng)加載模式。 VIVI提供了MTD(Memory Technolog Device) 通過(guò)修改代碼就可以從不同的存儲(chǔ)器啟動(dòng)。,14,VIVI編譯及使用實(shí)驗(yàn),【實(shí)驗(yàn)?zāi)康摹?了解以VIVI為Boot Load的Linux系統(tǒng)。 通過(guò)實(shí)驗(yàn)掌握VIVI工作原理及移植過(guò)程。 通過(guò)實(shí)驗(yàn)掌握VIVI的配置、編譯、構(gòu)造和使用。 【實(shí)驗(yàn)設(shè)備】 硬件:EDUKIT-III實(shí)驗(yàn)平臺(tái),S3C2410核心子板,Embest JTAG仿真器套件, PC機(jī)。 軟件:Windows XP操作系統(tǒng),Cygwin Unix模擬平臺(tái)。 【實(shí)驗(yàn)內(nèi)容】 配置及編譯VIVI。 燒寫(xiě)VIVI映像到Flash中作為L(zhǎng)inux系統(tǒng)的Boot Loader,并運(yùn)行。 【實(shí)驗(yàn)原理】,15,1Boot Loader的作用 Boot Loader是嵌入式系統(tǒng)中,處理器加電復(fù)位后首先執(zhí)行的一段代碼。Boot Loader與硬件密切相關(guān),其代碼主要由匯編語(yǔ)言和C語(yǔ)言編寫(xiě)。對(duì)于不同的系統(tǒng),Boot Loader的功能有所不同,但主要作用是基本相同的,有以下幾點(diǎn): 初始化CPU運(yùn)行的時(shí)鐘頻率; 初始化Flash和內(nèi)存的數(shù)據(jù)寬度、讀寫(xiě)訪問(wèn)周期和刷新周期; 初始化中斷系統(tǒng); 初始化系統(tǒng)中各種片內(nèi)、片外設(shè)備和IO端口; 初始化系統(tǒng)各種運(yùn)行模式下的寄存器和堆棧; 加載和引導(dǎo)操作系統(tǒng),16,2VIVI的啟動(dòng)方式 VIVI可以從Nand Flash中啟動(dòng),也可以從Nor Flash中啟動(dòng)。選擇從不同類型的Flash上啟動(dòng),其使用方法會(huì)有一些差別: 如果VIVI是燒寫(xiě)到Nand Flash中的,那么VIVI將從Nand Flash啟動(dòng)。由于NandFlash沒(méi)有專門(mén)的地址線,所以它在系統(tǒng)中根本就沒(méi)有地址空間(其結(jié)構(gòu)是共用地址和數(shù)據(jù)總線,分時(shí)發(fā)送地址和數(shù)據(jù)),因此只適合用來(lái)存放數(shù)據(jù),而不能夠直接在其上執(zhí)行程序指令。S3C2410專門(mén)內(nèi)置了一個(gè)Nand Flash控制器,通過(guò)在芯片內(nèi)設(shè)置名叫Step Stone的4 KB RAM來(lái)完成Nand Flash的啟動(dòng)功能。因此,通過(guò)Nand Flash啟動(dòng)的啟動(dòng)代碼不能超過(guò)4KB。 如果VIVI是燒寫(xiě)到Nor Flash中的,那么VIVI將從Nor Flash啟動(dòng)。因?yàn)镹or Flash具有XIP特性(能夠直接在其上執(zhí)行程序指令),所以VIVI將一直在Nor Flash上運(yùn)行,直到進(jìn)入main()函數(shù)中的mem_map_init()函數(shù),17,3.VIVI操作命令 Load part,param,boot,flash,bon,help 4.配置和編譯VIVI 5.燒寫(xiě)VIVI映像,18,VIVI編譯及使用實(shí)驗(yàn),【實(shí)驗(yàn)步驟】 復(fù)制EDUKIT-III 2410的VIVI補(bǔ)丁文件ViVkit2410.patch到$SOURCEDIR/patch目錄下。 運(yùn)行Cygwin VIVI源代碼直接使用4.1節(jié)中介紹的代碼,并按以下命令打入補(bǔ)丁(P140) 編譯VIVI (在Cygwin窗口中輸入如下命令:書(shū)P140) 把編譯好的VIVI燒到實(shí)驗(yàn)箱Nor Flash(0x00x20000)中 實(shí)驗(yàn)箱加電運(yùn)行VIVI (運(yùn)行VIVI后可在超級(jí)終端上看到類似書(shū)P141的輸出結(jié)果) 復(fù)位重新運(yùn)行VIVI,按非Return鍵,進(jìn)入ViVi提示符后,執(zhí)行help命令,19,【實(shí)驗(yàn) 過(guò)程】,運(yùn)行Cygwin,20,【實(shí)驗(yàn) 過(guò)程】,清除老文件,運(yùn)行配置命令,21,【實(shí)驗(yàn) 過(guò)程】,加載配置文件,22,【實(shí)驗(yàn) 過(guò)程】,輸入已存在的配置文件名,配置文件名,23,【實(shí)驗(yàn) 過(guò)程】,保存,退出,24,【實(shí)驗(yàn) 過(guò)程】,運(yùn)行配置命令后的結(jié)果,25,【實(shí)驗(yàn) 過(guò)程】,編譯,鏈接VIVI,生成boot image文件,26,【實(shí)驗(yàn) 過(guò)程】,VIVI boot image文件所在目錄,27,【實(shí)驗(yàn) 過(guò)程】,連接并口線到仿真器,啟動(dòng)燒錄程序,調(diào)配置文件,28,【實(shí)驗(yàn) 過(guò)程】,進(jìn)行設(shè)置,29,【實(shí)驗(yàn) 過(guò)程】,開(kāi)始燒錄,30,【實(shí)驗(yàn) 過(guò)程】,連接好串口線,在PC機(jī)上啟動(dòng)超級(jí)終端程序, 實(shí)驗(yàn)箱加電運(yùn)行VIVI,31,【實(shí)驗(yàn) 過(guò)程】,復(fù)位后,重新運(yùn)行VIVI,按非Return鍵,進(jìn)入ViVi提示符后
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年外語(yǔ)水平考試復(fù)習(xí)試卷及答案
- 2025年市場(chǎng)營(yíng)銷專業(yè)知識(shí)考試試卷及答案
- 2025年生物統(tǒng)計(jì)學(xué)研究生入學(xué)考試試卷及答案
- 五金建材購(gòu)銷合同協(xié)議書(shū)范本
- 2025年可持續(xù)發(fā)展與環(huán)境保護(hù)專業(yè)綜合能力考核試題及答案
- 2025年電氣工程師考試試題及答案回顧
- 2025年服裝設(shè)計(jì)職業(yè)資格考試試卷及答案
- 2025年翻譯與跨文化交流專業(yè)知識(shí)考試題及答案
- 五年級(jí)數(shù)學(xué)拓展題編制教案
- 鄭州手房購(gòu)房合同
- 2025山東“才聚齊魯成就未來(lái)”水發(fā)集團(tuán)高校畢業(yè)招聘241人筆試參考題庫(kù)附帶答案詳解
- 2024年度江蘇省數(shù)據(jù)集團(tuán)有限公司社會(huì)招聘筆試參考題庫(kù)附帶答案詳解
- GB/T 45355-2025無(wú)壓埋地排污、排水用聚乙烯(PE)管道系統(tǒng)
- 《愛(ài)蓮說(shuō)》對(duì)比閱讀-2024-2025中考語(yǔ)文文言文閱讀專項(xiàng)訓(xùn)練(含答案)
- 國(guó)家開(kāi)放大學(xué)《Photoshop圖像處理》章節(jié)測(cè)試題參考答案
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
- 馬工程版《中國(guó)經(jīng)濟(jì)史》各章思考題答題要點(diǎn)及詳解
- GB 4806.7-2016食品安全國(guó)家標(biāo)準(zhǔn)食品接觸用塑料材料及制品
- 高壓電氣預(yù)防性試驗(yàn)方案
- 概率論與數(shù)理統(tǒng)計(jì)公式整理
- 國(guó)家標(biāo)準(zhǔn)色卡電子word圖片
評(píng)論
0/150
提交評(píng)論