




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)的bootloaderBoot Loader 所支持的 CPU 和嵌入式板 每種不同的 CPU 體系結(jié)構(gòu)都有不同的 Boot Loader。有些 Boot Loader 也支持多種體系結(jié)構(gòu)的 CPU,比如 U-Boot 就同時(shí)支持 ARM 體系結(jié)構(gòu)和MIPS 體系結(jié)構(gòu)。除了依賴于 CPU的體系結(jié)構(gòu)外,Boot Loader 實(shí)際上也依賴于具體的嵌入式板級(jí)設(shè)備的配置。這也就是說(shuō),對(duì)于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU 而構(gòu)建的,要想讓運(yùn)行在一塊板子上的 Boot Loader 程序也能運(yùn)行在另一塊板子上,通常也都需要修改 Boot Loader 的源程序。 嵌入式 L
2、inux 系統(tǒng)的四個(gè)層次1. 引導(dǎo)加載程序。包括固化在固件(firmware)中的 boot 代碼(可選),和 Boot Loader 兩大部分。 2. Linux 內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動(dòng)參數(shù)。 3. 文件系統(tǒng)。包括根文件系統(tǒng)和建立于 Flash 內(nèi)存設(shè)備之上文件系統(tǒng)。通常用 ram disk 來(lái)作為 root fs。 4. 用戶應(yīng)用程序。特定于用戶的應(yīng)用程序。有時(shí)在用戶應(yīng)用程序和內(nèi)核層之間可能還會(huì)包括一個(gè)嵌入式圖形用戶界面。常用的嵌入式 GUI 有:MicroWindows 和 MiniGUI 懂。 系統(tǒng)的典型構(gòu)建Boot Loader 的操作模式 (Operatio
3、n Mode) 大多數(shù) Boot Loader 都包含兩種不同的操作模式:?jiǎn)?dòng)加載模式和下載模式,這種區(qū)別僅對(duì)于開發(fā)人員才有意義。但從最終用戶的角度看,Boot Loader 的作用就是用來(lái)加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式與下載工作模式的區(qū)別。啟動(dòng)加載(Boot loading)模式:這種模式也稱為自主(Autonomous)模式。也即 Boot Loader 從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Boot Loader 顯然必須工作在這種模式下。下載(
4、Downloading)模式:在這種模式下,目標(biāo)機(jī)上的 Boot Loader 將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被 Boot Loader 保存到目標(biāo)機(jī)的 RAM 中,然后再被 Boot Loader 寫到目標(biāo)機(jī)上的FLASH 類固態(tài)存儲(chǔ)設(shè)備中。Boot Loader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口Boot Loader 的
5、主要任務(wù)與典型結(jié)構(gòu)框架假定內(nèi)核映像與根文件系統(tǒng)映像都被加載到 RAM 中運(yùn)行。之所以提出這樣一個(gè)假設(shè)前提是因?yàn)?,在嵌入式系統(tǒng)中內(nèi)核映像與根文件系統(tǒng)映像也可以直接在 ROM 或 Flash 這樣的固態(tài)存儲(chǔ)設(shè)備中直接運(yùn)行。但這種做法無(wú)疑是以運(yùn)行速度的犧牲為代價(jià)的。從操作系統(tǒng)的角度看,Boot Loader 的總目標(biāo)就是正確地調(diào)用內(nèi)核來(lái)執(zhí)行。 由于 Boot Loader 的實(shí)現(xiàn)依賴于 CPU 的體系結(jié)構(gòu),因此大多數(shù) Boot Loader 都分為 stage1 和 stage2 兩大部分。依賴于 CPU 體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語(yǔ)言來(lái)實(shí)現(xiàn)
6、,以達(dá)到短小精悍的目的。而 stage2 則通常用C語(yǔ)言來(lái)實(shí)現(xiàn),這樣可以實(shí)現(xiàn)給復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和可移植性。 Boot Loader 的 stage1 通常包括以下步驟(以執(zhí)行的先后順序):硬件設(shè)備初始化。為加載 Boot Loader 的 stage2 準(zhǔn)備 RAM 空間。拷貝 Boot Loader 的 stage2 到 RAM 空間中。設(shè)置好堆棧。跳轉(zhuǎn)到 stage2 的 C 入口點(diǎn)。Boot Loader 的 stage2 通常包括以下步驟(以執(zhí)行的先后順序):初始化本階段要使用到的硬件設(shè)備。檢測(cè)系統(tǒng)內(nèi)存映射(memory map)。將 kernel 映像和根文件系
7、統(tǒng)映像從 flash 上讀到 RAM 空間中。為內(nèi)核設(shè)置啟動(dòng)參數(shù)。調(diào)用內(nèi)核。Boot Loader 的 stage1 這是 Boot Loader 一開始就執(zhí)行的操作,其目的是為 stage2 的執(zhí)行以及隨后的 kernel的執(zhí)行準(zhǔn)備好一些基本的硬件環(huán)境。它通常包括以下步驟(以執(zhí)行的先后順序): 1屏蔽所有的中斷。為中斷提供服務(wù)通常是 OS 設(shè)備驅(qū)動(dòng)程序的責(zé)任,因此在 Boot Loader 的執(zhí)行全過(guò)程中可以不必響應(yīng)任何中斷。中斷屏蔽可以通過(guò)寫 CPU 的中斷屏蔽寄存器或狀態(tài)寄存器(比如 ARM 的 CPSR 寄存器)來(lái)完成。 2設(shè)置 CPU 的速度和時(shí)鐘頻率。 3RAM 初始化。包括正確地
8、設(shè)置系統(tǒng)的內(nèi)存控制器的功能寄存器以及各內(nèi)存庫(kù)控制寄存器等。 4初始化 LED。典型地,通過(guò) GPIO 來(lái)驅(qū)動(dòng) LED,其目的是表明系統(tǒng)的狀態(tài)是 OK 還是 Error。如果板子上沒(méi)有 LED,那么也可以通過(guò)初始化 UART 向串口打印 Boot Loader 的Logo 字符信息來(lái)完成這一點(diǎn)。 5 關(guān)閉 CPU 內(nèi)部指令數(shù)據(jù) cache。第二的boot loader,可以更加形象得被稱為內(nèi)核加載程序。這個(gè)階段的任務(wù)就是加載linux內(nèi)核,以及可選的初始化內(nèi)存盤。簡(jiǎn)單說(shuō)一下bootloader的移植首先修改makefile里的交叉編譯器 設(shè)定交叉編譯器的路徑,對(duì)于arm的bootloader選用
9、arm-linux-gcc,運(yùn)行環(huán)境是在linux下主要修改的文件有include/configs/2410.h - 配置文件,大部分參數(shù)是這里配置的. board/wx/wx20/lowlevel_init.S - 內(nèi)存參數(shù)配置 cpu/s3c44b0/serial.c - 串口配置 cpu/s3c44b0/start.S - 程序入口lib_arm /armlinux比如2410.h里的(摘錄;部分)#defineCFG_LONGHELP/* undef to save memory*/#defineCFG_PROMPTARMSYS2410-B # /* Monitor Command P
10、rompt*/#defineCFG_CBSIZE256/* Console I/O Buffer Size*/#define CFG_MEMTEST_START0 x30000000/* memtest works on*/#define CFG_MEMTEST_END0 x33F00000/* 63 MB in DRAM*/#defineCFG_LOAD_ADDR0 x33000000/* default load address*/#define PHYS_FLASH_SIZE0 x00100000 /* 1MB */#define CFG_MAX_FLASH_SECT(19) /* ma
11、x number of sectors on one chip */#define CFG_ENV_ADDR(CFG_FLASH_BASE + 0 x0F0000) /* addr of environment */* #define CONFIG_BOOTARGS root=ramfs devfs=mount console=ttySAC0,115200 */#define CONFIG_BOOTARGS noinitrd root=/dev/bon/2 init=/linuxrc console=ttyS0#define CONFIG_ETHADDR08:00:3e:26:0a:5b /*
12、#define CONFIG_BOOTFILEelinos-lart */#define CONFIG_BOOTCOMMANDtftp 30007fc0 z; bootm 30007fc0 修改后重新編譯會(huì)生成u-boot.bin二進(jìn)制文件一個(gè)成功移植后的啟動(dòng)代碼:U-Boot 1.1.4 (Jan 14 2006 - 02:09:02)U-Boot code: 33F80000 - 33F9985C BSS: - 33F9D970RAM Configuration:Bank #0: 30000000 64 MBFlash: 1 MBIn: serialOut: serialErr: seri
13、alHit any key to stop autoboot: 0smdk2410= tftp TFTP from server 5; our IP address is 28 Filename zImage. Load address: 0 x 33000000 Booting image at 33000000. Image Name: linux-2.6.10 Created: 2006-01-12 20:31:21 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 900588 Bytes = 879.5 kB Load Address: 33000000 Entry Point: 30008000Verifying Checksum . OK XIP Kernel Image . OK# Transferring control to Linux (at address 30008000) .Kernel comm
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高純金屬有機(jī)化合物企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- S科技公司新生代員工離職現(xiàn)狀及對(duì)策研究
- 基因工程白介素行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 工廠建筑招標(biāo)合同范本
- 抽屜板企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 仿制藥臨床數(shù)據(jù)橋接研究行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 面向介電陶瓷的文本數(shù)據(jù)挖掘
- 培元定喘湯通過(guò)PI3K-AKT信號(hào)通路維持Th1-Th2平衡抑制哮喘炎癥反應(yīng)
- 轉(zhuǎn)讓小型儲(chǔ)罐合同范本
- 知識(shí)經(jīng)濟(jì)下的知識(shí)產(chǎn)權(quán)商業(yè)化案例研究
- 語(yǔ)言學(xué)綱要(新)課件
- 心理評(píng)估與診斷簡(jiǎn)介課件
- 移動(dòng)式壓力容器充裝復(fù)審換證考試重點(diǎn)題庫(kù)(180題)
- 小班安全《湯姆走丟了》PPT課件教案反思微視頻
- 作物栽培學(xué)課件棉花
- 最新小學(xué)二年級(jí)口算及豎式計(jì)算練習(xí)題
- 生產(chǎn)與運(yùn)作管理-陳榮秋
- 金雞冠的公雞繪本課件
- 日影朝向及長(zhǎng)短
- 沙盤游戲治療(課堂PPT)
- (完整版)學(xué)生的自我評(píng)價(jià)的表格
評(píng)論
0/150
提交評(píng)論