U-boot commands
来源:互联网 发布:怎样选淘宝上的人参 编辑:程序博客网 时间:2024/04/29 00:52
U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot是从PPCBOOT逐步发展演化而来,其源码目录、编译形式与Linux内核很相似。U-Boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBSD。VxWorks、QNX、RTEMS、ARTOS、LynxOS嵌入式操作系统。其目前要支持的目标操作系统包括OPenBSD 、NetBSD、FreeBSD、4 4BSD 、Linux、SVR4、Esix、Solaris、Irix、SCO、Dell、NCR、VxWorks、LynxOS、pSOS、QNX、RTEMS和ARTOS。这是U-Boot中Universal的一层含义。另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM 、Nios、XScale等诸多常用系列的处理器。除了硬件初始化之外,U-Boot的大部分功能的代码是可以跨硬件平台使用的。只需要对U-Boot的硬件部分代码做一些修改,就可以运行在不同的平台上。
U-Boot支持系统引导、上电自检功能、设备驱动等功能,它的主要特性如下:
- 支持NFS挂载、RAMDISK 系统引导(压缩或非压缩)形式的根文件系统
- 支持NFS挂载,从Flash中引导压缩或非压缩系统内核
- 强大的操作系统接口功能,可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布
- 支持目标板环境参数的多种存储方式,如Flash、NVRAM、EEPROM
- CRC32校验,可校验Flash中内核、RAMDISK镜像文件是否完好
- 串口、SDRAM、Flash、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持
- SDRAM、Flash大小自动检测;SDRAM 故障检测;CPU型号
- XIP内核引导
可从U-Boot的官方网站http://sourceforge.net/projects/U-Boot上获得发布的最新版本U-Boot源码。以下是U-Boot最重要的目录:
目录名
说明
Board
目标板相关文件,主要包含SDRAM、Flash驱动;
Common
独立于处理器体系结构的通用代码,如内存大小探测与故障检测;
Cpu
与处理器相关的文件,如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;
Driver
通用设备驱动,如CFI Flash驱动
Examples
可在U-Boot下运行的示例程序;
Lib-XXX
处理器体系相关的文件,如lib-PPC,lib-arm 目录分别包含与PowerPC、ARM体系结构相关的文件;
Net
与网络功能相关的文件目录,如bootp、nfs、tftp;
Post
上电自检文件目录
Rtc
RTC驱动程序
Tools
用于创建BIN镜像文件等的工具
表1 U-Boot重要的目录
为了使U-Boot支持新的开发板,必须对代码进行修改。最简便的做法是在U-Boot已经支持的开发板中选择一种和目标板接近的,并在其基础上进行修改。例如如果处理器是S3C2410,可以参照board目录下的smdk2410目录。U-Boot上电启动后,敲任意键可以退出自动启动状态,进入命令行:
U-Boot 1.1.4 (Nov 12 2007 - 21:58:00)
U-Boot code: 33F80000 -> 33F9C2FC BSS: -> 33FA045C
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 2 MB
NAND: 64 MB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
YL2410 #
在命令行提示符下,可以输入U-Boot的命令并执行。U-Boot可以支持几十个常用命令,通过这些命令,可以对开发板进行调试,可以引导Linux内核,还可以擦写Flash完成系统部署等功能。掌握这些命令的使用,才能够顺利地进行嵌入式系统的开发。输入help命令,可以得到当前U-Boot的所有命令列表。每一条命令后面是简单的命令说明。
YL2410 # 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
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
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loop - infinite loop on address range
md - memory display
mm - memory modify (auto-incrementing)
mtest - simple RAM test
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
setenv - set environment variables
sleep - delay execution for some time
tftpboot- boot image via network using TFTP protocol
version - print monitor version
下面介绍各条命令的具体用法:
1)bdinfo – 显示开发板信息
bdinfo命令在终端显示诸如内存地址和大小、时钟频率、MAC地址等板级信息。这些信息在传递给Linux内核一些参数时会用到。
2)coninfo – 显示控制台设备和信息
coninfo命令可以显示可用的控制I/O设备信息。
serial 80000003 SIO stdin stdout stderr
这个输出结果意为串口设备是一个系统设备(标志‘S’),它提供输入(标志‘I’)和输出(标志‘O’)功能,而且当前已经指派给3个标准I/O流:tdin,stdout 和stderr。
3)flinfo – 显示Flash存储信息
flinfo命令用于获取可用的flash存储信息。
4)iminfo – 显示映像文件头部信息
iminfo (简写为imi) 用于显示像Linux内核或者ramdisk之类的映像文件的头部信息。它显示映像名、类型、大小以及CRC32校验和以验证文件没问题。
5)base – 显示或者设置地址偏移
可以使用base命令来显示或者设置一个基地址作为所有存储类命令的地址偏移值。默认的基址是0,这时输入的所有地址都是实地址。当需要重复访问某一特定存储区域时,如果设置此区域的开始地址作为基址,命令地址只需使用偏移地址,这会带来许多方便。
YL2410 # base
Base Address: 0x00000000
YL2410 # md 0 c
00000000: feffffff 00000000 7cbd2b78 7cdc3378 ........|.+x|.3x
00000010: 3cfb3b78 3b000000 7c0002e4 39000000 <.;x;...|...9...
00000020: 7d1043a6 3d000400 7918c3a6 3d00c000 }.C.=...y...=...
YL2410 # base 40000000
Base Address: 0x40000000
YL2410 # md 0 c
40000000: 27051956 50504342 6f6f7420 312e312e '..VPPCBoot 1.1.
40000010: 3520284d 61722032 31203230 3032202d 5 (Mar 21 2002 -
40000020: 2031393a 35353a30 34290000 00000000 19:55:04)......
6)crc32 – 校验和计算
crc32(简写为crc)用来计算在某一范围内存储区域的CRC32校验和。
YL2410 # crc 100004 3FC
CRC32 for 00100004 ... 001003ff ==> d433b05b
YL2410 #
当后面加了3个参数时,此命令会把计算结果保存在给定存储地址内。
YL2410 # crc 100004 3FC 100000
CRC32 for 00100004 ... 001003ff ==> d433b05b
YL2410 # md 100000 4
00100000: d433b05b ec3827e4 3cb0bacf 00093cf5 .3.[.8'.<.....<.
YL2410 #
可以看到,CRC32的校验和不仅显示出来了,还存储在地址为0x10000000的存储单元里。
7) cmp – 存储单元比较
使用cmp命令可以比较两个存储区域的内容是否一致。这个命令不仅可以测试由第3个参数确定的整个区域,还可以在第一个不同的地方停下来。
YL2410 # cmp 100000 40000000 400
word at 0x00100004 (0x50ff4342) != word at 0x40000004 (0x50504342)
Total of 1 word were the same
8)cp – 存储器拷贝
cp用来复制存储单元。cp 可以使用类型标识符.l , .w和.b。.b以字节为单位;.w以字为单位;.l以长字为单位。
YL2410 # cp.b 40000000 100000 10000
9) md – 显示存储单元内容
md采用十六进制和ASCII码两种形式来显示存储单元的内容。
YL2410 # md 0x10000000
10000000: d123d123 ad75ad75 a535a535 f800f800 #.#.u.u.5.5.....
10000010: 00000000 00000000 e164e164 582c582c ........d.d.,X,X
10000020: ce79ce79 07e007e0 bdf7bdf7 001f001f y.y.............
这条命令同样可以采用类型标识符.l, .w和.b :
YL2410 # md.b 0x10000000
10000000: f7 bd d7 d9 b7 b5 96 32 76 ad 55 58 e0 a5 b3 e0 .......2v.UX....
10000010: e0 f8 94 00 00 00 70 00 00 58 68 58 2c 00 00 58 ......p..XhX,..X
10000020: 18 e1 1f be 1f 9c 94 bd b6 b5 64 ad 75 9c a4 a5 ..........d.u...
10000030: b3 e0 1f 07 00 e1 00 00 00 00 94 00 00 58 64 58 .............XdX
10)mtest – 简单的RAM测试
mtest提供一个简单的存储器测试。mtest会向存储器写入数据,如果测试的存储范围包括中断向量表、内核映像、堆栈或者堆存放的单元等区域,可能导致系统崩溃,所以使用时要格外小心。
YL2410 # help mtest
mtest [start [end [pattern]]]
- simple RAM read/write test
YL2410 # mtest 100000 200000
Testing 00100000 ... 00200000:
Pattern 0000000F Writing... Reading...
YL2410 #
11) mw – 写存储器
mw是一种向存储器写数据的方法。mw也可以带.l, .w和.b等标识符表示写入的单位。Mw的主要参数包括写入地址,写入内容,写入大小。
YL2410 #mw.w 100004 1155 6
YL2410 # md 100000 10
00100000: 00000000 11551155 11551155 11551155 .....U.U.U.U.U.U
00100010: 00000000 00000000 00000015 00000016 ................
00100020: 00000017 00000018 00000019 0000001a ................
00100030: 0000001b 0000001c 0000001d 0000001e ................
YL2410 #mw.b 100007 ff 7
YL2410 #md 100000 10
00100000: 00000000 115511ff ffffffff ffff1155 .....U.........U
00100010: 00000000 00000000 00000015 00000016 ................
00100020: 00000017 00000018 00000019 0000001a ................
00100030: 0000001b 0000001c 0000001d 0000001e ................
YL2410 #
12)bootm – 启动存储器中的映像
bootm可以启动flash或SDRAM中的内核映像。使用方法是bootm [addr [arg ...]]。addr是映像地址,arg是可选的内核参数。
YL2410 # bootm 0x10000000
13)erase – 擦除FLASH
erase的用法有以下几种:
erase start end:擦除从start地址开始到end地址结束的区域。
erase bank N:擦除第N块Flash。
erase N:SF [ -SL ]:擦除第N块Flash的从扇区SF到SL扇区的区域。
erase all:擦除所有Flash的内容。
Flash的擦除操作必须以块为最小单位,因此地址start必须为某块的起始地址,end地址则必须为某块的结束地址,如Flash的基地址为0x34000000,块大小为0x20000,则操作erase 0x34000000 0x3401FFFF为可操作的。而erase 0x34000003 0x3401FFFF或者erase 0x340000000x3401FF00均不可操作。
14)setenv –设置环境变量
u-boot环境变量是一些参数,这些参数有些是系统默认的,也可以是自定义的。系统默认的环境变量包括:
环境变量
说明
实例
ipaddr
设置系统IP地址
setenv ipaddr 192.168.0.100
bootdelay
启动延迟
setenv bootdelay 6
bootargs
Linux内核参数
setenv bootargs root=1f02 console=ttyS0,115200
netmask
子网掩码
setenv netmask 255.255.255.0
serverip
TFTP服务器IP
setenv serverip 192.168.0.101
ethaddr
MAC地址
setenv ethaddr 06:01:3f:21:1b:44
bootcmd
u-boot启动命令
setenv bootcmd bootm 0x10000000
表2 u-boot环境变量
使用printenv命名可以打印u-boot中所有的环境变量。
15)saveenv –保存环境变量
YL2410 # saveenv
16)tftp – 通过tftp协议下载数据
tftp [loadAddress] [bootfilename]
loadAddress为下载地址,bootfilename为tftp服务器下的文件。
- U-boot commands
- U-BOOT
- u-boot
- U-boot
- U-Boot
- u-boot
- u-boot
- u-boot!!
- U-BOOT
- U-boot
- U-BOOT
- U BOOT
- U-boot
- u-boot
- U-Boot
- U-boot
- U-boot
- U-boot
- xla 文件有何用
- 分层遍历二叉树
- 用于移动设备的可移植的轻量级web服务器
- ACM-ICPC 2012 长春. 正式赛及收工 (47张照片,外链)
- 菜鸟程序员的半年成长经历
- U-boot commands
- 一些iOS高效开源类库
- 回家
- 带哨兵的直接插入排序法
- Android系统自带样式(android:theme)
- SQLServer null注意!
- link
- HDOJ 1007 (分治法)
- JavaScript世界的一等公民 - 函数