




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 BootLoaderBootLoader第5章本章結構本章結構BootLoader簡介簡介 BootLoaderU-Boot分析分析BootLoader的概念的概念常用常用BootLoader介紹介紹BootLoader的結構和啟動過程的結構和啟動過程5-1 BootLoader 的概念的概念Boot Loader 就是在操作系統內核運行之前運行的一就是在操作系統內核運行之前運行的一段小程序段小程序目的目的:為最終調用操作系統內核準備好正確的環境為最終調用操作系統內核準備好正確的環境初始化硬件設備初始化硬件設備建立內存空間的映射圖建立內存空間的映射圖特點特點: Boot Loader 是嚴重
2、地依賴于硬件而實現的是嚴重地依賴于硬件而實現的因此,在嵌入式世界里建立一個通用的因此,在嵌入式世界里建立一個通用的 Boot Loader 幾乎是不可能的。盡管如此,我們仍然可以對幾乎是不可能的。盡管如此,我們仍然可以對 Boot Loader 歸納出一些通用的概念來,以指導用戶特定的歸納出一些通用的概念來,以指導用戶特定的 Boot Loader 設計與實現。設計與實現。5-1-1BootLoader操作模式操作模式大多數 Boot Loader 都包含兩種不同的操作模式:啟動加載(啟動加載(Boot loading)模式:)模式:這種模式也稱為自主(Autonomous)模式。也即 Boo
3、t Loader 從目標機上的某個固態存儲設備上將操作系統加載到 RAM 中運行,整個過程并沒有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產品發布的時侯,Boot Loader 顯然必須工作在這種模式下 下載(下載(Downloading)模式:)模式:在這種模式下,目標機上的 Boot Loader 將通過串口連接或網絡連接等通信手段從主機(Host)下載文件,比如:下載內核映像和根文件系統映像等。從主機下載的文件通常首先被 Boot Loader 保存到目標機的 RAM 中,然后再被 Boot Loader 寫到目標機上的FLASH 類固態存儲設備中。Bo
4、ot Loader 的這種模式通常在第一次安裝內核與根文件系統時被使用;此外,以后的系統更新也會使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會向它的終端用戶提供一個簡單的命令行接口。 5-1-1BootLoader的位置的位置系統啟動代碼包括固化在固件(firmware)中的 boot 代碼(可選),和 Boot Loader 兩大部分。引導加載程序是系統加電后運行的第一段軟件代碼。回憶一下 PC 的體系結構,PC 機中的引導加載程序由 BIOS(其本質就是一段固件程序)和位于硬盤 MBR 中的 OS Boot Loader(比如,LILO
5、和 GRUB 等)一起組成BIOS 在完成硬件檢測和資源分配后,將硬盤 MBR 中的 Boot Loader 讀到系統的 RAM 中,然后將控制權交給 OS Boot Loader。Boot Loader 的主要運行任務就是將內核映象從硬盤上讀到 RAM 中,然后跳轉到內核的入口點去運行,也即開始啟動操作系統。 5-1-1BootLoader的位置的位置而在嵌入式系統中,通常并沒有像 BIOS 那樣的固件程序(注,有的嵌入式 CPU 也會內嵌一段短小的啟動程序),因此整個系統的加載啟動任務就完全由 Boot Loader 來完成。比如在一個基于 ARM的嵌入式系統中,系統在上電或復位時通常都從
6、地址 0 x00000000 處開始執行,而在這個地址處安排的通常就是系統的 Boot Loader 程序。 嵌入式Linux系統從軟件的角度看通常可以分為4個層次:引導加載程序。Linux 內核。根文件系統。用戶應用程序。5-1-2嵌入式嵌入式Linux系統典型分區結構系統典型分區結構每種不同的 CPU 體系結構都有不同的 Boot Loader。有些 Boot Loader 也支持多種體系結構的 CPU,比如 U-Boot 就同時支持 ARM 體系結構和MIPS 體系結構。除了依賴于 CPU 的體系結構外,Boot Loader 實際上也依賴于具體的嵌入式板級設備的配置。這也就是說,對于兩
7、塊不同的嵌入式板而言,即使它們是基于同一種 CPU 而構建的,要想讓運行在一塊板子上的 Boot Loader 程序也能運行在另一塊板子上,通常也都需要修改 Boot Loader 的源程序。 系統加電或復位后,所有的 CPU 通常都從某個由 CPU 制造商預先安排的地址上取指令。比如,基于 ARM 的 CPU 在復位時通常都從地址 0 x00000000 取它的第一條指令。而基于 CPU 構建的嵌入式系統通常都有某種類型的固態存儲設備(比如:ROM、EEPROM 或 FLASH 等)被映射到這個預先安排的地址上。因此在系統加電后,CPU 將首先執行 Boot Loader 程序。 5-1-2
8、BootLoader的兩個階段的兩個階段 BootLoader第一階段的功能硬件設備初始化。為加載Bootloader的第二階段代碼準備RAM空間。 -復制Bootloader的第二階段代碼到RAM空間中。設置好棧。跳轉到第二階段代碼的C入口點。5-1-2BootLoader的兩個階段的兩個階段 BootLoader第二階段的功能初始化本階段要使用到的硬件設備。檢測系統內存映射(memory map)。將內核映象和根文件系統映象從Flash上讀到RAM空間中。為內核設置啟動參數。調用內核。5-1-2BootLoader與內核的交互與內核的交互 Bootloader與內核的交互是單向的,與內核的
9、交互是單向的,Bootloader將各類將各類參數傳給內核。由于它們不能同時運行,傳遞辦法只有參數傳給內核。由于它們不能同時運行,傳遞辦法只有一個:一個:Bootloader將參數放在某個約定的地方之后,再將參數放在某個約定的地方之后,再啟動內核,內核啟動后從這個地方獲得參數。啟動內核,內核啟動后從這個地方獲得參數。 標記列表標記列表以標記ATAG_CORE開始,以標記ATAG_NONE結束。 標記的數據結構為tag,它由一個tag_header結構和一個聯合(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標志列表標志列表設置標記設置標記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標志
11、列表標志列表設置內存標記設置內存標記設置標記設置標記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磁盤引導程序是否否GRUB否GNU的LILO替代程序是否否Loadlin否從DOS引導Linux是否否ROLO否從ROM引導Linux而不需要BIOS是否否Etherboot否通過以太網啟動Linux系統的固件是否否LinuxBIOS否完全替代BUIS的Linux引導程序是否否BLOB否LART等硬件平臺的引導程序否是否U-boot是通用引導程序是是是RedBoot是基于eCos的引導程序是是是5-2 -1U-Boot工程簡介工程簡介U-Boot,全稱為Universal Boot Loader,即通用Bootloader,是遵循GPL條款的開放代碼項目。“通用”有兩層含義:可
13、以引導多種操作系統支持多種架構的CPU。它支持如下操作系統:Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等支持如下架構的CPU:PowerPC、MIPS、x86、ARM、NIOS、XScale等。獲取U-Boot源碼http:/ 5-2-2U-Boot源碼結構源碼結構U-Boot-1.1.6根目錄下共有26個子目錄,可以分為4類。(1)平臺相關的或開發板相關的。(2)通用的函數。(3)通用的設備驅動程序。(4)U-Boot工具、示例程序、文檔。配置生成U-bootmake _configmake allU-Boot.bin:二進制可執行文件,它就是可以
14、直接燒入ROM、NOR Flash的文件。U-Boot:ELF格式的可執行文件。U-Boot.srec:Motorola S-Record格式的可執行文件。5-2-2U-Boot源碼結構源碼結構5-2-3U-Boot的常用命令的常用命令幫助命令help下載命令tftpboot命令使用TFTP協議從服務器下載文件nfs命令使用NFS協議下載文件help 命令名,命令名, 比如:比如: help bootmtftpboot loadAddress bootfilenamenfs 1oadAddresshost ip addr:bootfilename5-2-3U-Boot的常用命令的常用命令Nan
15、d Flash操作命令環境變量命令“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”命令打印全部環境變量“setenv name value”設置名字為 name的環境變量的值為value。“setenv name”刪除名字為name的環境變量“s
16、aveenv”將更改后的所有環境變量寫入Nand Flash中5-2-3U-Boot的常用命令的常用命令啟動命令“bootm addrarg” 命令啟動存放在地址adds處的U-Boot格式的映象文件“go addrarg” 啟動存放在地址addr處的二進制文件“nbootloadAddr dev offset” 命令將NAND Flash設備dev上偏移地址off處的映象文件復制到內存loadAddr處,然后,如果環境變量autostart的值為“yes”,就啟動這個映象5-2-3U-Boot命令使用實例命令使用實例制作內核鏡像文件燒寫內核鏡像文件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命令使用實例命令使用實例燒寫yaffs文件系統鏡像燒寫jffs2文件系統鏡像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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣告學專業考試試卷及答案
- 紅色鄉村規劃設計方案
- 結構設計基礎培訓
- 疾病健康教育宣傳
- 食品廠衛生安全管理體系
- 精神衛生護理教育
- T/TJJG 202-2020農村生活污水分別排入A/B/C級景觀河道污染物排放標準
- 夏日飲食衛生健康管理要點
- 貴州省六盤水2022年九年級《物理》上學期期末試題與參考答案
- 大學VI設計手冊編制規范
- 免疫學實驗技術智慧樹知到期末考試答案章節答案2024年哈爾濱醫科大學大慶校區
- 2024年福建省泉州市惠安縣綜治網格員招聘173人歷年高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 《聚落與環境》名師課件
- 《城軌通信信號基礎設備應》課件-FTGS軌道電路
- 浙江省寧波市鎮海區人教PEP版2022年小學畢業考試英語試卷【含答案】
- 中班語言《傘》課件
- 心悸-《中醫內科學》教案
- 營區物業服務營區物業服務保密措施
- 托槽粘結醫學課件
- 藍曬創作方案
- 醫院智慧后勤管理平臺建設規劃方案
評論
0/150
提交評論