Uboot 之 三、常用uboot命令

uboot启动log简析

  • 1、以后带有调试uboot性质的开发,uboot都是烧写到sd卡,用别的方法会将 uboot,linux系统镜像zImage,文件系统,设备树一起烧进去。但目前我们只想更新 uboot,将所有东西都烧进去显然会浪费时间。

uboot命令使用

  • 1、help
    help 或者 ?:查看所有命令的帮助信息。
    ? 命令名 :查看某一命令的帮助信息
  • 2、信息查询
    bdinfo:print Board Info structure。 page 691
    printenv:查看当前板子的环境变量
  • 3、setenv 命令
    设置 环境变量
    setenv bootdelay 5:设置 bootdela y为5,此时这个还保存在code中,使用saveenv 将其保存到 emmc 中。重启开发板可以看到倒计时生效。如果要改成的变量的值字符串中有空格,那么值要用单引号包起来
    也可以新建环境变量。
    也可以删除环境变量。
  • 4、saveenv 命令
    保存环境变量,将 uboot 中的默认环境变量写到 emmc 中。(重启板子,可以看到“bad crc,using default environment" 这条log消失。)
  • 5、新建环境变量(自定义)
    setenv 变量名 变量值
    setenv 变量名 ( 删除一个环境变量 )
  • 6、内存操作命令 page 693
    md:用于显示内存值,ddr。
    nm:用于修改指定地址的内存值
    mm:修改指定地址内存值
    mw:使用一个指定的数据填充一段内存
    cp:数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中
    cmp:用于比较两段内存的数据是否相等
  • 7、网络操作命令 page 696
    ping命令
    判断uboot的网络驱动是否工作,可以利用ftp,nfs 从 ubuntu 里面下载系统镜像
    dhcp命令
    让路由器给板子分配一个 ip 地址
    nfs命令
    通过 network file system 可以使计算机之间通过网络来分享资源。
    目的是为了方便的调试程序,在 uboot 中使用 nfs 命令将 Ubuntu 中的 linux 镜像和设备树下载到 开发板的DRAM 中。
    通过网络将编译好的 linux 镜像和设备树文件下载到 DRAM 中,然后就可以直接运行。
    实例:
nfs 80800000 192.168.168.1.77:/home/jl/linux/nfs/zImage

192.168.1.77 是ubuntu主机ip,即server ip;zImage 就是 编译出来的 系统镜像。

tftp 命令
和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp命令 使用的是 TFTP 协议。
ubuntu主机 作为 tftp服务器。
示例:(把 u-boot.imx 放到 tftpboot 目录下,然后调用下面的 uboot 指令,把 uboot 文件 下载到 dram 的 8080 0000 地址处)

tftp 80800000 u-boot.imx 
  • emmc和sd卡操作指令
    mmc代指 emmc 或者 sd卡。
    mmc info:输出当前选中的 mmc info 设备的信息
    mmc rescan:扫描当前开发板上所有的mmc设备
    mmc list:查看当前开发板一共有几个mmc设备
    mmc dev:用于切换当前 MMC 设备 / 设置当前设备
mmc dev 0	//切换到sd卡 第0个分区
mmc dev 1	//切换到emmc 第0个分区
mmc dev 0:1	//切换到sd卡 第1个分区,不写默认是第0个分区

mmc part:有时候 SD 卡或者 EMMC 会有多个分区,可以使用命令“mmc part”来查看其分区。若 emmc 里面烧写了 linux 系统的话,有3个分区,第0个分区存放uboot,第1个分区存放 linux 镜像文件和设备树,第2个分区存放根文件系统。第0个分区没有格式化,所以mmc part 识别不出来。
mmc read:用于读取 mmc 设备的数据到 dram 中

mmc dev 1 0 //切换到 MMC 分区 0
mmc read 80800000 600 10 
//读取分区0 第 0x600 块开始 0x10 个数据到dram 80800000
//其实就是uboot环境变量存储的起始地址。

mmc write:将dram中的数据写到 mmc 设备里面

mmc dev 0 0		//切换到sd卡第0个分区
mmc write 80800000 2 32E
//将dram 8080 0000 开始的0x32E的数据向sd卡第0个分区
//第2个块开始写
//其实就是uboot再写入sd卡,重启看看编译时间确定是否
//写成功

mmc erase:要擦除 MMC 设备的指定块。少用。

  • fat格式文件系统操作命令
    只支持 FAT 格式的文件系统
    fatinfo:查询指定 MMC 设置指定分区的文件系统信息
fatinfo mmc 1:1
//查询EMMC 分区 1 的文件系统信息

fatinfo mmc 0:0-----存放uboot,识别不出来
fatinfo mmc 0:1-----fat格式,存放zImage,设备树,dtb
fatinfo mmc 0:2-----如果有根文件系统,就是ext4
fatinfo mmc 1:0-----识别不出来
fatinfo mmc 1:1-----fat格式,存放zImage,设备树,dtb
fatinfo mmc 1:2-----如果有根文件系统,就是ext4

fatls:用于查询 FAT 格式设备的目录和文件信息

fatls mmc 1:1
//查询 EMMC 分区 1 中的所有的目录和文件

fstype:查看 MMC 设备某个分区的文件系统格式

fstype mmc 1:0
fstype mmc 1:1
fstype mmc 1:2
//查看emmc 3 个分区的文件系统格式

fatload:用于将mmc中指定的文件读取到 DRAM 中,uboot启动linux kernel就是用这个指令(重点)

fatload mmc 1:1 80800000 zImage
//将 EMMC 分区 1 中的 zImage 文件读取到 DRAM 中的0X80800000 地址

fatwrite:将 DRAM 中的数据写入到 MMC 设备中

  • EXT 格式文件系统操作命令
    常用的就四个命令,分别为:
    ext2load、 ext2ls、 ext4load、 ext4ls 和 ext4write。这些命令的含义和使用与 fatload、 fatls 和 fatwrit一样,只是 ext2 和 ext4 都是针对 ext 文件系统的。比如 ext4ls 命令, EMMC 的分区 2 就是 ext4格式的
ext4ls mmc 1:2
//使用 ext4ls 就可以查询 EMMC 的分区 2 中的文件和目录
  • boot操作命令
    常用的跟 boot 有关的命令有: bootz、 bootm 和 boot。
  • bootz
    用于启动linux 系统
    利用 tftp 先将 zImage 和 dtb copy to dram 指定位置
tftp 80800000 zImage
tftp 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 – 83000000

或者
从emmc启动,也要先将 zImage 和 dtb copy to dram 指定位置

fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 - 83000000

bootm:用于启动 uImage镜像文件
boot:也是用来启动 Linux 系统的,只是 boot 会读取环境变量 bootcmd 来启动 Linux 系统。

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000'
saveenv
boot

uboot 倒计时结束以后就会启动 Linux 系统,其实就是执行的 bootcmd 中的启动命令

  • 其它指令
    reset:重启
    go:调到 dram 指定的地址处执行应用
tftp 87800000 printf.bin
go 87800000

注意一定要是bin文件,若是elf格式调用该指令板子直接重启。

run:用于运行环境变量中定义的命令,最大的作用在于运行我们自定义的环境变量。

setenv mybootemmc 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ullalientek-emmc.dtb;bootz 80800000 - 83000000'

setenv mybootnet 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000'

saveenv

run mybootemmc (or mybootnet)

mtest:一个简单的内存读写测试命令,可以用来测试自己开发板上的 DDR

mtest 80000000 80001000
//测试范围为 0X80000000~0X80001000,要结束测试就按下键盘上的“Ctrl+C”键。
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值