




已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1,第4章,Linux啟動代碼編程實驗,2,BootLoader的基本概念,BootLoader是系統(tǒng)加電后運行的第一段軟件代碼。 嵌入式系統(tǒng)中,整個系統(tǒng)的加載啟動任務完全由 BootLoader來完成。比如在一個基于ARM920T core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址0x00000000開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。 簡單地說,BootLoader就是在操作系統(tǒng)內核或用戶應用程序運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核或用戶應用程序準備好正確的環(huán)境。 通常,BootLoader 是依賴于硬件而實現的,特別是在嵌入式領域,為嵌入式系統(tǒng)建立一個通用的 BootLoader 是很困難的。,3,Bootloader總結,功能 硬件初始化 引導操作系統(tǒng) 下載程序(串口、網口、USB) 燒寫flash 特征 程序復位運行入口點 通常用匯編語言+C語言編寫 代碼量較小,4,BootLoader 的移植和修改,BootLoader除了依賴于 CPU 的體系結構外,BootLoader 實際上也依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設的類型等。 對于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU而構建的,如果他們的硬件資源和配置不一致的話,要想讓運行在一塊板子上的BootLoader程序也能運行在另一塊板子上,也還是需要作一些必要的修改。,5,BootLoader 的安裝,系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先安排的地址上取指令。比如,S3C2410在復位時都從地址 0x00000000 取它的第一條指令。 嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設備(比如:ROM、EEPROM或FLASH等)被安排這個起始地址上,因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。 也就是說對于基于S3C2410的這套系統(tǒng),我們的BootLoader是從0地址開始存放的,而這塊起始地址需要采用可引導的固態(tài)存儲設備如FLASH。,6,用來控制 BootLoader 的設備或機制,串口通訊是最簡單也是最廉價的一種雙機通訊設備,所以往往在BootLoader中主機和目標機之間都通過串口建立連接,BootLoader 程序在執(zhí)行時通常會通過串口來進行 I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當然如果認為串口通訊速度不夠,也可以采用網絡或者USB通訊,那么相應的在BootLoader中就需要編寫各自的驅動。,7,Boot Loader 的操作模式,啟動加載模式:這種模式也稱為“自主“(Autonomous)模式。也即BootLoader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到RAM中運行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式。 下載模式:在這種模式下,目標機上的BootLoader將通過串口連接或網絡連接等通信手段從主機下載文件,比如:下載應用程序、數據文件、內核映像等。從主機下載的文件通常首先被BootLoader保存到目標機的RAM中,然后再被 BootLoader寫到目標機上的固態(tài)存儲設備中。BootLoader 的這種模式通常在系統(tǒng)更新時使用。工作于這種模式下的 BootLoader 通常都會向它的終端用戶提供一個簡單的命令行接口。,8,BootLoader與主機間文件傳輸的通信設備及協議,最常見的情況就是,目標機上的 BootLoader 通過串口與主機之間進行文件傳輸,傳輸可以簡單的采用直接數據收發(fā),當然在串口上也可以采用xmodemymodemzmodem 協議以及在以太網上采用TFTP協議。,9,BootLoader的主要任務與典型結構框架,從操作系統(tǒng)的角度看,BootLoader的總目標就是正確地調用內核來執(zhí)行。 大多數BootLoader都分為stage1和stage2兩大部分。 依賴于CPU體系結構的代碼,比如設備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現,以達到短小精悍的目的,也就是前面說的啟動代碼。 而stage2 則通常用C語言來實現,這樣可以實現復雜的功能,而且代碼會具有更好的可讀性和可移植性。,10,BootLoader的主要任務與典型結構框架,BootLoader的stage1通常包括以下步驟 為加載 BootLoader 的 stage2 準備 RAM 空間 拷貝 BootLoader 的 stage2 到 RAM 空間中 設置好堆棧 跳轉到 stage2 的 C 入口點 BootLoader的stage2通常包括以下步驟 初始化本階段要使用到的硬件設備 調用應用程序或啟動內核,11,Stage 1初始化流程圖,stage 1的功能: RAM初始化,設置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設置堆棧,調用Stage 2。 注意:在本階段,特別是在堆棧設置之前,進行函數調用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數據將產生不可預知的結果;,12,Stage 2,stage 2的功能: 初始化串口,顯示菜單,通過控制臺獲取用戶輸入,并執(zhí)行相應的命令操作。 stage 2的代碼通常用C語言編寫,以便于實現更復雜的功能,以及取得更好的代碼可讀性和可移植性。但是與普通C語言應用程序不同的是,在編譯和鏈接Boot Loader這樣的程序時,不能使用任何glibc庫中支持的函數。因此,從哪里跳轉進main()函數就成為需要解決的問題。直接把main()函數的起始地址作為整個第二階段執(zhí)行映像的入口點,或許是最直接的想法。 但是這樣做有兩個缺點: 無法通過main()函數傳遞函數參數; 無法處理main()函數返回的情況。 一種較為巧妙的方法是利用trampoline(彈簧床)的概念,即用匯編語言編寫一段trampoline小程序,并將這段小程序作為第二階段可執(zhí)行映像的執(zhí)行入口點??梢栽趖rampoline匯編小程序中用CPU跳轉指令跳人到main()函數中去執(zhí)行;而當main()函數返回時,CPU執(zhí)行路徑顯然會再次回到trampoline程序。簡而言之,這種方法的思想就是用這段trampoline小程序作為main()函數的外部包裹(External Wrapper)。,13,VIVI,VIVI是韓國Mizi公司開發(fā)的一種Boot Loader,適合于ARM9處理器,支持S3C2410X。本實驗系統(tǒng)采用的Boot Loader就是VIVI 同所有的Boot Loader一樣,VIVI也有兩種工作模式,即啟動加載模式和下載模式。在正常運行時,都工作在啟動加載模式。 VIVI提供了MTD(Memory Technolog Device) 通過修改代碼就可以從不同的存儲器啟動。,14,VIVI編譯及使用實驗,【實驗目的】 了解以VIVI為Boot Load的Linux系統(tǒng)。 通過實驗掌握VIVI工作原理及移植過程。 通過實驗掌握VIVI的配置、編譯、構造和使用。 【實驗設備】 硬件:EDUKIT-III實驗平臺,S3C2410核心子板,Embest JTAG仿真器套件, PC機。 軟件:Windows XP操作系統(tǒng),Cygwin Unix模擬平臺。 【實驗內容】 配置及編譯VIVI。 燒寫VIVI映像到Flash中作為Linux系統(tǒng)的Boot Loader,并運行。 【實驗原理】,15,1Boot Loader的作用 Boot Loader是嵌入式系統(tǒng)中,處理器加電復位后首先執(zhí)行的一段代碼。Boot Loader與硬件密切相關,其代碼主要由匯編語言和C語言編寫。對于不同的系統(tǒng),Boot Loader的功能有所不同,但主要作用是基本相同的,有以下幾點: 初始化CPU運行的時鐘頻率; 初始化Flash和內存的數據寬度、讀寫訪問周期和刷新周期; 初始化中斷系統(tǒng); 初始化系統(tǒng)中各種片內、片外設備和IO端口; 初始化系統(tǒng)各種運行模式下的寄存器和堆棧; 加載和引導操作系統(tǒng),16,2VIVI的啟動方式 VIVI可以從Nand Flash中啟動,也可以從Nor Flash中啟動。選擇從不同類型的Flash上啟動,其使用方法會有一些差別: 如果VIVI是燒寫到Nand Flash中的,那么VIVI將從Nand Flash啟動。由于NandFlash沒有專門的地址線,所以它在系統(tǒng)中根本就沒有地址空間(其結構是共用地址和數據總線,分時發(fā)送地址和數據),因此只適合用來存放數據,而不能夠直接在其上執(zhí)行程序指令。S3C2410專門內置了一個Nand Flash控制器,通過在芯片內設置名叫Step Stone的4 KB RAM來完成Nand Flash的啟動功能。因此,通過Nand Flash啟動的啟動代碼不能超過4KB。 如果VIVI是燒寫到Nor Flash中的,那么VIVI將從Nor Flash啟動。因為Nor Flash具有XIP特性(能夠直接在其上執(zhí)行程序指令),所以VIVI將一直在Nor Flash上運行,直到進入main()函數中的mem_map_init()函數,17,3.VIVI操作命令 Load part,param,boot,flash,bon,help 4.配置和編譯VIVI 5.燒寫VIVI映像,18,VIVI編譯及使用實驗,【實驗步驟】 復制EDUKIT-III 2410的VIVI補丁文件ViVkit2410.patch到$SOURCEDIR/patch目錄下。 運行Cygwin VIVI源代碼直接使用4.1節(jié)中介紹的代碼,并按以下命令打入補丁(P140) 編譯VIVI (在Cygwin窗口中輸入如下命令:書P140) 把編譯好的VIVI燒到實驗箱Nor Flash(0x00x20000)中 實驗箱加電運行VIVI (運行VIVI后可在超級終端上看到類似書P141的輸出結果) 復位重新運行VIVI,按非Return鍵,進入ViVi提示符后,執(zhí)行help命令,19,【實驗 過程】,運行Cygwin,20,【實驗 過程】,清除老文件,運行配置命令,21,【實驗 過程】,加載配置文件,22,【實驗 過程】,輸入已存在的配置文件名,配置文件名,23,【實驗 過程】,保存,退出,24,【實驗 過程】,運行配置命令后的結果,25,【實驗 過程】,編譯,鏈接VIVI,生成boot image文件,26,【實驗 過程】,VIVI boot image文件所在目錄,27,【實驗 過程】,連接并口線到仿真器,啟動燒錄程序,調配置文件,28,【實驗 過程】,進行設置,29,【實驗 過程】,開始燒錄,30,【實驗 過程】,連接好串口線,在PC機上啟動超級終端程序, 實驗箱加電運行VIVI,31,【實驗 過程】,復位后,重新運行VIVI,按非Return鍵,進入ViVi提示符后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45685-2025調味品生產企業(yè)質量控制與管理技術指南
- GB/T 45645.1-2025道路交通事故深度調查技術指南第1部分:總則
- GB/T 32910.6-2025數據中心資源利用第6部分:水資源使用效率
- GB/T 45711.2-2025皮革撕裂力的測定第2部分:雙邊撕裂
- 網頁設計與開發(fā)(HTML5+CSS3)- 教學大綱、授課計劃
- 心理咨詢專業(yè)教學標準(高等職業(yè)教育專科)2025修訂
- 中藥制藥專業(yè)教學標準(高等職業(yè)教育專科)2025修訂
- 2024-2025學年河北石家莊七縣高二下學期期中聯考政治試題及答案
- 2024-2025學年河北省衡水市高二下學期期中考試政治試題及答案
- 活性重質碳酸鈣行業(yè)深度研究分析報告(2024-2030版)
- 供水加壓泵站管理制度
- 保險公司保密管理制度
- 2025年執(zhí)業(yè)藥師資格證之《西藥學專業(yè)一》預測試題附答案詳解【模擬題】
- 一體化政務大數據體系建設實踐指南1.0
- 2025年湖北省高考地理試卷真題(含答案解析)
- 2025年重慶市中考歷史真題(解析版)
- 2025年四川省成都市中考語文真題(原卷版)
- 江蘇開放大學2025年春服務營銷1單項選擇題題庫
- 駕駛證a1教育考試試題及答案
- 供暖管道焊接技術培訓
- 滋補品店鋪運營方案設計
評論
0/150
提交評論