指令: 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
UBoot常用命令手册,uboot环境变量及常用命令。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环境变量的表达表明

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

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

环 境 变 量
解 释 说 明
bootdelay
定义执行自动启动的等候秒数
baudrate
定义串口控制台的波特率
netmask
定义以太网接口的掩码
ethaddr
定义以太网接口的MAC地址
bootfile
定义缺省的下载文件
bootargs
定义传递给Linux内核的命令行参数
bootcmd
定义自动启动时执行的几条命令
serverip
定义tftp服务器端的IP地址
ipaddr
定义本地的IP地址
stdin
定义标准输入设备,一般是串口
stdout
定义标准输出设备,一般是串口
stderr
定义标准出错信息输出设备,一般是串口

因为使用类似tftp命令传输文件后,会自动更新filesize环境变量。
如:setenv updaterootfs nand write.yaffs 30000000 200000 $(filesize)
那时候尽管printenv,会发现updaterootfs=nand write.yaffs 30000000 200000
6365D0
此间的6365D0为setenv语句时环境变量filesize的大小.
亟需引起注意的是:6365D0这几个值是固定的,不会随每便传输文件后而改变。
因此若是run
updaterootfs,则那里的6365D0以此值就不是大家想要的了,咱俩想要的是上次传输的文件大小。
正确的做法是行使单引号:setenv updaterootfs nand write.yaffs 30000000
200000 ‘$(filesize)’
此刻printenv,则会来得 updaterootfs=nand
write.yaffs 30000000 200000 $(filesize) 

例:

 

 

bootm 0x82000000

Uboot相关命令介绍
printenv 查看环境变量
setenv 添加,修改,删除环境变量
例 setenv aaa 123 //添加条件变量aaa其值为123
setenv aaa 789 //在上行变量基础上把aaa的值修改(重设)为789
setenv aaa //把aaa变量删除

U-boot常用命令

查看和改动环境变量指令

saveenv 保存环境变量
flinfo 查看flash信息
bdinfo 查看开发板信息
翻开和修改内存值的指令(可以查看和改动SDRAM和寄存器值)
[.b, .w, .l]代表了查看和修改格局:bit、word、long
md 查看内存
参数 md.b [address] //按字节展现
md.w [address] //按字彰显
md.l [address] //按长字突显

 

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

nm 修改内存值 (指定地点)
参数 nm.b [address] //按字节展现
nm.w [address] //按字彰显
nm.l [address] //按长字显示

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

gatewayip 以太网的网关

mm 内存修改,地址自动递增
参数 mm.b [address] //按字节突显
mm.w [address] //按字突显
mm.l [address] //按长字彰显

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

 

mw 用指定的数码填充内存
参数 mw.b [address value ] //按字节显示
mw.w [address value ] //按字显示
mw.l [address value ] //按长字突显

应用种种吩咐时,可以利用其起首的好多个假名代表它。比如tftpboot命令,可以使用t、tf、tft、tftp等字母代表,只要任何命令不以那些假名伊始即可。

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

cp 内存的正片(包蕴内存与Nor Flash间的数目拷贝)
参数 cp.b [source target count] //按字节显示
cp.w [source target count] //按字突显
cp.l [source target count] //按长字显示

当运行一个发令之后,如果它是可另行执行的(代码中使用U_BOOT_CMD定义这些命令时,第3个参数是1),若想再也运行可以直接输入回车。

一声令下: saveenv保存环境变量

例 cp source dest len

U-Boot接受的数额都是16进制,输入时方可大致前缀0x、0X。

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

protect 扇区写体贴(对Flash 写敬服)

下边介绍常用的吩咐:

 

protect on all 敬爱全开
protect off all 保护解除

(1)协理命令help。

查看和改动内存值指令

protect on start end //start end是照开头地址和甘休地址定义范围,
protect off start end //start是有限帮忙块的开局部址;
//end 是爱惜末尾块的终结地址。
比如:珍贵Sector 2和Sector 3区域命令为protect 20000 3ffff

运作help命令可以看看U-Boot中具备命令的效益,倘使要查看某个命令的运用办法,运行“help 命令名”,比如“help bootm”。

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

protect on start +size //start +size是照早先地址和操作字节数定义范围
protect off start +size //start是尊崇块的开局部址;
//size 是维护的字节数。
譬如:尊敬Sector 2和Sector 3区域命令为protect 20000 +20000

能够应用“?”来取代“help”,比如直接输入“?”、“? bootm”。

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

protect on N:SF[-SL]
protect off N:SF[-SL]
//N:SF[-SL]是根据组和扇区,N 代表Flash 的Block号,
//SF 代表爱惜初叶Sector号,SL 表示珍贵得了Sector号。
例如:珍贵Block1 的Sector 2和Sector 3区域命令为protect 1:2-3

(2)下载命令。

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

protect on bank N //bank N是维护全部Block,
protect off bank N //保护Block号为N 的整个Flash

U-Boot帮忙串口下载、互连网下载,相关命令有:loadb、loads、loadx、loady和tftpboot、nfs。

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

erase 擦除Flash的命令
erase all 擦除整套
erase start end //start end是照伊始地址和终止地址定义范围,
//start是擦除块的开头地址;
//end 是擦除末尾块的终结地址。
比如:擦除Sector 2和Sector 3区域命令为erase 20000 3ffff

前多少个串口下载命令使用格局一般,以loadx命令为例,它的用法为“loadx [
off ] [ baud
]”。中括号“[]”表示其中的参数可以概括,off代表文件下载后存放的内存地址,baud表示使用的波特率。假如baud参数省略,则接纳当前的波特
率;假设off参数省略,存放的地点为布局文件中定义的宏CFG_LOAD_ADDR。

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

erase start +size //start +size是照起先地址和操作字节数定义范围
//start是擦除块的前奏地址;
//size 是擦除的字节数。
诸如:擦除Sector 2和Sector 3区域命令为erase 20000 +20000

tftpboot命令使用TFTP协议从服务器下载文件,服务器的IP地址为环境变量
serverip。用法为“tftpboot [loadAddress]
[bootfilename]”,loadAddress表示文件下载后存放的内存地址,bootfilename表示要下载的公文的称谓。假若
loadAddress省略,存放的地址为布局文件中定义的宏CFG_LOAD_ADDR;如若bootfilename省略,则动用单板的IP地址构造
一个文本名,比如单板IP为192.168.1.17,则缺省的文书名为C0A80711.img。

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

erase N:SF[-SL]
//N:SF[-SL]是依照组和扇区,N 表示Flash 的Block号,
//SF 代表擦除开端Sector号,SL 代表擦除为止Sector号。
譬如说:体贴Block1 的Sector 2和Sector 3区域命令为erase 1:2-3

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

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

erase bank N //bank N是擦除整套Block,
//擦除Block号为N 的整个Flash

下载文件成功后,U-Boot会自动创设或更新环境变量filesize,它代表下载的文本的长度,可以在一连命令中采纳“$(filesize)”来引用它。

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

从Nand flash中读数据
Nand read dest(sdram) src(Flash) size

(3)内存操作命令。

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 flash擦除数据
Nand erase start size

常用的吩咐有:查看内存命令md、修改内存命令md、填充内存命令mw、拷贝命令cp。那一个
命令都足以带上后缀“.b”、“.w”或“.l”,表示以字节、字(2个字节)、双字(4个字节)为单位展开操作。比如“cp.l 30000000
31000000 2”将从先导地址0x30000000处,拷贝2个双字到起来地址为0x31000000的地点。

一声令下: 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 flash中写多少
Nand write src(sdram) dest size

md命令用法为“md[.b, .w, .l] address [count]”,表示以字节、字或双字(默许为双字)为单位,展现从地点address早先的内存数据,突显的数据个数为count。

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

 

mm命令用法为“mm[.b, .w, .l] address”,表示以字节、字或双字(默许为双字)为单位,从地点address先河修改内存数据。执行mm命令后,输入新数据后回车,地址会自行增添,Ctrl+C退出。

 

原稿链接:

mw命令用法为“mw[.b, .w, .l] address value [count]”,表示以字节、字或双字(默许为双字)为单位,往开端地址为address的内存中填充count个数据,数据值为value。

来源:

cp命令用法为“cp[.b, .w, .l] source target count”,表示以字节、字或双字(默许为双字)为单位,从源地址source的内存拷贝count个数据到目的地址的内存。

 

(4)NOR Flash操作命令。

常用的指令有翻动Flash新闻的flinfo命令、加/解写体贴命令protect、擦除
命令erase。由于NOR Flash的接口与一般内存相似,所以有的内存命令可以在NOR Flash上使用,比如读NOR
Flash时可以利用md、cp命令,写NOR Flash时可以选用cp命令(cp依据地方分辨出是NOR Flash,从而调用NOR
Flash驱动完成写操作)。

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

Bank # 1: AMD: 1x Amd29LV800BB (8Mbit)

Size: 1 MB in 19 Sectors

Sector Start Addresses:

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

00020000 (RO) 00030000 00040000 00050000 00060000

00070000 00080000 00090000 000A0000 000B0000

000C0000 000D0000 000E0000 000F0000 (RO)

其中的RO表示该扇区处于写爱戴意况,只读。

对于只读的扇区,在擦除、烧写它前面,要先祛除写珍贵。最简便的指令为“protect off all”,解除所有NOR Flash的写爱抚。

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

小心:其中的地方范围,刚好是一个扇区的开始地址到另一个(或同一个)扇区的了断地址。比如要擦除Amd29LV800BB的前5个扇区,执行的授命为“erase 0 0x2ffff”,而非“erase 0 0x30000”。

(5)NAND Flash操作命令。

NAND Flash操作命令惟有一个:nand,它按照不一致的参数举行不相同操作,比如擦除、读取、烧写等。

“nand info”查看NAND Flash信息。

“nand erase [clean] [off size]”擦除NAND
Flash。加上“clean”时,表示在各样块的第三个扇区的OOB区加写入清除标记;off、size代表要擦除的上马晃动地址和尺寸,若是简单
off和size,表示要擦除整套NAND Flash。

“nand read[.jffs2] addr off size”从NAND Flash偏移地址off处读出size个字节的数据,存放到开首地址为addr的内存中。是不是加后缀“.jffs”的异样只是读操作时的ECC较验方法差别。

“nand write[.jffs2] addr off size”把起头地址为addr的内存中的size个字节数据,写到NAND Flash的晃动地址off处。是还是不是加后缀“.jffs”的出入只是写操作时的ECC较验方法不相同。

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

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

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

(6)环境变量命令。

“printenv”命令打印全体环境变量,“printenv name1 name2 …”打印名字为name1、name2、……”的环境变量。

“setenv name value”设置名字为name的环境变量的值为value。

“setenv name”删除名字为name的环境变量。

地方的装置、删除操作只是在内存中展开,“saveenv”将改成后的有着环境变量写入NOR Flash中。

(7)启动命令。

不带参数的“boot”、“bootm”命令都是履行环境变量bootcmd所指定的通令。

“bootm [addr [arg
…]]”命令启动存放在地方addr处的U-Boot格式的映像文件(使用U-Boot目录tools下的mkimage工具成立获得),[arg
…]代表参数。如果addr参数省略,印象文件所在地方为布局文件中定义的宏CFG_LOAD_ADDR。

“go addr [arg …]”与bootm命令类似,启动存放在地方addr处的二进制文件, [arg …]意味着参数。

“nboot [[[loadAddr] dev] offset]”命令将NAND
Flash设备dev上偏移地址off处的映像文件复制到内存loadAddr处,然后,假使条件变量autostart的值为“yes”,就开行这一个映
像。假设loadAddr参数省略,存放地方为布局文件中定义的宏CFG_LOAD_ADDR;若是dev参数省略,则它的取值为环境变量
bootdevice的值;如若offset参数省略,则默许为0。

2. U-Boot限令使用实例

上边通过一个事例来演示如何行使各样吩咐烧写内核印象文件、yaffs印象文件,并启动系统。

(1)制作内核印象文件。

对于本书使用的Linux 2.6.22.6本子,编译内核时可以直接生成U-Boot格式的印象文件uImage。

对于无法向来生成uImage的内核,制作方法在U-Boot根目录下的README文件中
有表明,如若已经编译好的基石文件为vmlinux,它是ELF格式的。mkimage是U-Boot目录tools下的工具,它在编译U-Boot时自
动生成。执行以下3个指令将基本文件vmlinux制作为U-Boot格式的映像文件uImage,它们首先将vmlinux转换为二进制格式,然后压
缩,最后构造尾部新闻(里面包含有文件名称、大小、类型、CRC较验码等):

① arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin

② gzip -9 linux.bin

③ mkimage -A arm -O linux -T kernel -C gzip -a 0x30008000 -e 0x30008000 -n “Linux Kernel Image” -d linux.bin.gz uImage

(2)烧写内核印象文件uImage。

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

下一场运行如下命令下载文件,擦除、烧写NAND Flash:

① tftp 0x30000000 uImage 或 nfs 0x30000000 192.168.1.57:/work/nfs_root/uImage

② nand erase 0x0 0x00200000

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

第3条命令之所以接纳“nand write.jffs2”而不是“nand
write”,是因为前者不须求文件的长短是页对齐的(512字节对齐)。也可以利用“nand
write”,可是急需将指令中的长度参数改为$(filesize)向上拓展512取整后的值。比如uImage的大大小小为1540883,向上拓展
512取整后为1541120(即0x178400),可以接纳命令“nand write 0x30000000 0x0
0x178400”进行烧写。

(3)烧写yaffs文件系统影象。

借使yaffs文件系统印象的文本名为yaffs.img,首先将它放在主机上的tftp或nfs目录下,确保已经拉开tftp或nfs服务;然后实施如下命令下载、擦除、烧写:

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

② nand erase 0xA00000 0x3600000

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

那时,重启系统,在U-Boot尾数3秒未来,就会自动启动Linux系统。

(4)烧写jffs2文件系统印象。

如果jffs2文件系统印象的公文名为jffs2.img,首先将它座落主机上的tftp或nfs目录下,确保已经开启tftp或nfs服务;然后实施如下命令下载、擦除、烧写:

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

② nand erase 0x200000 0x800000

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

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

相关文章