U-Boot的編譯和使用.ppt_第1頁
U-Boot的編譯和使用.ppt_第2頁
U-Boot的編譯和使用.ppt_第3頁
U-Boot的編譯和使用.ppt_第4頁
U-Boot的編譯和使用.ppt_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

,第5章 U-Boot的編譯和使用,本章目標(biāo),理解什么是Bootloader,它的作用是什么; U-Boot的結(jié)構(gòu); 掌握如何編譯U-Boot; 掌握使用U-Boot的命令、工具。,本章結(jié)構(gòu),嵌入式系統(tǒng)引導(dǎo),U-Boot的編譯和使用,U-Boot配置與編譯,U-Boot簡介,U-Boot燒錄,U-Boot主要功能,U-Boot主要目錄結(jié)構(gòu),TFTP工具使用,U-Boot的命令使用,5.1、初識BootLoader,5.1.1、初識BootLoader 5.1.2、Bootloader的種類 5.1.3、 Bootloader的啟動,5.1.1、初識BootLoader,嵌入式linux系統(tǒng)從軟件的角度看通常可以分為4個(gè)層次: 1、引導(dǎo)加載程序。 2、Linux 內(nèi)核。 3、文件系統(tǒng)。 4、用戶應(yīng)用程序。,5.1.2 、Bootloader的種類(1),5.1.2、Bootloader的種類(2),(1)X86 X86 的工作站和服務(wù)器上一般使用LILO 和GRUB。 (2)ARM ARM 處理器的芯片商很多,所以每種芯片的開發(fā)板都有自己的Bootloader。 常用VIVI、U-BOOT。 (3)PowerPC PowerPC 平臺的處理器有標(biāo)準(zhǔn)的Bootloader,就是ppcboot。PPCBOOT 在合并armboot等之后,創(chuàng)建了U-Boot,成為各種體系結(jié)構(gòu)開發(fā)板的通用引導(dǎo)程序。 (4)MIPS MIPS公司開發(fā)的YAMON 是標(biāo)準(zhǔn)的Bootloader,也有許多MIPS芯片商為自己的開發(fā)板寫了Bootloader?,F(xiàn)在,U-Boot 也已經(jīng)支持MIPS平臺。 (5)SH SH 平臺的標(biāo)準(zhǔn)Bootloader 是sh-boot。Redboot在這種平臺上也很好用。 (6)M68K M68K 平臺沒有標(biāo)準(zhǔn)的Bootloader。Redboot能夠支持m68k系列的系統(tǒng)。,大多數(shù) Boot Loader 都包含兩種不同的操作模式: 1、“啟動加載”模式 2、“下載”模式 這種區(qū)別僅對于開發(fā)人員才有意義。但從最終用戶的角度看,Boot Loader 的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與 下載工作模式的區(qū)別。下面介紹各種啟動模式。,5.1.3、Bootloader的啟動(1),5.1.3、Bootloader的啟動(2),1網(wǎng)絡(luò)啟動方式 這種方式的開發(fā)板不需要配置較大的存儲介質(zhì),跟無盤工作站有點(diǎn)類似。但是使用這種啟動方式之前,需要把Bootloader 安裝到板上的EPROM 或者Flash中。Bootloader 通過以太網(wǎng)接口遠(yuǎn)程下載Linux 內(nèi)核映像或者文件系統(tǒng)。這種方式對于嵌入式系統(tǒng)開發(fā)來說非常重要。,5.1.3、Bootloader的啟動(3),2磁盤啟動方式 傳統(tǒng)的Linux 系統(tǒng)運(yùn)行在臺式機(jī)或者服務(wù)器上,這些計(jì)算機(jī)一般都使用BIOS 引導(dǎo),并且使用磁盤作為存儲介質(zhì)。如果進(jìn)入BIOS設(shè)置菜單,可以探測處理器、內(nèi)存、硬盤等設(shè)備,可以設(shè)置BIOS從軟盤、光盤或者某塊硬盤啟動。也就是說,BIOS并不直接引導(dǎo)操作系統(tǒng)。,5.1.3、Bootloader的啟動(4),3Flash啟動方式 大多數(shù)嵌入式系統(tǒng)上都使用Flash存儲介質(zhì)。Flash有很多類型,包括NOR Flash、NANDFlash和其他半導(dǎo)體盤。Bootloader 一般是存儲在Flash芯片上的。另外,Linux內(nèi)核映像和RAMDISK 也可以存儲在Flash上。通常需要把Flash分區(qū)使用,每個(gè)區(qū)的大小應(yīng)該是Flash擦除塊大小的整數(shù)倍。,5.1.3、Bootloader的啟動(5),Boot Loader的啟動流程: Boot Loader 的 stage1 通常包括以下步驟(以執(zhí)行的先后順序): 硬件設(shè)備初始化。 為加載 Boot Loader 的 stage2 準(zhǔn)備 RAM 空間。 拷貝 Boot Loader 的 stage2 到 RAM 空間中。 設(shè)置好堆棧。 跳轉(zhuǎn)到 stage2 的 C 入口點(diǎn)。,5.1.3、Bootloader的啟動(6),Boot Loader 的 stage2 通常包括以下步驟(以執(zhí)行的先后 順序): 初始化本階段要使用到的硬件設(shè)備。 檢測系統(tǒng)內(nèi)存映射(memory map)。 將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中。 為內(nèi)核設(shè)置啟動參數(shù)。 調(diào)用內(nèi)核。,5.1.3、Bootloader的啟動(7),5.2、U-Boot簡介,U-Boot,全稱Universal Boot Loader,是遵循GPL條款的開放源碼項(xiàng) 目,從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來,其源碼目錄、編譯 形式與Linux內(nèi)核很相似。事實(shí)上,不少U-Boot源碼就是相應(yīng)Linux內(nèi)核源 程序的簡化,尤其是一些設(shè)備的驅(qū)動程序,從UBoot源碼的注釋中能體現(xiàn)這 一點(diǎn)。但是U-Boot不僅僅支持嵌入式Linux系統(tǒng)的引導(dǎo),當(dāng)前,它還支持 NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS嵌入式操作系統(tǒng)。,/media/SourceCode下面的u-boot1.2.0-WebServer.tar.gz 轉(zhuǎn)移到/home/guest/下 su root mkdir /home/guest/學(xué)號或姓名拼音 cp /media/SourceCode/u-boot1.2.0-WebServer.tar.gz /home/guest/ cd 上述路徑 tar zxvf u-boot* 解壓縮 cd u-boot1.2.0,清除與平臺相關(guān)的文件 make distclean 配置相關(guān)頭文件,調(diào)用與當(dāng)前開發(fā)板硬件匹配的頭文件。 make smdk2440_config 編譯內(nèi)核 make 然后在文件夾內(nèi)生成u-boot.bin,使用 cp 源文件路徑名/源文件名 目的路徑 解壓縮(建議使用通配符) tar -zxvf u-boot1.2.0* 解壓縮后,在當(dāng)前路徑下出現(xiàn)一個(gè)名為/u-boot1.2.0的文件夾 進(jìn)入該文件夾 cd /u-boot1.2.0 清除與平臺相關(guān)的文件 make distclean 配置相關(guān)頭文件,調(diào)用與當(dāng)前開發(fā)板硬件匹配的頭文件。 make smdk2440_config 編譯內(nèi)核 make 然后在文件夾內(nèi)生成u-boot.bin可通過相關(guān)工具燒寫到開發(fā)板的FLASH中。,5.3、U-Boot配置與編譯,make distclean 清除與平臺相關(guān)的文件 make smdk2440_config 配置使用SMDK2440 make 交叉編譯 如果編譯過程中沒有出現(xiàn)錯誤。那么將創(chuàng)建u-boot文件, 并通過objcopy將其轉(zhuǎn)換為二進(jìn)制格式和16進(jìn)制文件格式。最 后將u-boot.bin下載到開發(fā)板的Flash中引導(dǎo)操作系統(tǒng)。,5.4、U-Boot燒錄(1),U-Boot不僅可以在NorFlash上運(yùn)行,也可以在Nand Flash中運(yùn)行,一切取決于代碼的編寫。 通過仿真器燒入uboot 通過仿真器uboot燒寫到flash中就可以從NAND flash啟動了。 通過JTAG接口,由工具燒入flash,5.4、U-Boot燒錄(2),JTAG簡介 JTAG(Joint Test Action Group)是IEEE制定的用于檢測PCB和IC的標(biāo)準(zhǔn)。通過這個(gè)標(biāo) 準(zhǔn),可對JTAG接口芯片的硬件電路進(jìn)行邊界掃描和故障檢測。詳細(xì)內(nèi)容可查閱IEEE1149.1 協(xié)議。目前,很多高檔微處理器都帶有JTAG接口,像ARM7,ARM9,DSP等。,5.5、U-Boot主要目錄,目錄樹 |-board |-common |-cpu |-disk |-doc |-drivers |-dtt |-examples |-fs,|-include |-lib_arm |-lib_generic |-lib_i386 |-lib_m68k |-lib_microblaze |-lib_mips |-lib_nios |-lib_nios2 |-lib_ppc,|-net |-post |-rtc -tools,5.6、 U-Boot主要功能,5.7、U-Boot命令使用,5.7.1、U-Boot主要命令 5.7.2、常用命令使用說明 5.7.3、 TFTP工具使用,5.7.1、U-Boot主要命令(1),使用命令help-uboot1.1.4# help ? - alias for help autoscr - run script from memory base - print or set address offset bdinfo - print Board Info structure boot - boot default, i.e., run bootcmd bootd - boot default, i.e., run bootcmd bootelf - Boot from an ELF image in memory bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol bootvx - Boot vxWorks from an ELF image cmp - memory compare coninfo - print console devices and information cp - memory copy,7.7.1、U-Boot主要命令(2),crc32 - checksum calculation date - get/set/reset date & time dcache - enable or disable data cache echo - echo args to console erase - erase FLASH memory flinfo - print FLASH memory information go - start application at address addr help - print online help icache - enable or disable instruction cache iminfo - print header information for application image imls - list all images found in flash itest - return true/false on integer compare mw - memory write (fill),5.7.1、 U-Boot主要命令(3),mw - memory write (fill) nand - NAND sub-system nboot - boot from NAND device nfs - boot image via network using NFS protocol nm - memory modify (constant address) ping - send ICMP ECHO_REQUEST to network host printenv- print environment variables protect - enable or disable FLASH write protection rarpboot- boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage,5.7.1、 U-Boot主要命令(4),setenv - set environment variables sleep - delay execution for some time tftpboot- boot image via network using TFTP protocol version - print monitor version,5.8、U-Boot常用命令(1),1、tftp(tftpboot) 即將內(nèi)核鏡像文件從PC中下載到SDRAM的指定地址,然后通過bootm來引導(dǎo)內(nèi)核,前提是所用PC要安裝設(shè)置tftp服務(wù)。 下載信息: uboot1.1.4# tftp 0x30008000 zImage 2、bootm 內(nèi)核的入口地址開始引導(dǎo)內(nèi)核。 uboot1.1.4# bootm 0x30008000,5.8、U-Boot常用命令(2),3、go 直接跳轉(zhuǎn)到可執(zhí)行文件的入口地址,執(zhí)行可執(zhí)行文件。 uboot1.1.4# go 0x30008000 4、cp 內(nèi)存拷貝,cp 源地址 目的地址 拷貝大小(字節(jié)) uboot1.1.4# cp 0x30008000 0x3000f000 64,5.8、U-Boot常用命令(3),5、erase(F) 擦除FLASH MEMORY。 erase start end erase bank N erase FLASH bank # N erase all erase all FLASH banks,7.8、 U-Boot常用命令(4),6、printenv 打印環(huán)境變量 7、saveenv(F) 保存設(shè)定的環(huán)境變量 8、setenv 設(shè)置環(huán)境變量,= set ipaddr 0 設(shè)置設(shè)備地址為 0,setenv name value .,printenv - print values of all environment variables printenv name . - print value of environment variable name,5.8、U-Boot常用命令(5),9、nand read nand read InAddr FlAddr size InAddr: 從nand flash中讀到內(nèi)存的起始地址。 FlAddr: nand flash 的起始地址。 size: 從nand flash中讀取的數(shù)據(jù)的大小。 10、nand erease nand erase FlAddr size FlAddr: nand flash 的起始地址 size: 從nand flash中擦除數(shù)據(jù)塊的大小,uboot1.1.4#nand read 0x30008000 0 0x100000,11、nand write nand write InAddr FlAddr size InAddr: 寫到Nand Flash中的數(shù)據(jù)在內(nèi)存的起始地址 FlAddr: Nand Flash的起始地址 size: 數(shù)據(jù)的大小,uboot1.1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論