常用指令,UBoot常用命令手册

By admin in 茶社 on 2019年11月13日

指令: bootm

UBoot常用命令手册

U-Boot还提供了更加详细的命令帮助,可以通过”?”显示支持的命令列表,通过help
[CommandName]命令还可以查看每个命令的参数说明。

1、bootm

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环境变量给内核)。

附加说明:
要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。起动UBOOT
TOOLS制作的压缩LINUX内核, bootm 3200000

 

2、bootp

bootp [loadAddress] [bootfilename]

bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。

第1个参数是下载文件存放的内存地址。

第2个参数是要下载的文件名称,这个文件应该在开发主机上准备好。

附加说明: 通过网络启动,需要提前设置好硬件地址bdinfo打印ARM相关信息

 

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命令回显参数。

用法:echo $( bootcmd)

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
– 0x3ffff区域命令为erase 20000 3ffff。

按照组和扇区,N表示Flash的组号,SF表示擦除起始扇区号,SL表示擦除结束扇区号。另外,还可以擦除整个组,擦除组号为N的整个Flash组。擦除全部Flash只要给出一个all的参数即可。

用法:

写入数据之前必须先执行该命令

用法: erase 0xc******* +0xYYYYYYYY

说明: 擦除从0xc******* 开始的0xYYYYYYYY字节(字节必须块对齐)

例:

Z228 # erase 0xc4040000 +0x180000

…………………… done

Erased 24 sectors

附加: erase 1:0-2(就是对每一块FLASH的0-2扇区进行删除)

h. cp.b

拷贝数据,从指定源地址到目标地址,地址可以是ram,也可以是nor flash

用法: cp.b 0x******** 0x######## 0xYYYYYYYY

说明:
拷贝源0x********到目标0x########,共拷贝0xYYYYYYY字节

例:

Z228 # cp.b 0x200000 0xc4040000 0x180000

Copy to Flash… done

 

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、iminfo

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命令可以通过串口Kermit协议下载二进制数据。

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是要写单位值的数目。

用法: mw 32000000 ff 10000(把内存0x32000000开始的0x10000字节设为0xFF)

 

14、nm

nm [.b, .w, .l] address

     – memory modify, read and keep address

nm命令可以修改内存,可以按照字节、字、长字操作。

参数address是要读出并且修改的内存地址。

 

15、Md

显示内存区的内容。

 

16、Mm

读或修改内存,地址自动递增。

mm 内存地址 回车

此时进入内存查看 直接按回车
保持原内容不变,若要改变,在问号后面输入数值然后回车 按 . 此符号退出

17、nfs

nfs [loadAddress] [host ip addr:bootfilename]

nfs命令可以使用NFS网络协议通过网络启动映像。

用法:

nfs 32000000 192.168.0.2:aa.txt
把192.168.0.2(LINUX 的NFS文件系统)中的NFS文件系统中的aa.txt
读入内存0x32000000处。

 

18、printenv

printenv

      – print values of all environment variables

printenv name …

      – print value of environment variable ‘name’

printenv命令打印环境变量。

可以打印全部环境变量,也可以只打印参数中列出的环境变量。

 

19、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写保护操作范围,跟擦除的方式相同。

用法:

protect on 1:0-3(就是对第一块FLASH的0-3扇区进行保护)

protect off 1:0-3取消写保护

protect off bank 1 解除/使能 第 N 块FLASH的写保护

 

20、rarpboot

rarpboot [loadAddress] [bootfilename]

rarboot命令可以使用TFTP协议通过网络启动映像。也就是把指定的文件下载到指定地址,然后执行。

第1个参数是映像文件下载到的内存地址。

第2个参数是要下载执行的映像文件。

 

21、run

run var […]

      – run the commands in the environment variable(s) ‘var’

run命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。

用法:

Uboot> setenv flashit tftp 20000000 mycode.bin; erase 10020000
1002FFFF;
cp.b 20000000 10020000 8000
Uboot> saveenv
Uboot> run flashit

 

22、setenv

setenv name value …

      – set environment variable ‘name’ to ‘value …’

setenv name

      – delete environment variable ‘name’

setenv命令可以设置环境变量。

第1个参数是环境变量的名称。

第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。

用法:

Uboot> setenv myboard AT91RM9200DK
Uboot> printenv
baudrate=115200
ipaddr=192.168.1.1
ethaddr=12:34:56:78:9A:BC
serverip=192.168.1.5
myboard=AT91RM9200DK
Environment size: 102/8188 bytes

 

23、Saveenv

保存环境变量

命令将当前定义的所有的变量及其值存入flash中。用来存储变量及其值的空间只有8k字节,应不要超过。

 

24、sleep

sleep N

      – delay execution for N seconds (N is _decimal_ !!!)

sleep命令可以延迟N秒钟执行,N为十进制数。

 

25、tftpboot

tftpboot [loadAddress] [bootfilename]

tftpboot命令可以使用TFTP协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例如serverip和ipaddr。

第1个参数loadAddress是下载到的内存地址。

第2个参数是要下载的文件名称,必须放在TFTP服务器相应的目录下。

 

26、ping

注:只能开发板PING别的机器

 

27、usb

usb start: 起动usb 功能
usb info: 列出设备
usb scan: 扫描usb storage(u 盘)设备

 

28、kgo

起动没有压缩的linux内核

kgo 32000000

 

29、fatls

列出DOS FAT文件系统

fatls usb 0列出第一块U盘中的文件

 

30、fatload

读入FAT中的一个文件

fatload usb 0:0 32000000 aa.txt 把USB中的aa.txt 读到物理内存0x32000000处

 

Printenv 打印环境变量。

Uboot> printenv
baudrate=115200
ipaddr=192.168.1.1
ethaddr=12:34:56:78:9A:BC
serverip=192.168.1.5
Environment size: 80/8188 bytes

Setenv 设置新的变量

Uboot> setenv myboard AT91RM9200DK
Uboot> printenv
baudrate=115200
ipaddr=192.168.1.1
ethaddr=12:34:56:78:9A:BC
serverip=192.168.1.5
myboard=AT91RM9200DK
Environment size: 102/8188 bytes

Saveenv 保存变量

命令将当前定义的所有的变量及其值存入flash中。用来存储变量及其值的空间只有8k字节,应不要超过。

Loadb 通过串口Kermit协议下载二进制数据。

Tftp 通过网络下载程序,需要先设置好网络配置

Uboot> setenv ethaddr 12:34:56:78:9A:BC
Uboot> setenv ipaddr 192.168.1.1
Uboot> setenv serverip 192.168.1.254     (tftp服务器的地址)
下载bin文件到地址0x20000000处。
Uboot> tftp 20000000
application.bin (application.bin应位于tftp服务程序的目录)

Uboot> tftp 32000000 vmlinux
把server(IP=环境变量中设置的serverip)中/tftpdroot/
下的vmlinux通过TFTP读入到物理内存32000000处。

Md 显示内存区的内容。

Mm 修改内存,地址自动递增。

Nm 修改内存,地址不自动递增。

Mw 用模型填充内存

mw 32000000 ff 10000(把内存0x32000000开始的0x10000字节设为0xFF)

Cp 拷贝一块内存到另一块

   cp.b
20000000 10000000 ffff ;将20000000的数据写入10000000,ffff为文件大小

Cmp 比较两块内存区

这些内存操作命令后都可加一个后缀表示操作数据的大小,比如cp.b表示按字节拷贝。

Protect 写保护操作

protect on 1:0-3(就是对第一块FLASH的0-3扇区进行保护)
protect off 1:0-3取消写保护

Erase 擦除扇区。

erase: 删除FLASH的扇区
erase 1:0-2(就是对每一块FLASH的0-2扇区进行删除)

对DataFlash的操作

U-Boot在引导时如果发现NPCS0和NPCS3上连有DataFlash,就会分配虚拟的地址给它,具体为

0xC0000000—NPCS0
0xD0000000—NPCS3

run 执行设置好的脚本

Uboot> setenv flashit tftp 20000000 mycode.bin; erase 10020000
1002FFFF;
cp.b 20000000 10020000 8000
Uboot> saveenv
Uboot> run flashit

bootcmd 保留的环境变量,也是一种脚本

如果定义了该变量,在autoboot模式下,将会执行该脚本的内容。

Go 执行内存中的二进制代码,一个简单的跳转到指定地址

Bootm 执行内存中的二进制代码

要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。
起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000

Bootp 通过网络启动,需要提前设置好硬件地址。

 得到所有命令列表

help help usb, 列出USB功能的使用说明

ping 注:只能开发板PING别的机器

usb

usb start: 起动usb 功能
usb info: 列出设备
usb scan: 扫描usb storage(u 盘)设备

kgo 起动没有压缩的linux内核

kgo 32000000

fatls 列出DOS FAT文件系统

fatls usb 0列出第一块U盘中的文件

fatload 读入FAT中的一个文件

fatload usb 0:0 32000000 aa.txt 把USB中的aa.txt
读到物理内存0x32000000处!

flinfo 列出flash的信息

nfs

nfs 32000000 192.168.0.2:aa.txt
把192.168.0.2(LINUX 的NFS文件系统)中的NFS文件系统中的aa.txt
读入内存0x32000000处。

bootm  用于将内核镜像加载到内存的指定地址处

例:

bootm 0x82000000

查看和修改环境变量指令

常用环境变量列表
bootdelay 执行自动启动(bootcmd中的命令)的等候秒数 
baudrate 串口控制台的波特率 
bootfile 默认的下载文件名 
bootargs 传递给Linux内核的启动参数 
bootcmd 自动启动时执行命令 
stdin 标准输入设备, 一般是串口  
stdout 标准输出, 一般是串口,也可是LCD(VGA)
stderr   标准出错,一般是串口,也可是LCD(VGA)
serverip TFTP服务器端的IP地址 
ipaddr 本地的IP地址  
ethaddr 以太网的MAC地址 
netmask 以太网的网络掩码 

gatewayip 以太网的网关

 

指令: setenvname value
第1个参数是环境变量的名称。  
第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量
例:
setenv serverip 192.168.1.12//添加环境变量serverip 其值为 192.168.1.12
setenv serverip 192.168.1.20//在上一行的基础上把环境变量serverip
值重新赋为 192.168.1.20
setenv serverip //把 serverip 变量删除

指令: saveenv保存环境变量

指令: printenv 查看环境变量
使用该命令返回:
bootdelay=1
baudrate=115200
bootfile=”uImage”
filesize=6600EC
fileaddr=82000000
bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2
rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),27M(rootfs)
bootcmd=sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm
0x82000000
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Jan 20 2015 – 15:46:38)
serverip=192.168.1.12
ipaddr=192.168.1.129
ethaddr=00:01:02:11:88:91
netmask=255.255.255.0
gatewayip=192.168.1.1

 

查看和修改内存值指令

查看内存命令 md
修改内存命令 mm
填充内存命令 mw
复制内存命令 cp
这些命令都可以带上后缀 “.b”(字节 byte),  ”.w”(字 word),  ”.l”(4字节
long)  为单位进行操作

指令: mw填充内存命令
mw[.b,.w,.l] address value [count]
表示以[.b,.w,.l]为单位往开始地址为address的内存填充count 个值为 value
的数据
例:
mw.b 82000000 ff
100000从地址0x82000000地址开始填充0x100000(1M字节)个值为0xff的数据

指令: md查看内存命令
md[.b,.w,.l] address [count]
表示以[.b,.w,.l]为单位显示从地址address开始的内存数据,显示的数据个数为count
例:
md.b 82000000  10显示从地址0x82000000地址开始的0x10个字节的数据
返回信息:
82000000: d3 2c b4 4b 2c d3 4b b4 d3 d3 b4 b4 d3 2c b4 4b  
 .,.K,.K……,.K

指令: mm修改内存命令
mm[.b,.w,.l] address
表示以[.b,.w,.l]为单位从地址address开始修改内存数据,执行mm命令后,输入新数据后回车,地址会自动增加,按“CTRL

  • c”退出;
    例: 把第一个字节数据0xd3修改为0xd4
    mm.b 82000000
    返回:
    82000000: d3 ? d4
    82000001: 2c ? 

指令: cp复制内存命令
cp[.b,.w,.l] source target [count]
表示以[.b,.w,.l]为单位从源地址source的内存复制count个数据到 目的地址
target的内存中去;

下载的指令
指令: tftp通过网口下载文件到设备
tftp  address  filename 把文件filename下载到地址address
例:
下载
tftp 0x82000000 u-boot-hi3520d.bin
把TFTP目录下名为u-boot-hi3520d.bin的文件拷贝到SDRAM的 82000000 地址

上传
tftp 0x82000000 flash 2000000 把SDRAM的 82000000 地址开始的
0x2000000(32M)字节的拷贝到把TFTP目录下命名为flash(flash名字是否可变)

Flash操作的指令(不同的Flash不同)
指令: eraseFlash擦除命令 
erase  start  end 擦除的范围为 start – end
erase  start+len 擦除的范围为 start – (start+len-1)
erase  all 擦除所有
例:
对于SPI NOR FLASH
sf erase 0 100000 擦除flash 0 – 0x100000 的数据

指令: writeFlash烧写命令
write addr off size将SDRAM的 addr 地址处的 size 字节的数据烧写到 flash
的 off 偏移地址
例:
对于SPI NOR FLASH
sf write 82000000 0 100000 把SDRAM地址 0x82000000 处
0x100000(1M字节)的数据烧写到 flash 的 0 偏移地址

指令: readFlash读取命令
read addr off size从 Flash 的 off 偏移地址处读取 size
字节的数据到SDRAM的 addr地址
例:
对于SPI NOR FLASH
sf read 82000000 0 2000000 从 flash 的 0 偏移地址出读取
0x2000000(32M)字节的数据到 SDRAM的 82000000 地址

 

来源:

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 大奖888网页版登陆 版权所有