帮助

  1. help或? 查看支持的命令
  2. uboot也支持Tab自动补全

查询

  1. bdinfo 查看板子信息
  2. printenv 输出环境变量信息
  3. version 查看uboot版本

环境变量

设置环境变量

  1. setenv 环境变量 value 设置某个环境变量的值为value
  2. saveenv 保存设置好的环境变量
  3. tip:
  4. setenv boottargs 'console=ttymxc0,115200 root=/dev/mmcblklp2 rootwait rw'
  5. saveenv
  6. 当要修改的环境变量中有多组值时,值与值之间用逗号分开,且被单引号括住
  7. 环境变量都是字符串变量

新建环境变量

  1. setenv author wangxi
  2. saveenv

同修改环境变量用法一样

删除环境变量

  1. setenv author
  2. saveenv

给环境变量赋空值即删除

内存操作

显示内存值

  1. md[.b/.w/.l] address [#of objects]
  2. .b : byte 1字节
  3. .w : word 2字节
  4. .l : long 4字节
  5. address : 查看的内存起始位置
  6. [#of objects]要查看的数据个数(16进制)

修改内存值

  1. nm[.b/.w/.l] address
  2. 然后在返回信息中的问号后面写入想要保存的数值
  3. q退出
  4. mm[.b/.w/.l] address
  5. 连续修改一片地址,修改时address会自增
  6. q退出
  7. mw[.b/.w/.l] address value [count]
  8. 使用一个指定的数据填充一段内存
  9. cp[.b/.w/.l] source_address target_address count
  10. 数据拷贝
  11. cmp[.b/.w/.l] addr1 addr2 count
  12. 比较两段内存的数据是否相等

网络操作

【正点原子】I.MX6U网络环境TFTP&NFS搭建手册V1.0.pdf
https://blog.csdn.net/polaris_zgx/article/details/103571725
http://www.openedv.com/thread-318739-1-1.html

网络设置

https://www.bilibili.com/video/BV1k5411p7LB/

  • 设置WLAN分享至以太网接口
  • 设置虚拟机Vm0接口为桥连模式连接以太网网卡Real….
  • 设置虚拟机网络适配器为自定义模式接Vm0
  • 设置开发板ip地址同以太网为一个段内
  • 设置开发板网关为以太网ip
  • 设置开发板连接主机地址为Ubuntu的ip地址

    设置变量

    需要将开发板的网口与电脑或路由器连接
    相关的环境变量
ipaddr 开发板ip地址,可以不设置,使用dhcp命令从路由器获取IP地址
ethaddr 开发板的MAC地址,一定要设置
gatawayip 网关地址
netmask 子网掩码
serverip 服务器IP地址,也就是Ubuntu主机地址,用于调试代码

设置举例:

  1. setenv ipaddr 192.168.1.50
  2. setenv ethaddr 00:04:9f:04:d2:35
  3. setenv gatewayip 192.168.1.1
  4. setenv netmask 255.255.255.0
  5. setenv serverip 192.168.1.250
  6. saveenv

image.png

接通验证

  1. ping 服务器IP地址

注意!只能在 uboot 中 ping 其他的机器,其他机器不能 ping uboot,因为 uboot 没有对 ping 命令做处理

获取地址

  1. dhcp
  2. 如果选择路由器连接,从路由器获取IP地址,如果与电脑连接,此命令无效
  3. 直接读取到IP地址
  4. 还会出现Warning等字样
  5. 是因为dhcp不仅获取IP地址,还会通过TFTP启动内核

分享资源

nfs

nfs网络文件系统
用途:通过nfs在计算机之间通过网络分享资源
比如将linux镜像和设备树文件存放到Ubuntu
在U-boot中使用nfs命令将Ubuntu的两个文件下载到开发板的DRAM中,方便调试
网络调试速度更快

使用前需要Ubantu开启NFS服务,并新建一个NFS目录

  1. nfs [loadAddress] [[hostIPaddr]bootfilename]
  2. loadAddress : 要保存的DRAM地址
  3. [[hostIPaddr]bootfilename] : 要下载的主机地址、文件地址
  4. tip:
  5. nfs 80800000 192.168.1.250:/home/XI/linux/nfs/zImage

tftp

或者
也可以使用tftp命令
功能相同,只不过使用的是TFTP协议
需要在Ubuntu上搭建TFTP服务器,需要安装 tftp-hpa 和 tftpd-hpa

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd

也需要一个文件夹存放文件

mkdir /home/XI/linux/tftpboot
chmod 777 /home/zuozhongkai/linux/tftpboot
这里需要给tftpboot文件夹权限

配置tftp
新建文件 /etc/xinetd.d/tftp
如果没有路径,可以自行创建
输入内容

  1. server tftp
  2. {
  3. socket_type = dgram
  4. protocol = udp
  5. wait = yes
  6. user = root
  7. server = /usr/sbin/in.tftpd
  8. server_args = -s /home/zuozhongkai/linux/tftpboot/
  9. disable = no
  10. per_source = 11
  11. cps = 100 2
  12. flags = IPv4
  13. }

启动tftp服务
sudo service tftpd-hpa start

打开 /etc/default/tftpd-hpa 文件,修改为以下内容

  1. # /etc/default/tftpd-hpa
  2. TFTP_USERNAME="tftp"
  3. TFTP_DIRECTORY="/home/XI/linux/tftpboot"
  4. TFTP_ADDRESS=":69"
  5. TFTP_OPTIONS="-l -c -s"

重启tftp服务器
sudo service tftpd-hpa restart

tftp服务器搭建完成

传输文件
将zImage镜像文件拷贝到tftpboot文件夹中,并给予文件权限

cp zImage /home/zuozhongkai/linux/tftpboot/
cd /home/zuozhongkai/linux/tftpboot/
chmod 777 zImage

uboot中的tftp命令格式

  1. tftpboot [loadAddress] [[hostIPaddr:]bootfilename]

image.png

  1. tftp 80800000 zImage

如果出现错误,一般是未给予文件相应的权限

EMMC/SD卡

两者可以认为是一个东西
uboot认定为MMC设备

  1. mmc info 输出MMC设备信息
  2. mmc read 读取MMC中的数据到DRAM
  3. mmc read addr blk# cnt addr为DRAM的地址,blk从EMMC的第几块开始,cnt读取块数
  4. mmc write DRAMMMC中写数据
  5. mmc write addr blk# cnt 可以用来升级U-boot,通过nfs下载u-boot.bin到DRAM,然后写到MMC
  6. mmc rescan 扫描MMC设备
  7. mmc part 列出MMC设备的分区
  8. mmc dev 切换MMC设备
  9. mmc dev 0 0 切换到 SD 卡(0SD卡,1eMMC)分区 0
  10. mmc list 列出当前所有有效的MMC设备
  11. mmc hwpartition 设置MMC设备的分区
  12. mmc bootbus 设置指定MMC设备的BOOT_BUS_WIDTH域的值
  13. mmc bootpart 设置指定MMC设备的bootRPMB分区的大小
  14. mmc partconf 设置指定MMC设备的PARTITION_CONFG域的值
  15. mmc rst 复位MMC设备
  16. mmc setdsr 设置DSR寄存器的值

文件操作FAT

在uboot中对SD卡或EMMC中存储的文件操作

  1. fatinfo <interface> [<dev[:part]>]
  2. 查询指定MMC设置指定分区的文件系统信息
  3. interface 表示接口,比如mmc
  4. dev 是查询的设备号
  5. part 是要查询的分区
  6. exp: fatinfo mmc 1:1
  7. fatls <interface> [<dev[:part]>] [directory]
  8. 查询FAT格式设备的目录和文件信息
  9. fstype <interface> <dev>:<part>
  10. 用于查看MMC设备某个分区的文件系统格式
  11. fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
  12. 用于将指定的文件读取到DRAM
  13. exp: fatload mmc 1:1 80800000 zImage
  14. fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
  15. 用于将 DRAM 的数据写入到 MMC 设备中