Uboot 常用指令

2019-12-17 13:16栏目:bob体育app
TAG:

gatewayip 以太网的网关

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处。

进入U-Boot控制界面后,可以运行各种命令,比如下载文件到内存,擦除、读写Flash,运行内存、NOR Flash、NAND Flash中的程序,查看、修改、比较内存中的数据等。

例:

② nand erase 0xA00000 0x3600000

 

常用的命令有:查看内存命令md、修改内存命令md、填充内存命令mw、拷贝命令cp。这些
命令都可以带上后缀“.b”、“.w”或“.l”,表示以字节、字(2个字节)、双字(4个字节)为单位进行操作。比如“cp.l 30000000
31000000 2”将从开始地址0x30000000处,拷贝2个双字到开始地址为0x31000000的地方。

查看和修改内存值指令

(7)启动命令。

指令: 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

(2)下载命令。

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

“nand info”查看NAND 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 的数据

② nand erase 0x0 0x00200000

 

“nand read.yaffs addr off size”从NAND Flash偏移地址off处读出size个字节的数据(包括OOB区域),存放到开始地址为addr的内存中。

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

直接运行“flinfo”即可看到NOR Flash的信息,有NOR Flash的型号、容量、各扇区的开始地址、是否只读等信息。比如对于本书基于的开发板,flinfo命令的结果如下:

 

00000000 (RO) 00004000 (RO) 00006000 (RO) 00008000 (RO) 00010000 (RO)

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

“nboot [[[loadAddr] dev] offset]”命令将NAND
Flash设备dev上偏移地址off处的映像文件复制到内存loadAddr处,然后,如果环境变量autostart的值为“yes”,就启动这个映
像。如果loadAddr参数省略,存放地址为配置文件中定义的宏CFG_LOAD_ADDR;如果dev参数省略,则它的取值为环境变量
bootdevice的值;如果offset参数省略,则默认为0。

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

① tftp 0x30000000 yaffs.img 或 nfs 0x30000000 192.168.1.57:/work/nfs_root/yaffs.img

指令: saveenv保存环境变量

“nand write.yaffs addr off size”把开始地址为addr的内存中的size个字节数据(其中有要写入OOB区域的数据),写到NAND Flash的偏移地址off处。

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

系统启动后,就可以使用“mount -t jffs2 /dev/mtdblock1 /mnt”挂接jffs2文件系统。

指令: bootm

1. U-Boot的常用命令的用法

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

U-Boot中的环境命令可以使用$(filesize)来确定刚下载(传输)得到的文件大小.

 

③ nand write.yaffs 0x30000000 0xA00000 $(filesize)

查看和修改环境变量指令

erase命令常用的格式为“erase start
end”──擦除的地址范围为start至end、“erase start +len”──擦除的地址范围为start至(start + len
– 1),“erase all”──表示擦除所有NOR Flash。

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

前几个串口下载命令使用方法相似,以loadx命令为例,它的用法为“loadx [
off ] [ baud
]”。中括号“[]”表示里面的参数可以省略,off表示文件下载后存放的内存地址,baud表示使用的波特率。如果baud参数省略,则使用当前的波特
率;如果off参数省略,存放的地址为配置文件中定义的宏CFG_LOAD_ADDR。

bootm 0x82000000

00070000 00080000 00090000 000A0000 000B0000

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

对于只读的扇区,在擦除、烧写它之前,要先解除写保护。最简单的命令为“protect off all”,解除所有NOR Flash的写保护。

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

假设jffs2文件系统映像的文件名为jffs2.img,首先将它放在主机上的tftp或nfs目录下,确保已经开启tftp或nfs服务;然后执行如下命令下载、擦除、烧写:

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

首先将uImage放在主机上的tftp或nfs目录下,确保已经开启tftp或nfs服务。

指令: 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 变量删除

③ nand write.jffs2 0x30000000 0x200000 $(filesize)

指令: 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

(4)烧写jffs2文件系统映像。

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

md命令用法为“md[.b, .w, .l] address [count]”,表示以字节、字或双字(默认为双字)为单位,显示从地址address开始的内存数据,显示的数据个数为count。

来源:

nfs命令使用NFS协议下载文件,用法为“nfs [loadAddress]
[host ip
addr:bootfilename]”。loadAddress、bootfilename的意义与tftpboot命令一样,host ip
addr表示服务器的IP地址,默认为环境变量serverip。

(5)NAND Flash操作命令。

“nand dump off”,将NAND Flash偏移地址off的一个扇区的数据打印出来,包括OOB数据。

版权声明:本文由bob体育app发布于bob体育app,转载请注明出处:Uboot 常用指令