uboot命令
进入uboot的命令行模式
注意:
uboot 支持 TAB 键自动补全功能
uboot 命令中的数字都是十六进制的!不是十进制的!
0.帮助命令:
?和help
输入按下回车即可查看当前 uboot 所支持的命令:
(1)?
(2)help
输入“help(或?) 命令名”即可以查看命令的详细用法:
(1)? bootz
(2) help bootz
1.信息查询命令
常用:bdinfo、printenv 和 version。
(1)bdinfo:用于查看板子信息
(2)printenv:用于输出环境变量信息
(3)version:用于查看 uboot 的版本号
2.环境变量操作命令
涉及到两个命令:setenv 和 saveenv
(1) setenv 用于设置或者修改环境变量的值(DRAM中)
(2) saveenv 用于保存修改后的环境变量(外部 flash)
一般环境变量是存放在外部 flash 中的,uboot 启动的时候会将环境变量从flash读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash 中,否则的话uboot 下一次重启会继续使用以前的环境变量值。
格式:
(1)setenv
setenv 变量 值
若命令的多个值间有空格:
setenv 变量 ‘值 1 值 2 值 3’
(2)saveenv
saveenv
setenv 设置一个不存在的变量和非空值可以新建变量;设置一个已有的变量值为空可以删除变量
3.内存操作命令(DRAM)
内存指的是DRAM
常用:md、nm、mm、mw、cp 和 cmp(DRAM)
(1)md :用于显示内存值
(2)nm :用于修改指定地址的内存值(地址不变)
(3)mm:用于修改指定地址内存值(地址自增)
(4)mw:用于使用一个指定的数据填充一段内存
(5)cp:拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 NorFlash 中的数据拷贝到 DRAM 中
(6)cmp :比较命令,用于比较两段内存的数据是否相等
格式和例子:
(1)md显示内存值:
用法:
md [.b, .w, .l] address [# of objects](默认.l)
=> md 80000000 1
80000000: 7ffefff7 ....
=> md.b 80000000 1
80000000: f7 .
=> md.w 80000000 1
80000000: fff7 ..
=> md.l 80000000 1
80000000: 7ffefff7 ....
(2)nm修改指定地址的内存值(地址不变):
用法:
nm [.b, .w, .l] address
=> nm 80000000
80000000: 7ffefff7 ? 12345678
80000000: 12345678 ?
80000000: 12345678 ?
80000000: 12345678 ? y
=> md 80000000
80000000: 12345678 xV4.
(3)mm修改指定地址内存值(地址自增):
用法:
mm [.b, .w, .l] address
=> mm.l 80000000
80000000: 12345678 ? 87654321
80000004: bdfebfef ? 1234678
80000008: edffb7fb ? y
=> md 80000000 2
80000000: 87654321 01234678 !Ce.xF#.
=>
(4)mw使用一个指定的数据填充一段内存:
用法:
mw [.b, .w, .l] address value [count]
=> md 80000000 4
80000000: 87654321 01234678 edffb7fb 3fefffff !Ce.xF#........?
=> mw 80000000 11111111 4
=> md 80000000 4
80000000: 11111111 11111111 11111111 11111111 ................
(5)cp将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 NorFlash 中的数据拷贝到 DRAM 中:
用法:
cp [.b, .w, .l] source target count
=> md 80000000 4
80000000: 11111111 11111111 11111111 11111111 ................
=> md 80000080 4
80000080: 7ffd7f3d aafbeffa fffbfdf6 be7bbfff =.............{.
=> cp 80000000 80000080 4
=> md 80000000 4
80000000: 11111111 11111111 11111111 11111111 ................
=> md 80000080 4
80000080: 11111111 11111111 11111111 11111111 ................
(6)cmp 比较两段内存的数据是否相等
用法:
cmp [.b, .w, .l] addr1 addr2 count
=> md 80000000 4
80000000: 11111111 11111111 11111111 11111111 ................
=> md 80000080 4
80000080: 11111111 11111111 11111111 11111111 ................
=> md 80008000 4
80008000: fefefff7 bdfebfef edffb7fb 3fefffff ...............?
=> cmp 80000000 80000080 4
Total of 4 word(s) were the same
=> cmp 80000000 80008000 4
word at 0x80000000 (0x11111111) != word at 0x80008000 (0xfefefff7)
Total of 0 word(s) were the same
4.网络操作命令
常用:ping、dhcp、nfs 和 tftpboot
(1)ping:检查机器的网络能否使用
(2)dhcp:使用DHCP/TFTP协议通过网络加载镜像(到DRAM)
(3)nfs:使用NFS协议通过网络加载镜像(到DRAM)
(4)tftpboot:使用TFTP协议通过网络加载镜像(到DRAM)
要使用网络操作命令,必须配置网络参数,例:
setenv ipaddr 192.168.1.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.250
saveenv
格式和例子:
(1)ping检查机器的网络能否使用
用法:
ping pingAddress
=> ping 192.168.43.1
(2)dhcp使用DHCP/TFTP协议通过网络加载镜像(到DRAM)
用法:
dhcp [loadAddress] [[hostIPaddr:]bootfilename]
(3)nfs使用NFS协议通过网络加载镜像(到DRAM)
用法:
nfs [loadAddress] [[hostIPaddr:]bootfilename]
(4)tftpboot使用TFTP协议通过网络加载镜像(到DRAM)
用法:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
5.mmc(EMMC和SD卡)操作命令
(1)mmc info 输出 MMC 设备信息
(2)mmc read 读取 MMC 中的数据。
(3)mmc wirte 向 MMC 设备写入数据。
(4)mmc rescan 扫描 MMC 设备。
(5)mmc part 列出 MMC 设备的分区。
(6)mmc dev 切换 MMC 设备。
(7)mmc list 列出当前有效的所有 MMC 设备。
(8)mmc hwpartition 设置 MMC 设备的分区。
(9)mmc bootbus…… 设置指定 MMC 设备的 BOOT_BUS_WIDTH 域的值。
(10)mmc bootpart…… 设置指定 MMC 设备的 boot 和 RPMB 分区的大小。
(11)mmc partconf…… 设置指定 MMC 设备的 PARTITION_CONFG 域的值。
(12)mmc rst 复位 MMC 设备
(13)mmc setdsr 设置 DSR 寄存器的值。