help #显示uboot支持所有的命令
? 命令 #查看命令的内容
bdinfo #查看板子信息
printenv #输出环境变量信息
version #用于查看 uboot 的版本号
setenv #用于设置或者修改环境变量的值。
saveenv #用于保存修改后的环境变量
原理:
一般环境变量是存放在外部 flash( EMMC 这种掉电数据不丢失的介质) 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash 中,否则的话uboot 下一次重启会继续使用以前的环境变量值。
#通过 setenv 给 author 赋空值,也就是什么都不写来删除环境变量 author。重启
uboot 就会发现环境变量 author 没有了 这样达到删除效果setenv author
saveenv
内存操作命令就是用于直接对 DRAM 进行读写操作的,常用的内存操作命令有 md、nm、
mm、mw、cp 和 cmp。我们依次来看一下这些命令都是做什么的。
md 命令用于显示内存值,格式如下:
md[.b, .w, .l] address [# of objects]
命令中的[.b .w .l]对应 byte、word 和 long,也就是分别以 1 个字节、2 个字节、4 个字节
来显示内存值。address 就是要查看的内存起始地址,[# of objects]表示要查看的数据长度,这个数据长度单位不是字节,而是跟你所选择的显示格式有关。比如你设置要查看的内存长度为
20(十六进制为 0x14),如果显示格式为.b 的话那就表示 20 个字节;如果显示格式为.w 的话就
表示 20 个 word,也就是 20*2=40 个字节;如果显示格式为.l 的话就表示 20 个 long,也就是
20*4=80 个字节。另外要注意:
uboot 命令中的数字都是十六进制的!不是十进制的!
nm 命令用于修改指定地址的内存值,命令格式如下:
nm [.b, .w, .l] address
nm 命令同样可以以.b、.w 和.l 来指定操作格式,比如现在以.l 格式修改 0x80000000 地址
的数据为 0x12345678。输入命令:
nm.l 80000000 回车
输入上述命令以后如图 30.4.3.2 所示
80000000 表示现在要修改的内存地址,0500e031 表示地址 0x80000000 现
在的数据,?后面就可以输入要修改后的数据 0x12345678,输入完成以后按下回车,然后再输
入‘q’即可退出
修改成功与否,可以通过 md查看。
mm 命令也是修改指定地址内存值的,使用 mm 修改内存值的时候地址会自增,而使用命
令 nm 的话地址不会自增。
命令 mw 用于使用一个指定的数据填充一段内存,命令格式如下:
mw [.b, .w, .l] address value [count]
mw 命令同样可以以.b、.w 和.l 来指定操作格式,address 表示要填充的内存起始地址,value
为要填充的数据,count 是填充的长度。比如使用.l 格式将以 0X80000000 为起始地址的 0x10 个
内存块(0x10 * 4=64 字节)填充为 0X0A0A0A0A,命令如下:
mw.l 80000000 0A0A0A0A 10
cp 是数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 Nor
Flash 中的数据拷贝到 DRAM 中。命令格式如下:
cp [.b, .w, .l] source target count
cp 命令同样可以以.b、.w 和.l 来指定操作格式,source 为源地址,target 为目的地址,count
为拷贝的长度。我们使用.l 格式将 0x80000000 处的地址拷贝到 0X80000100 处,长度为 0x10 个
内存块(0x10 * 4=64 个字节),命令如下所示:
cp.l 80000000 80000100 10
mp 是比较命令,用于比较两段内存的数据是否相等,命令格式如下:
cmp [.b, .w, .l] addr1 addr2 count
cmp 命令同样可以以.b、.w 和.l 来指定操作格式,addr1 为第一段内存首地址,addr2 为第
二段内存首地址,count 为要比较的长度。我们使用.l 格式来比较 0x80000000 和 0X80000100 这
两个地址数据是否相等,比较长度为 0x10 个内存块(16 * 4=64 个字节),命令如下所示:
cmp.l 80000000 80000100 10
uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linux
kernel 的时候需要使用到 uboot 的网络功能做调试。uboot 支持大量的网络相关命令,比如 dhcp、ping、nfs 和 tftpboot
setenv ipaddr 192.168.1.50
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.253
saveenv
注意,网络地址环境变量的设置要根据自己的实际情况,确保 Ubuntu 主机和开发板的 IP
地址在同一个网段内,比如我现在的开发板和电脑都在 192.168.1.0 这个网段内,所以设置开
发板的 IP 地址为 192.168.1.50,我的 Ubuntu 主机的地址为 192.168.1.253,因此 serverip 就是
192.168.1.253。ethaddr 为网络 MAC 地址,是一个 48bit 的地址,如果在同一个网段内有多个
开发板的话一定要保证每个开发板的 ethaddr 是不同的,否则通信会有问题!设置好网络相关
的环境变量以后就可以使用网络相关命令了
ping 命令:ping ip地址
dhcp 命令:dhcp 用于从路由器获取 IP 地址前提得开发板连接到路由器上的,如果开发板是和电脑直连的,那么 dhcp 命令就会失效
nfs 命令:
nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源
nfs [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress 是要保存的 DRAM 地址,[[hostIPaddr:]bootfilename]是要下载的文件地址tftp 命令.
ftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令
使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器
uboot 中常用于操作 MMC 设备的命令为“mmc”。mmc 是一系列的命令,其后可以跟不同的参数。
reset 命令 #复位重启
go 命令用于跳到指定的地址处执行应用,命令格式如下:
go addr [arg ...]
addr 是应用在 DRAM 中的首地址 arg是参数,可选run 命令
run 命令用于运行环境变量中定义的命令
mtest 命令
mtest 命令是一个简单的内存读写测试命令,可以用来测试自己开发板上的 DDR
mtest [start [end [pattern [iterations]]]]
start是要测试的DRAM开始地址,end是结束地址
其他命令以后再继续更新。。。。