UBoot操作和常用命令.ppt_第1頁
UBoot操作和常用命令.ppt_第2頁
UBoot操作和常用命令.ppt_第3頁
UBoot操作和常用命令.ppt_第4頁
UBoot操作和常用命令.ppt_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、UBoot操作和常用命令,主要內容,u-boot概念解釋 u-boot基礎指令使用介紹 u-boot環(huán)境變量 u-boot NAND Flash操作命令及燒錄Linux內核和文件系統(tǒng),BootLoader概念,Boot Loader 就是在操作系統(tǒng)內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核準備好正確的環(huán)境 通常,Boot Loader 是嚴重地依賴于硬件而實現的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的Boot Loader 幾乎是不可能的。盡管如此,我們仍然可以

2、對Boot Loader 歸納出一些通用的概念來,以指導用戶特定的Boot Loader 設計與實現。,UBoot來源,U-Boot 是 Das U-Boot 的簡稱,其含義是 Universal Boot Loader,是遵循 GPL 條款的開 放源碼項目。最早德國 DENX 軟件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSROM 的源碼創(chuàng)建了 PPCBoot 工程項目,此后不斷添加處理器的支持。而后,Sysgo Gmbh 把 PPCBoot 移植到 ARM 平臺上,創(chuàng)建了 ARMBoot 工程項目。最終,以 PPCBoot 工程和 ARMBoot 工程為基礎,創(chuàng)

3、建了 U-Boot 工程。 而今,U-Boot 作為一個主流、通用的 BootLoader,成功地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、XScale 等主流體系結構上的百種開發(fā)板,成為功能最多、靈活 性最強,并且開發(fā)最積極的開源 BootLoader。目前。U-Boot 仍然由 DENX 的 Wolfgang Denk 維護,燒寫UBoot,UBoot編譯完成后,會在源碼目錄下生成u-boot.bin這個二進制文件。 利用JLink工具把u-boot.bin燒寫到NORFlash的0 x00000000位置即可。,mkimage,在使用UBoot引導Linux內核

4、時,必須對Linux內核鏡像文件做適當的修改讓UBoot可以引導使用mkimage程序來對linux內核文件增加UBoot頭。 uboot源代碼的tools/目錄下有mkimage工具,這個工具可以用來制作不壓縮或者壓縮的多種可啟動映象文件。mkimage在制作映象文件的時候,是在原來的可執(zhí)行映象文件的前面加上一個0 x40字節(jié)的頭,記錄參數所指定的信息,這樣uboot才能識別這個映象是針對哪個CPU體系結構的,哪個OS的,哪種類型,加載內存中的哪個位置, 入口點在內存的那個位置以及映象名是什么,mkimage使用,Usage: mkimage -l image -l = list image

5、 header information mkimage -x -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file:data_file. image -A = set architecture to arch -O = set operating system to os -T = set image type to type -C = set compression type comp -a = set load address to addr (hex) -e = set entry point to ep (he

6、x) -n = set image name to name -d = use image data from datafile -x = set XIP (execute in place) 制作uImage 內核鏡像文件 mkimage -n linux- -A arm -O linux -T kernel -C none -a 0 x30008000 -e 0 x30008040 -d zImage uImage,燒錄Linux內核,燒錄Linux內核并實現自啟動。 1)通過mkimage工具把Linux內核鏡像文件轉為UBoot格式通過tftp協(xié)議燒寫到開發(fā)板內存的的0

7、 x30008000位置 2)PC的虛擬機Linux安裝ftfp服務器端并配置測試連接成功 3)重啟開發(fā)板ping通虛擬機linux 4)配置傳給linux的命令行參數 5)開發(fā)板UBoot通過tftp協(xié)議和Linux進行連接,把Linux內核讀入SDRAM后通過nand 命令寫入nandflash的指定位置; 6)根據Linux啟動信息獲得Linux內核默認的MTD分區(qū)并做出相應的修改后,把文件系統(tǒng)燒入相應位置,tftp的安裝和配置,redhat9下載tftp-server-0.32-4.i386.rpm軟件包 rpm -ivh tftp-server-0.32-4.i386.rpm安裝 F

8、edora9下可以使用yum在線安裝tftp-server yum install tftp-server 新建tftp根目錄并授予權限 mkdir /var/tftproot chmod -R 777 /var/tftproot tftp server 配置 tftp server配置文件,/etc/xinetd.d/tftp,修改tftp配置文件,# default: off # description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is

9、 often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems. service tftp disable = no /設置為no,開啟服務 socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_

10、args = -s /var/tftproot -c /這里配置tftp服務器根目錄,-c參數表示可以寫文件 per_source = 11 cps = 100 2 flags = IPv4 ,tftp服務器配置,UBoot環(huán)境變量,1)bootargs參數 bootargs參數是啟動時傳遞給Linux操作系統(tǒng)的信息,其配置語句為: set bootargs root=/dev/mtdblock3 console=ttyS0,115200 rootfstype=cramfs mem=32mb root:/dev/mtdblock2表示從nand的第三個分區(qū)啟動文件系統(tǒng),Linux啟動后會自動搜

11、索nand分區(qū)信息。 console:表示Linux操作系統(tǒng)使用的控制臺,我們使用第一個串口,因此是ttyS0,后面跟的115200表示串口使用的波特率。 rootfstype:表示文件系統(tǒng)的格式,我們燒錄在nand中的文件系統(tǒng)使用cramfs,所以在這里要填寫cramfs,否則linux會嘗試自動掛載,可能會出錯。 mem:表示Linux操作系統(tǒng)的內存容量,目前開發(fā)板板載32MB內存,因此填32mb。 2)bootcmd參數 bootcmd參數表示開發(fā)板上電,bootdelay結束后執(zhí)行的指令。這里填寫內容的含義是用tftp這條命令,將主機上的vmlinux.img(即Linux內核)加載到

12、內存的30007fc0這個地址,然后從30007fc0啟動內核。如果將Linux內核燒錄到nandflash上,則指令又有不同,下面會詳細介紹。,UBoot常用命令,usb start: 起動usb 功能 usb info: 列出設備 usb scan: 掃描usb storage(u 盤)設備 fatls:列出DOS FAT文件系統(tǒng), 如:fatls usb 0列出第一塊U盤中的文件 fatload: 讀入FAT中的一個文件,如:fatload usb 0 0 x30000000 aa.txt flinfo: 列出flash的信息 nfs: nfs 32000000 :

13、aa.txt , 把(LINUX 的NFS文件系統(tǒng))中的NFS文件系統(tǒng)中的aa.txt 讀入內存0 x32000000處 tftp: tftp 32000000 vmlinux, 把server(IP=環(huán)境變量中設置的serverip)中/tftpdroot/ 下的vmlinux通過TFTP讀入到物理內存32000000處 ping:注:只能開發(fā)板PING別的機器 bootm:起動UBOOT TOOLS制作的壓縮LINUX內核, bootm 3200000 mw: 對RAM中的內容寫操作, mw 32000000 ff 10000(把內存0 x32000000開始的0 x

14、10000字節(jié)設為0 xFF),UBoot對NandFlash操作,nand info查看NAND Flash信息命令 nand info Device 0: Samsung unknown 64Mb at 0 x11000200 (64 MB, 16 kB sector) nand erase 地址 大小擦除NAND Flash命令 將NAND Flash中起始地址0 x00100000 大小為0 x00200000的內容擦除。切記NAND Flash使用前一定要先擦除。 SEP4020=nand erase 0 x00100000 0 x00200000 NAND erase: devic

15、e 0 offset 1048576, size 2097152 . OK nand write 內存地址 NAND地址 大小 將SDRAM中地址0 x31000000中大小為0 x00200000的內容寫入NAND Flash的0 x100000地址。 nand write 0 x31000000 0 x00100000 0 x00200000 NAND write: device 0 offset 1048576, size 2097152 . 2097152 bytes written: OK 燒寫文件系統(tǒng) nand write.yaffs 0 x30008000 0 x560000 0

16、 x3b22c00,文件系統(tǒng)的燒寫,UBoot啟動Linux內核后會在某個固定位置讀取文件系統(tǒng)信息,這個具體位置通過Linux代碼common-smdk.c文件的MTD分區(qū)來決定( arch/arm/plat-s3c24xx/目錄下),Creating 5 MTD partitions on NAND 256MiB 3,3V 8-bit: 0 x000000000000-0 x000000040000 : supervivi ftl_cs: FTL header not found. 0 x000000040000-0 x000000060000 : param uncorrectable e

17、rror : 0 x000000060000-0 x000000560000 : Kernel ftl_cs: FTL header not found. 0 x000000560000-0 x000040560000 : root mtd: partition root extends beyond the end of device NAND 256MiB 3,3V 8-bit - size truncated to 0 xfaa0000 ftl_cs: FTL header not found. 0 x000000000000-0 x000040000000 : nand mtd: partition nand extends beyond t

溫馨提示

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

評論

0/150

提交評論