前言:绝大多数嵌入式开发都使用uboot作为bootloader,uboot可以看作是一个框架,在编译时需要指定设备文件才能够编译得到对应板子的uboot,这个设备文件就相当于参数表,描述了这个板子长什么样子。在uboot里不用记住所有命令的用法,当需要查看某个命令的用法和介绍时,输入? 命令或者 help 命令 就可以得到对应名的用法和介绍了
下面介绍一些常用的和重点的uboot命令
1、信息查询命令
(1) bdinfo
(2) printenv
(3) version
2、环境变量操作命令
(1)setenv 修改环境变量命令,此时修改的命令只是保存在RAM中
(2)saveenv 保存修改的环境变量到flash中。因此这两个命令是配合使用的
注意:环境变量是以字符串的形式保存,并在修改时以空格分隔名字和变量值,因此如果环境变量值存在空格,要用单引号括起来
3、内存操作命令
特别注意:在uboot中数字都是16进制形式
(1)md 显示内存的内容,顾名思义,md = memory display 具体用法可以‘? md’查看
(2)nm 修改指定位置内存的内容
(3)mm 也是修改指定地址处内存的内容,但是地址会自增
(4)mw 使用一个数据填充一段连续的内存
(5)cp 拷贝命令
(6)cpm 比较两个地址处的内存内容是否相等
4、网络操作命令 重点!
在使用网络操作命令之前需要先配置好开发板的网络环境,要求在uboot中能够ping通虚拟机、电脑主机
(1) ping ip地址 用于确定当前机器是否能和对应ip地址的机器通过网络连接
(2) dhcp 自动获取ip地址,仅在开发板连接路由器时才有效,通过电脑连接的话组成的只是一个局域网,是不能访问外部网络的
(3) nfs 通过网络将服务器中的文件通过网络传输到开发板的DRAM中
(4) tftp作用同nfs,只是命令的用法和格式不一样,并且tftp是直接从环境变量中设置的服务器ip地址对应的服务器中的特定文件夹中传输文件,指令上更加简洁
5、mmc命令
输入‘? mmc’可以查看mmc命令说明
6、文件系统操作命令
关于文件系统的知识与原理请看哈工大操作系统课程中关于磁盘的那一部分
- FAT格式文件系统
(1)fatinfo 查询指定mmc设备分区的文件系统信息
(2)fatls 查询fat格式设备的目录和文件信息
(3)fstype 查看mmc设备某个分区的文件系统格式
(4)fatload 将指定文件读到DRAM
(5)fatwrite 将DRAM中数据写入到MMC设备中 - EXT格式文件系统操作命令也有extls,extinfo等,与fat文件系统格式一样,只是只能用于ext格式文件系统,同理fat文件系统操作命令也只用于fat格式文件系统
7、boot操作命令,重点!
(1)bootz 用于从DRAM中启动Linux系统,首先需要将系统镜像文件、根文件系统、设备树文件加载到内存中,然后bootz启动,格式为:bootz [addr [initrd[:size]] [fdt]]
其中addr为Linux镜像在DRAM中的位置,initrd为文件系统相关的文件在DRAM中位置,fdt是设备树文件在DRAM中位置,如果不使用initrd的话用-代替,一个例子如下:
点击查看代码
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb
bootz 80800000 - 83000000
(2)bootm与bootz作用相同,只是bootm引导的是uImage镜像
(3)boot命令就是执行bootcmd环境变量中的命令来引导操作系统,因此如果把前面tftp和bootz代码写到bootcmd环境变量中,运行boot就会执行bootcmd中命令启动操作系统
(4)run 运行环境变量中定义的命令
(5)go 修改PC指针,跳转到指定内存位置处执行,比如可以把逻辑程序的bin文件加载到链接的内存位置后使用go跳到链接地址执行