对一些常用的命令了解还是有必要的
U-Boot
还提供了更加详细的命令帮助,通过
help
命令还可以查看每个命令的参数说明。由于开发过程的需要,有必要先把
U-Boot
命令的用法弄清楚。接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。
1、bootmdKNLinux联盟
bootm [addr [arg ...]]
- boot application image stored in memory
passing arguments 'arg ...'; when booting a Linux kernel,
'arg' can be the address of an initrd image
bootm
命令可以引导启动存储在内存中的程序映像。这些内存包括
RAM
和可以永久保存的
Flash
。
第
1
个参数
addr
是程序映像的地址,这个程序映像必须转换成
U-Boot
的格式。
第
2
个参数对于引导
Linux
内核有用,通常作为
U-Boot
格式的
RAMDISK
映像存储地址;也可以是传递给
Linux
内核的参数(缺省情况下传递
bootargs
环境变量给内核)。
dKNLinux联盟
2、bootp
bootp [loadAddress] [bootfilename]
bootp
命令通过
bootp
请求,要求
DHCP
服务器分配
IP
地址,然后通过
TFTP
协议下载指定的文件到内存。
第
1
个参数是下载文件存放的内存地址。
第
2
个参数是要下载的文件名称,这个文件应该在开发主机上准备好。
3、cmp
cmp [.b, .w, .l] addr1 addr2 count
- compare memory
cmp
命令可以比较
2
块内存中的内容。
.b
以字节为单位;
.w
以字为单位;
.l
以长字为单位。注意:
cmp.b
中间不能保留空格,需要连续敲入命令。
第
1
个参数
addr1
是第一块内存的起始地址。
第
2
个参数
addr2
是第二块内存的起始地址。
第
3
个参数
count
是要比较的数目,单位按照字节、字或者长字。
4、cp
cp [.b, .w, .l] source target count
- copy memory
cp
命令可以在内存中复制数据块,包括对
Flash
的读写操作。
第
1
个参数
source
是要复制的数据块起始地址。
第
2
个参数
target
是数据块要复制到的地址。这个地址如果在
Flash
中,那么会直接调用写
Flash
的函数操作。所以
U-Boot
写
Flash
就使用这个命令,当然需要先把对应
Flash
区域擦干净。
第
3
个参数
count
是要复制的数目,根据
cp.b cp.w cp.l
分别以字节、字、长字为单位。
5、crc32
crc32 address count [addr]
- compute CRC32 checksum [save at addr]
crc32
命令可以计算存储数据的校验和。
第
1
个参数
address
是需要校验的数据起始地址。
第
2
个参数
count
是要校验的数据字节数。
第
3
个参数
addr
用来指定保存结果的地址。
6、echo
echo [args..]
- echo args to console; c suppresses newline
echo
命令回显参数。
dKNLinux联盟
7、erase
erase start end
- erase FLASH from addr 'start' to addr 'end'
erase N:SF[-SL]
- erase sectors SF-SL in FLASH bank # N
erase bank N
- erase FLASH bank # N
erase all
- erase all FLASH banks
erase
命令可以擦
Flash
。
参数必须指定
Flash
擦除的范围。
按照起始地址和结束地址,
start
必须是擦除块的起始地址;
end
必须是擦除末尾块的结束地址。这种方式最常用。举例说明:擦除
0x20000 �C 0x3ffff
区域命令为
erase 20000 3ffff
。
按照组和扇区,
N
表示
Flash
的组号,
SF
表示擦除起始扇区号,
SL
表示擦除结束扇区号。另外,还可以擦除整个组,擦除组号为
N
的整个
Flash
组。擦除全部
Flash
只要给出一个
all
的参数即可。
8、flinfo
flinfo
- print information for all FLASH memory banks
flinfo N
- print information for FLASH memory bank # N
flinfo
命令打印全部
Flash
组的信息,也可以只打印其中某个组。一般嵌入式系统的
Flash
只有一个组。
9、go
go addr [arg ...]
- start application at address 'addr'
passing 'arg' as arguments
go
命令可以执行应用程序。
第
1
个参数是要执行程序的入口地址。
第
2
个可选参数是传递给程序的参数,可以不用。
10、minfo
iminfo addr [addr ...]
- print header information for application image starting at
address 'addr' in memory; this includes verification of the
image contents (magic number, header and payload checksums)
iminfo
可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。
第
1
个参数指定映像的起始地址。
可选的参数是指定更多的映像地址。
11、loadb
loadb [ off ] [ baud ]
- load binary file over serial line with offset 'off' and baudrate 'baud'
dKNLinux联盟
loadb
命令可以通过串口线下载二进制格式文件。
dKNLinux联盟
12、loads
loads [ off ]
- load S-Record file over serial line with offset 'off'
loads
命令可以通过串口线下载
S-Record
格式文件。
13、mw
mw [.b, .w, .l] address value [count]
- write memory
dKNLinux联盟
mw
命令可以按照字节、字、长字写内存,
.b .w .l
的用法与
cp
命令相同。
第
1
个参数
address
是要写的内存地址。
第
2
个参数
value
是要写的值。
第
3
个可选参数
count
是要写单位值的数目。
14、nfs
nfs [loadAddress] [host ip addr:bootfilename]
nfs
命令可以使用
NFS
网络协议通过网络启动映像。
15、nm
nm [.b, .w, .l] address
- memory modify, read and keep address
nm
命令可以修改内存,可以按照字节、字、长字操作。
参数
address
是要读出并且修改的内存地址。
16、printenv
printenv
- print values of all environment variables
printenv name ...
- print value of environment variable 'name'
printenv
命令打印环境变量。
可以打印全部环境变量,也可以只打印参数中列出的环境变量。
17、protect
protect on start end
- protect Flash from addr 'start' to addr 'end'
protect on N:SF[-SL]
- protect sectors SF-SL in Flash bank # N
protect on bank N
- protect Flash bank # N
protect on all
- protect all Flash banks
protect off start end
- make Flash from addr 'start' to addr 'end' writable
protect off N:SF[-SL]
- make sectors SF-SL writable in Flash bank # N
protect off bank N
- make Flash bank # N writable
protect off all
- make all Flash banks writable
protect
命令是对
Flash
写保护的操作,可以使能和解除写保护。
第
1
个参数
on
代表使能写保护;
off
代表解除写保护。
第
2
、
3
参数是指定
Flash
写保护操作范围,跟擦除的方式相同。
18、rarpboot
rarpboot [loadAddress] [bootfilename]
rarboot
命令可以使用
TFTP
协议通过网络启动映像。也就是把指定的文件下载到指定地址,然后执行。
第
1
个参数是映像文件下载到的内存地址。
第
2
个参数是要下载执行的映像文件。
19、run
run var [...]
- run the commands in the environment variable(s) 'var'
run
命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。
20、setenv
setenv name value ...
- set environment variable 'name' to 'value ...'
setenv name
- delete environment variable 'name'
setenv
命令可以设置环境变量。
第
1
个参数是环境变量的名称。
第
2
个参数是要设置的值,如果没有第
2
个参数,表示删除这个环境变量。
21、sleep
sleep N
- delay execution for N seconds (N is _decimal_ !!!)
sleep
命令可以延迟
N
秒钟执行,
N
为十进制数。
22、tftpboot
tftpboot [loadAddress] [bootfilename]
tftpboot
命令可以使用
TFTP
协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例如
serverip
和
ipaddr
。
第
1
个参数
loadAddress
是下载到的内存地址。
第
2
个参数是要下载的文件名称,必须放在
TFTP
服务器相应的目录下。
这些
U-Boot
命令为嵌入式系统提供了丰富的开发和调试功能。在
Linux
内核启动和调试过程中,都可以用到
U-Boot
的命令。但是一般情况下,不需要使用全部命令。比如已经支持以太网接口,可以通过
tftpboot
命令来下载文件,那么还有必要使用串口下载的
loadb
吗?反过来,如果开发板需要特殊的调试功能,也可以添加新的命令。