如果不是在芯片级公司工作,而是在产品级公司工作,当我们拿到一款芯片,厂家都会提供可以使用的bootloader,我们对u-boot基本掌握就行,只需要掌握如下命令。
目录
1.1 查看帮助【help / ?】
直接使用help或“?”可以查看当前uboot支持的命令
可以使用 help +其他命令,查看命令的使用说明。
1.2 查看板子信息【bdinfo】
1.3 查看当前板子环境变量【printenv】
1.4 设置环境变量【setenv】
环境变量如果不存在,则该命令创建变量,变量存在则修改替换
设置完环境变量记得保存,保存环境变量【saveenv】,否则重启后将恢复原来的值。
设置简单环境变量:=> setenv bootdelay 5
设置字符串形式的环境变量,需要用单引号括起来
=> setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
删除环境变量,直接设置某个变量为空,如:=> setenv aaaa
1.5 uboot内存操作命令
内存操作命令就是用于直接对内存操作命令,常用内存命令有md、nm、 mm、mw、cp和 cmp。
1.5.1 显示内存值【md】
命令格式:
md[.b, .w, .l] address [# of objects]
命令中的[.b .w .l]对应 byte、word 和long,也就是分别以 1 个字节、2 个字节、4 个字节显示
如查看以0X30000000开始的10个字节的内存值,显示格式为.b(10的16进制是0xa)
md.b 30000000 a
1.5.2 修改内存值【nm】
命令格式:nm [.b, .w, .l] address
它会先读取地址里面原来的内容,在?后面修改新值,输入q退出修改。
1.5.3 修改内存值(自增)【mm】
mm [.b, .w, .l] address,每次修改地址值会自增
1.5.4 快速填充内存【nw】
命令格式:mw [.b, .w, .l] address value [count]
将地址address后面的count个b/w/l长度都修改为值value
1.6 数据拷贝【cp】
将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把NorFlash 中的数据拷贝到DRAM 中
命令格式:cp [.b, .w, .l] source target count
1.7 数据比较【cmp】
cmp 是比较命令,用于比较两段内存的数据是否相等
命令格式:cmp [.b, .w, .l] addr1 addr2 count
1.8 uboot网络操作命令
1.8.1 测试网络【ping】
ping ipaddress
1.8.2 网络文件系统【nfs】
前提是先配置nfs服务器,linux下命令:sudo apt-get install nfs-kernel-server
命令格式:
nfs [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress 是要保存的 DRAM 地址,[[hostIPaddr:]bootfilename]是要下载的文件地址。
如将文件下载到 80800000 地址:
nfs 80800000 192.168.2.25:/home/fourth/linux/nfs/zImage
1.8.3 简单文件传输【tftp】
命令格式:tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress 是文件在 DRAM 中的存放地址,[[hostIPaddr:]bootfilename]是要从Ubuntu 中下载的文件。
使用tftp,在windows的话直接搜索tftpd这个软件。
在linux下32位运行 sudo apt-get install tftpd-hpa,64位运行sudo apt-get install tftpd openbsd-inetd,安装完默认路径在/srv/tftp,可以通过修改/etc/inetd.conf中最后一个路径来修改文件路径。
tftp 40000000 test.txt 把主机上test.txt下载到内存40000000的位置,test.txt中只有abcd几个字符,下载完毕,我们通过md命令查看内存,验证一下,成功。