04_Uboot操作命令与其他命令

目录

BOOT 操作命令

bootz命令

bootm 命令

reset 命令

go 命令

run 命令

mtest 命令


BOOT 操作命令

uboot的本质工作是引导Linux,所以uboot肯定有相关的boot(引导)命令来启动Linux。常用的跟boot有关的命令有:bootz、bootm和boot。

bootz命令

要启动Linux,需要先将Linux镜像文件拷贝到DRAM中,如果使用到设备树的话也需要将设备树拷贝到DRAM中。可以从EMMC或者NAND等存储设备中将Linux镜像和设备树文件拷贝到DRAM,也可以通过nfs或者tftp将Linux镜像文件和设备树文件下载到DRAM 中。不管用那种方法,只要能将Linux镜像和设备树文件存到DRAM中就行,然后使用bootz命令来启动,bootz命令用于启动zImage镜像文件,bootz命令格式如下:

bootz [addr [initrd[:size]] [fdt]]

命令bootz有三个参数, addr是Linux镜像文件在DRAM中的位置, initrd是 initrd文件在DRAM中的地址,如果不使用initrd的话使用‘-’代替即可,fdt就是设备树文件在DRAM中的地址。现在我们使用网络和EMMC两种方法来启动Linux系统,首先将I.MX6U-ALPHA开发板的Linux镜像和设备树发送到Ubuntu主机中的tftpboot 文件夹下。

 Linux镜像文件和设备树都准备好了,通过网络启动Linux,使用tftp命令将zImage下载到DRAM的0X80800000地址处,然后将设备树.dtb下载到DRAM中的0X83000000地址处,最后之后命令bootz 启动,命令如下:Linux镜像文件和设备树都准备好了,通过网络启动Linux,使用tftp命令将zImage下载到DRAM的0X80800000地址处,然后将设备树.dtb下载到DRAM中的0X83000000地址处,最后之后命令bootz 启动,命令如下:

tftp 80800000 zImage

tftp 83000000 imxбull-alientek-emmc.dtb

bootz 80800000 - 83000000

 上图就是我们通过tftp和bootz命令来从网络启动Linux系统,如果我们要从EMMC中启动Linux系统的话只需要使用命令fatloa将zImage和imxбull-alientek-emmc.dtb从EMMC的分区1中拷贝到DRAM中,然后使用命令bootz启动即可。先使用命令fatls查看要下EMMC的分区1中有没有Linux镜像文件和设备树文件,fatwrite命令将tftpboot中的zImage和 imxбull-alientek-emmc.dtb文件烧写到EMMC的分区1中。然后使用命令fatload将zImage和imxбull-alientek-emmc.dtb文件拷贝DRAM中,地址分别为0X80800000和0X83000000,最后使用bootz启动,命令如下:

fatload mmc 1:1 80800000 zImage

fatload mmc 1:1 83000000 imxбull-alientek-emmc.dtb

bootz 80800000- 83000000

 

bootm 命令

bootm和bootz功能类似,但是 bootm 用于启动 ulmage 镜像文件。如果不使用设备树的话启动Linux内核的命令如下:

bootm addr

addr是ulmage镜像在DRAM中的首地址。

如果要使用设备树,那么bootm命令和bootz一样,命令格式如下:

bootm [addr [initrd[:size]] [fdt]]

其中addr是ulmage在DRAM中的首地址, initrd是initrd的地址, fdt是设备树(.dtb)文件在DRAM中的首地址,如果initrd为空的话,同样是用“-”来替代。

addr是ulmage镜像在DRAM中的首地址。

如果要使用设备树,那么bootm命令和bootz一样,命令格式如下:

bootm [addr [initrd[:size]] [fdt]]

其中addr是ulmage在DRAM中的首地址, initrd是initrd的地址, fdt是设备树(.dtb)文件在DRAM中的首地址,如果initrd为空的话,同样是用“-”来替代。

setenv bootemd 'tftp 80800000 zImage; tftp 83000000 imxбull-alientek-emmc.dtb;bootz 80800000 - 83000000'

saveenv

boot

 如果不修改bootemd的话,每次开机uboot倒计时结束以后都会自动从EMMC里面读取zImage和imxбull-alientek-emmc.dtb,然后启动 Linux。

reset 命令

reset命令顾名思义就是复位的,输入“reset”即可复位重启

 

go 命令

go 命令用于跳到指定的地址处执行应用,命令格式如下:

go addr [arg..]

addr是应用在DRAM中的首地址,实验13_printf,然后将编译出来的printf.bin 拷贝到 Ubuntu中的 tftpboot文件夹里面,注意,这里要拷贝printf.bin文件,不需要在前面添加IVT 信息,因为uboot已经初始化好了DDR了。使用tftp命令将printf.bin下载到开发板DRAM的0X87800000地址处,因为裸机例程的链接首地址就是0X87800000,最后使用go命令启动 printf.bin这个应用,命令如下:

tftp 87800000 printf.bin

go 87800000

 

 

run 命令

run命令用于运行环境变量中定义的命令,比如可以通过“run bootemd”来运行bootemd中的启动命令,但是run命令最大的作用在于运行我们自定义的环境变量。在后面调试Linux系统的时候常常要在网络启动和EMMC/NAND启动之间来回切换,而bootcmd只能保存一种启动方式,如果要换另外一种启动方式的话就得重写bootemd,会很麻烦。这里我们就可以通过自定义环境变量来实现不同的启动方式,比如定义环境变量mybootemmc表示从 emmc启动,定义mybootnet表示从网络启动,定义mybootnand表示从NAND启动。如果要切换启动方式的话只需要运行"run mybootxxx(xxx为emme、 net或nand)”即可。

创建环境变量mybootemmc, mybootnet和mybootnand,命令如下:

setenv mybootemmc 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imxбull-alientek-emmc.dtb;bootz 80800000 - 83000000'

setenv mybootnand 'nand read 80800000 4000000 800000;nand read 83000000 6000000

100000;bootz 80800000 - 83000000'

setenv mybootnet 'tftp 80800000 zImage; tftp 83000000imxбull-alientek-emmc.dtb;

bootz 80800000 - 83000000'

saveenv

创建环境变量成功以后就可以使用run命令来运行mybootemmc、mybootnet或mybootnand来实现不同的启动:

run mybootemmc或者run mytoobnandrun mybootnet

 

mtest 命令

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

mtest [start [end [pattern [iterations]]]

start是要测试的DRAM开始地址,end是结束地址,比如我们测试0X80000000-0X80001000这段内存,输入"mtest 80000000 80001000",结果如图所示:

 从图可以看出,测试范围为0x80000000-0X80001000,已经测试了486次,如果要结束测试就按下键盘上的"Ctrl+C”键。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
也可去华为网盘下载! http://dl.dbank.com/c0f2x98c6n# 第1课 环境搭建及工具、概念介绍 第2课 GPIO实验 第3课 存储管理器实验 第4课 MMU实验 第5课 NAND FLASH控制器 第6课 中断控制器 第7课 系统时钟和UART实验 第8课 LCD实验 第9课第1节 u-boot分析之编译体验 第9课第2节 u-boot分析之Makefile结构分析 第9课第3节 u-boot分析之源码第1阶段 第9课第3节 u-boot分析之源码第2阶段 第9课第4节 u-boot分析之u-boot命令实现 第9课第5节 u-boot分析_uboot启动内核 第10课第1节 内核启动流程分析之编译体验 第10课第2节 内核启动流程分析之配置 第10课第3节 内核启动流程分析之Makefile 第10课第4节 内核启动流程分析之内核启动 第11课第1节 构建根文件系统之启动第1个程序 第11课第2节 构建根文件系统之init进程分析 第11课第3节 构建根文件系统之busybox 第11课第4节 构建根文件系统之构建根文件系统 第12课第1节 字符设备驱动程序之概念介绍 第12课第2.1节 字符设备驱动程序之LED驱动程序_编写编译 第12课第2.2节 字符设备驱动程序之LED驱动程序_测试改进 第12课第2.3节 字符设备驱动程序之LED驱动程序_操作LED 第12课第3节 字符设备驱动程序之查询方式的按键驱动程序 第12课第4.1节 字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构 第12课第4.2节 字符设备驱动程序之中断方式的按键驱动_Linux中断处理结构 第12课第4.3节 字符设备驱动程序之中断方式的按键驱动_编写代码 第12课第5节 字符设备驱动程序之poll机制 第12课第6节 字符设备驱动程序之异步通知 第12课第7节 字符设备驱动程序之同步互斥阻塞
=> help ? - alias for 'help' autoscr - run script from memory base - print or set address offset bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol cmp - memory compare coninfo - print console devices and information cp - memory copy crc32 - checksum calculation dhcp - invoke DHCP client to obtain IP/boot params echo - echo args to console erase - erase FLASH memory flinfo - print FLASH memory information go - start application at address 'addr' help - print online help iminfo - print header information for application image imls - list all images found in flash itest - return true/false on integer compare loadb - load binary file over serial line (kermit mode) loads - load S-Record file over serial line loop - infinite loop on address range md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nfs - boot image via network using NFS protocol nm - memory modify (constant address) printenv - print environment variables protect - enable or disable FLASH write protection rarpboot - boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage setenv - set environment variables sleep - delay execution for some time tftpboot - boot image via network using TFTP protocol version - print monitor version

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值