uboot命令使用学习(6)

学习目标:

BOOT操作命令
UBOOT其他操作命令

学习内容:

学习使用了正点原子的I.MX6ULL教程及开发平台。
1、bootz命令
2、bootm命令
3、boot命令
4、reset命令
5、go命令
6、run命令
7、mtest命令

学习时间:

2022-06-02

学习产出:

1、BOOT操作命令
uboot的本质工作是引导Linux,所以uboot肯定有相关的命令来启动Linux。常用的有关命令有bootz、bootm和boot。
要启动Linux,需要先将Linux的镜像文件拷贝到DRAM中,如果使用到设备树的话也需要将设备树拷贝到DRMA中。可以从EMMC或者NAND等存储设备中将Linux镜像和设备树文件拷贝到DRAM,也可以通过nfs或者tftp将Linux镜像和设备树文件下载到DRAM中。不管采用哪种方法,只要能将Linux镜像和设备树文件存到DRAM中就行,然后使用命令里启动Linux。
1.1、bootz命令
bootz命令用于启动zImage镜像文件,bootz的命令格式如下:
bootz [addr [initrd[:size]] [fdt]]
addr表示Linux的镜像文件在DRMA中的位置;
initrd表示initrd文件在DRAM中的地址,如果不使用initrd文件使用“-”代替;
fdt表示设备树文件在DRAM中的地址。
使用网络和EMMC两种方法启动Linux系统。
方法1:通过网络启动
将Linux镜像(zImage格式)和设备树文件放在Ubuntu主机的tftpboot文件夹下,如图所示。
在这里插入图片描述
注意!必须给予设备树和Linux镜像文件可执行权限。
使用tftp命令将zImage下载到DRAM的0x80800000地址处,将设备树文件下载到DRAM的0x83000000地址处,如图所示。
在这里插入图片描述
然后使用bootz命令启动Linux,命令为:
bootz 80800000 - 83000000
j结果如图所示。
在这里插入图片描述
方法2:从EMMC启动
如果要从EMM启动的话,需要使用命令fatload将Linux镜像和设备树从EMMC的分区1中拷贝到DRMA中,然后使用bootz命令启动即可。先使用命令fatls查看EMMC的分区1中是否存在Linux的镜像文件zImage和设备树文件,如果没有的话需要先使用网络下载将zImage镜像和设备树文件下载到DRMA中然后使用fatwrite命令将DRAM中的zImage镜像和设备树文件写入到EMMC的分区1中,在使用fatload命令将EMMC的分区1中的zImage镜像和设备树文件写入到DRMA中。假设EMMC的分区1中没有zImage镜像和设备树文件,具体操作方法如下:
(1)通过网络tftp或ftp命令将zImage镜像和设备树文件下载到DRMA中,如图所示。
在这里插入图片描述
(2)使用fatwrite命令将zImage镜像和设备树文件下入到EMMC的分区1中,然后使用fatls命令查看EMMC的分区1中是否写入成功,如图所示。
在这里插入图片描述
(3)重启开发板,以保证DRAM中的zImage镜像和设备树文件是从EMMC的分区1中读入的,然后使用命令fatload命令,将EMMC分区1中的zImage镜像和设备树文件读入到DRM中,如图所示。
在这里插入图片描述
(4)使用bootz命令启动,如图所示。
在这里插入图片描述
1.2、bootm命令
bootm命令和bootz命令功能类似,但是bootm命令用于启动uImage镜像文件。如果不使用设备树,bootm的命令如下:
bootm addr
addr就是uImage在DRAM中的首地址。
如果要使用设备树,那么bootm命令和bootz命令一样,格式如下:
bootm [addr [initrd[:size]] [fdt]]
addr是uImage在DRAM的首地址;
initrd是initrd的首地址,如果为空用“-”代替;
fdt是设备树文件在DRAM的首地址。
1.3、boot命令
boot命令也是用来启动Linux系统的,只是boot会读取环境变量bootcmd来启动Linux系统,这个环境变量保存着引导命令,起始就是启动命令的集合,具体的引导命令内容是可以修改的。
比如使用tftp命令从网络启动Linux那么bootcmd就可以设置成“tftp 80800000 zImage;tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb;bootz 80800000 - 83000000“,然后使用saveenv将bootcmd保存起来。然后直接输入boot命令即可从网络启动Linux系统,如下图所示。
在这里插入图片描述
uboot在倒计时结束后其实就是执行的bootcmd中的启动命令。只要不修改bootcmd中的值,以后每次开机uboot倒计时结束后都会使用tftp命令先从网络下载zImage和设备树,然后启动Linux。
如果想从EMMC启动,那就将bootcmd的值设置为"fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb; bootz 80800000 - 83000000.",然后使用boot命令启动即可,如图所示。
在这里插入图片描述
如果不修改bootcmd,每次开机uboot倒计时结束后都会自动从EMMC里面读取zImage镜像和设备树,然后启动Linux。
2、uboot其他命令
2.1、reset命令
reset命令用于复位重启,如图所示。
在这里插入图片描述
2.2、go命令
go 命令用于跳到指定的地址处执行应用,命令格式如下:
go addr [arg …]
addr表示DRAM的首地址。
例如将裸机实验中的printf.bin程序通过tftp下载到开发板DRAM的87800000地址处,最后使用go命令运行printf.bin程序。
注意!这里下载的是.bin程序,不需要在前面加IVT信息,因为uboot已经初始化好了DDR。下载到0x87800000这个地址,是因为应用程序printf.bin的链接地址为0x87800000。
如下图所示。
在这里插入图片描述

2.3、run命令
run命令用于运行在环境变量中定义的命令,比如可以通过”run bootcmd“来运行bootcmd中定义的命令,但是运行run命令的最大作用在于运行自定义的环境变量。我们可以通过自定义环境变量来实现不同的启动方式,避免频繁的修改bootcmd变量。比如自定义环境变量mybootemmc表示从EMMC启动,自定义环境变量mybootnet表示从网络启动。如果要切换启动方式,只需要运行"run mybootemmc"或者"run mybootnet"即可。
创建环境变量mybootemmc和mybootnet,如下图所示。
在这里插入图片描述
然后使用"run mybootemmc"或"run mybootnet"运行,如图所示。
在这里插入图片描述
在这里插入图片描述
2.4、mtest命令
mtest是一个简单的内存读写测试命令,可以用来测试开发板上的DDR,命令格式如下:
mtest [start [end [pattern [iterations]]]]
start表示要测试的DRAM的起始地址;
end表示要测试的DRAM的终止地址。
比如测试0x80000000~0x80001000这段内存,如下图所示。
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值