正点原子u-boot学习
1.shell常用命令
1.查看当前的存储设备
ll /dev/sd*
2.u-boot基本命令
1.帮助信息 help或?
2.查看板子信息 bdinfo
=> bdinfo
arch_number = 0x00000000
boot_params = 0x80000100
DRAM bank = 0x00000000
-> start = 0x80000000
-> size = 0x20000000
eth0name = FEC1
ethaddr = (not set)
current eth = FEC1
ip_addr = <NULL>
baudrate = 115200 bps
TLB addr = 0x9FFF0000
relocaddr = 0x9FF51000
reloc off = 0x18751000
irq_sp = 0x9EF4EEA0
sp start = 0x9EF4EE90
FB base = 0x00000000
3.输出环境变量信息 printenv或print
4.查看u-boot版本号 version或v
=> v
U-Boot 2016.03 (Jun 01 2021 - 11:30:50 -0400)
arm-linux-gnueabihf-gcc (Linaro GCC 4.9-2017.01) 4.9.4
GNU ld (Linaro_Binutils-2017.01) 2.24.0.20141017 Linaro 2014_11-3-git
5.修改环境变量 setenv + saveenv
eg.
=> setenv bootdelay 5
=> saveenv
Saving Environment to MMC...
Writing to MMC(0)... done
6.有时修改的环境变量值可能会有空格,比如 bootcmd、bootargs 等,
这个时候环境变量值就得用单引号括起来,
比如下面修改环境变量 bootargs 的值:
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
saveenv
上面命令设置 bootargs 的值为
“console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw”,
其中“console=ttymxc0,115200”、“root=/dev/mmcblk1p2”、“rootwait”和“rw”相当于四组“值”,
这四组“值”之间用空格隔开,所以需要使用单引号‘’将其括起来,表示这四组“值”都属
于环境变量 bootargs。
7.新建环境变量 setenv var value
setenv author xxx
saveenv
8.删除环境变量 setenv var
3.u-boot内存操作命令
1.读内存命令
md[.b, .w, .l] address [# of objects]
命令中的[.b .w .l]对应 byte、word 和 long,
也就是分别以 1 个字节、2 个字节、4 个字节来显示内存值
[# of objects]表示数据个数
2.写内存命令
nm [.b, .w, .l] address 不自增
mm [.b, .w, .l] address 自增
mw [.b, .w, .l] address value [count] 连续写多个相同的内容
3.数据拷贝
cp [.b, .w, .l] source target count
据从一段内存拷贝到另一段内存中,或者把 Nor
Flash 中的数据拷贝到 DRAM 中
4.比较数据
cmp [.b, .w, .l] addr1 addr2 count
4.网络操作命令
1.配置网络
确保 Ubuntu 主机和开发板的 IP
地址在同一个网段
setenv ipaddr 192.168.0.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv serverip 192.168.0.103
saveenv
2.dhcp命令
dhcp 用于从路由器获取 IP 地址,前提得开发连接到路由器上的,如果开发板是和电脑直
连的,那么 dhcp 命令就会失效。直接输入 dhcp 命令即可通过路由器获取到 IP 地址
注意!只能在 uboot 中 ping 其他的机器,其他机器不能 ping uboot,因为 uboot 没有对 ping
命令做处理,如果用其他的机器 ping uboot 的话会失败!
(未完待续)