實(shí)驗(yàn)三+Linux+Bootloader實(shí)驗(yàn)_第1頁
實(shí)驗(yàn)三+Linux+Bootloader實(shí)驗(yàn)_第2頁
實(shí)驗(yàn)三+Linux+Bootloader實(shí)驗(yàn)_第3頁
實(shí)驗(yàn)三+Linux+Bootloader實(shí)驗(yàn)_第4頁
實(shí)驗(yàn)三+Linux+Bootloader實(shí)驗(yàn)_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)驗(yàn)三 Linux Bootloader 實(shí)驗(yàn)電子與信息學(xué)院 信息工程專業(yè) 05( 2)班伍坤怡 40 號(hào)學(xué)號(hào): 200530214330一、實(shí)驗(yàn)?zāi)康牧私?BootLoader 的基本概念和框架結(jié)構(gòu)了解 BootLoader 引導(dǎo)操作系統(tǒng)的過程掌握 bootloader 程序的編譯方法掌握 BootLoader 程序的使用方法二、實(shí)驗(yàn)內(nèi)容1、 熟悉嵌入式linux環(huán)境下的開發(fā)工具,包括 make gcc、超級(jí)終端等2、bootloader 程序的編譯和下載3、內(nèi)核和文件系統(tǒng)的編譯和下載4、實(shí)驗(yàn)分析 bootloader 程序的實(shí)現(xiàn)原理和結(jié)構(gòu)5、觀察程序運(yùn)行情況三、實(shí)驗(yàn)原理1、bootLoade

2、r 的作用PC 機(jī)中的引導(dǎo)加載程序由 BIOS 和位于硬盤 MBR 中的 OS Boot Loader 一 起組成。BIOS在完成硬件檢測和資源分配后,將硬盤MBR中的Boot Loader讀 到系統(tǒng)的 RAM 中,然后將控制權(quán)交給 OS Boot Loader。 Boot Loader 的主要運(yùn) 行任務(wù)就是將內(nèi)核映象從硬盤上讀到 RAM 中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行, 也即開始啟動(dòng)操作系統(tǒng)。嵌入式系統(tǒng)中,通常并沒有像 BIOS 那樣的固件程序,因此整個(gè)系統(tǒng)的加載 啟動(dòng)任務(wù)完全由 bootLoader 來完成。 bootloader 的主要作用:(1)、初始化硬件設(shè)備(2)、建立內(nèi)存空間的

3、映射圖(3)、完成內(nèi)核的加載,為內(nèi)核設(shè)置啟動(dòng)參數(shù)2、bootLoader程序結(jié)構(gòu)框架嵌入式系統(tǒng)中的 boot Loader 的實(shí)現(xiàn)完全依賴于 CPU 的體系結(jié)構(gòu),因此大 多數(shù) Boot Loader 都分為第一階段和第二階段兩大部分,第一階段/ 也稱FlashLoader ,運(yùn)行于 Flash 的一段 BootLoader 代碼;第二階段 / 也稱 BootLoader 運(yùn)行于RAM中的BootLoader主要代碼。這兩階段依賴于 CPU體系結(jié)構(gòu)的代碼, 比如設(shè)備初始化代碼等,通常都放在階段 1 中,而且通常都用匯編語言來實(shí)現(xiàn), 以達(dá)到短小精悍的目的。而階段 2則通常用C語言來實(shí)現(xiàn),這樣可以實(shí)

4、現(xiàn)一些 復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和可移植性。(1)、Boot Loader 的階段 1 通常主要包括以下步驟: 硬件設(shè)備初始化; 拷貝Boot Loader的程序到RAM空間中; 設(shè)置好堆棧; 跳轉(zhuǎn)到階段2的C入口點(diǎn)。(2)、Boot Loader的階段2通常主要包括以下步驟: 初始化本階段要使用到的硬件設(shè)備; 系統(tǒng)內(nèi)存映射 (memory map); 將kernel映像和根文件系統(tǒng)映像從 Flash讀到RAM空間中; 為內(nèi)核設(shè)置啟動(dòng)參數(shù); 調(diào)用內(nèi)核。3、Boot Loader程序分析( 1)階段 1 源程序分析 Start.s 源程序如下:#include #include #

5、define eth_base 0x0c00030e.section .text.start .global _start _start :start :bldefine_gpioblclock_enableblsetup_memory/元初始化ldrldrstrb start .section .text/初始化 GPIO/設(shè)置 CPU 的速度和時(shí)鐘頻率 setup static and dyn amic memory存儲(chǔ)控制單r0, =0x0a000000r1, =0xfffr1,r0 copy bootloader to dynamic memory area /制 bootloader

6、 至U SDRAMldrr0, =0x00ldrr1, =_boot_startldrr2, =_boot_end1: ldmiar0!, r3-r10stmiar1!, r3-r10cmpr1, r2blt1b/原地址/運(yùn)行地址 clear bss area /設(shè)置網(wǎng)卡基地址movr3, #0x00movr4, #0x00movr5, #0x00movr6, #0x00ldrr0,=bss_startldrr1,=bss_end1: stmiar0!, r3-r6cmpr0, r1blt1bldr r0, =eth_baseldr r1, r0 set stack point/ 設(shè)置棧指針l

7、dr sp, =stack_point-4 jump to c code / 跳轉(zhuǎn)到 main 函數(shù) ldr pc, =mainclock_enable :#if defined(CONFIG_PXA25x)ldrr0, =0x0001FFFF#elif defined(CONFIG_PXA27x)ldrr0, =0x01FFFFFF#endifldrr1, =CKENstrr0, r1movpc, lr(2) 階段 2 程序分析執(zhí)行完FlashLoader , CPU空制權(quán)移交給 BootLoader,開始執(zhí)行BootLoader的 main() 函數(shù)。uart_init();/串口初始化t

8、ime_init();/初始化定時(shí)器config_init();/ 內(nèi)存映射配置初始化 iflash_init();/flash存儲(chǔ)器初始化eth_init();/ 網(wǎng)絡(luò)初始化 autoboot_mode();/ 進(jìn)入自動(dòng)啟動(dòng)模式 進(jìn)入 bootloader 下載模式四、實(shí)驗(yàn)步驟1、在cmd中,利用tel net登陸到服務(wù)器:在dos窗口中輸入40 或者 41 。2、 在當(dāng)前目錄下創(chuàng)建一個(gè)自己的目錄,例如kun;命令:mkdir kun 。3、利用 leapftp 軟件將 bootloader 源代碼( Boot-XSBase270_0100

9、05.tar.gz ) 上傳到自己的目錄下4、 輸入 tar xzvf Boot-XSBase270_010005.tar.gz,將源代碼解壓5、 輸入 make編譯bootloader程序,成功的話則生成文件:boot,則就是 bootloader 的可執(zhí)行程序,將其下載到本地計(jì)算機(jī)待用。6、利用 FlashWrite 將 boot 文件燒寫到 Flash7、 打開程序- 附件- 通訊工具-超級(jí)終端,根據(jù)電腦的實(shí)際接口選擇Com1或 com2 端口配置為:Rate:115200 ; Data Bits:8 ; Parity:無;Stop Bits:1 ; Flow Control: 無8、打

10、開 C:Cisco TFTP ServerTFTPServer.exe 軟件,用于通過網(wǎng)線燒寫內(nèi)核 和文件系統(tǒng)。9、 此時(shí)重啟開發(fā)板電源,燒寫到開發(fā)板boot 將開始運(yùn)行,按 “空格鍵 ”進(jìn)入 bootloader 的下載模式。10、輸入“0”,回車,并根據(jù)本機(jī)的 IP 地址配置 tftp 服務(wù)器 IP 地址: (設(shè)本機(jī) ip : )set myipaddr set destipaddr 11、 用提供的直連網(wǎng)線連接開發(fā)板和 pc機(jī),并將要燒寫的內(nèi)核和文件系統(tǒng)復(fù)制 到 C:Cisco TFTP Servertftp

11、目錄;12、 在超級(jí)終端中輸入:tftp zImage_e24qt kernel 回車,此時(shí)開始傳輸內(nèi)核 鏡像文件,完成后輸入: flash kernel 回車開始燒寫內(nèi)核; 在超級(jí)終端中輸入: tftp rootfs270qt_24.img root 回車,此時(shí)開始傳輸 文件系統(tǒng)鏡像文件,完成后輸入: flash root 回車開始燒寫文件系統(tǒng);14、編寫簡單應(yīng)用程序, 例如 “helloworld.c ”, 上傳到服務(wù)器進(jìn)行編譯 (arm-linux-gcc helloworld.c -o hello ),并將可執(zhí)行文件下載到本機(jī)。15、 在超級(jí)終端中輸入:cd /tmp ,然后點(diǎn)擊菜單發(fā)

12、送 - 傳送文件,選擇 hello 文件將其下載到 cd /tmp 目錄。五、思考題2、利用實(shí)驗(yàn)二 Makefile 的知識(shí)點(diǎn),分析 bootloader 源程序三個(gè) Makefile 的結(jié)構(gòu)與關(guān)系。答:在編譯 bootloader 程序的時(shí)候,使用了指令“ make”, bootloader 源程序里 面有三個(gè) Makefile ,分別是 include 、 utils 和 src 。 Include 聲明定義各函 數(shù)各變量,而 utils 和 src 分別對(duì)應(yīng) bootloader 的第一和第二階段。5、請(qǐng)?jiān)陂喿x完 bootloader 程序后 ,畫出 bootloader 程序框架流程 .。五、總結(jié)這次實(shí)驗(yàn)通過Bootloader這個(gè)底層程序完成了上層文件安裝的驅(qū)動(dòng)引導(dǎo)作 用。在實(shí)驗(yàn)中,了解了 bootloader的實(shí)現(xiàn)原理、結(jié)構(gòu)和運(yùn)行過程,豐富了自己的 見識(shí)。除了對(duì)bootloader有一定的了解外,對(duì)gcc、mak卻超級(jí)終端等輔助工具

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論