信息查询类指令
- 查询所有支持的命令 :
help
- 查询命令的用法
help <其他命令>
- 查询板子信息
bdinfo
- 查看所有环境变量
printenv
- 查看uboot版本
version
环境变量操作命令
- 保存环境变量
saveenv
- 设置 修改 删除环境变量setenv
setenv <变量名> <value> //设置或者修改 如果value是字符串要用单引号 '' 括起来
setenv <变量名> //删除环境变量
内存操作命令
- md命令. 用于显示内存值
md[.b, .w, .l] address [# of objects]
命令中的[.b .w .l]对应 byte、word和 long,也就是分别以 1个字节、2个字节、4个字节
来显示内存值。address就是要查看的内存起始地址,[# of objects]表示要查看的数据长度,这个数据长度单位不是字节,而是跟你所选择的显示格式有关。比如你设置要查看的内存长度为20(十六进制为 0x14)
md.b 0x80000000 0x14
- nm命令. 用于修改指定地址内存值
nm[.b, .w, .l] address
- mm命令. 修改指定内存值, 修改以后地址自动自增
mm[.b, .w, .l] address
- mw命令.用一个指定的数据填充一段内存
mw[.b, .w, .l] address value [count]
- cp命令. 数据拷贝命令, DRAM中的数据从一段内存拷贝到另一段内存中
cp [.b, .w, .l] source target count
- cmp命令.比较命令, 用于比较两段内存数据是否相等
cmp [.b, .w, .l] addr1 addr2 count
网络操作命令
有关网络的环境变量
ipaddr: 开发板 ip地址,可以不设置,使用 dhcp命令来从路由器获取 IP地址。
ethaddr: 开发板的 MAC地址,一定要设置。
gatewayip: 网关地址。
netmask: 子网掩码。
serverip: 服务器 IP地址,也就是 Ubuntu主机 IP地址,用于调试代码。
- dhcp命令. 用于从路由器自动获取IP地址.
dhcp
- nfs命令. 用于从虚拟机中下载文件, 如设备树, zImage, 或者挂载文件系统
nfs [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress是要保存的 DRAM地址
[[hostIPaddr:]bootfilename]是要下载的文件地址。
如:
nfs 80800000 192.168.1.253:/home/linux/nfs/zImage
- tftp命令.与nfs作用一样
tftp [loadAddress] [[hostIPaddr:]bootfilename]
EMMC和SD卡操作命令
- mmc命令
mmc 是一系列的命令,其后可以跟不同的参数
如: - mmc info: 输出 MMC设备信息
输出当前选中的 mmc info设备的信息
mmc info
- mmc read: 读取 MMC中的数据。
读取 mmc设备的数据
mmc read addr blk# cnt
addr是数据读取到 DRAM中的地址,blk是要读取的块起始地址(十六进制),一个块是 512
字节,这里的块和扇区是一个意思,在 MMC设备中我们通常说扇区,cnt是要读取的块数量(十
六进制)。比如从 EMMC的第 1536(0x600)个块开始,读取 16(0x10)个块的数据到 DRAM的
0X80800000地址处,命令如下:
mmc dev 1 0 //切换到 MMC分区 0
mmc read 80800000 600 10 //读取数据
- mmc wirte: 向 MMC设备写入数据。
要将数据写到 MMC设备里面
mmc write addr blk# cnt
- mmc rescan: 扫描 MMC设备。
扫描当前开发板上所有的 MMC设备,包括 EMMC和 SD卡
mmc rescan
- mmc part: 列出 MMC设备的分区。
查看当前MMC设备的分区
mmc part
- mmc dev: 切换 MMC设备。
切换当前 MMC设备
mmc dev [dev] [part]
[dev]用来设置要切换的 MMC设备号,[part]是分区号,如果不写分区号的话默认为分区 0
- mmc list: 列出当前有效的所有 MMC设备。
查看当前开发板一共有几个 MMC设备
mmc list
- mmc erase: 擦除 MMC设备的指定块
mmc erase blk# cnt
blk为要擦除的起始块,cnt是要擦除的数量
- mmc hwpartition: 设置 MMC设备的分区。
- mmc bootbus…… :设置指定 MMC设备的 BOOT_BUS_WIDTH域的值。
- mmc bootpart……: 设置指定 MMC设备的 boot和 RPMB分区的大小。
完整指令:
mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>
emmc有boot0,boot1以及RPMB UDA 分区, 通常对emmc进行分区,也只是对UDA分区
boot分区:uboot一般放在这里, emmc一般会配置成从boot区启动
RPMB分区:会校验数据的合法性,只有指定的 Host 才能够写入, 通常用于存储一些有防止非法篡改需求的数据, 如手机上指纹支付相关的公钥、序列号等。RPMB 可以对写入操作进行鉴权,但是读取并不需要鉴权,任何人都可以进行读取的操作,因此存储到 RPMB 的数据通常会进行加密后再存储。
- mmc partconf……: 设置指定 MMC设备的 PARTITION_CONFG域的值。
用来配置emmc寄存器
mmc partconf dev boot_ack boot_partition partition_access
- mmc rst: 复位 MMC设备
- mmc setdsr: 设置 DSR寄存器的值。
FAT格式文件系统操作命令
FAT操作命令只能用于操作FAT格式的文件系统
对于imx6u来说, SD/EMMC分为三个分区
第一个分区:存放uboot
第二个分区:存放zImage, dtb , (FAT格式分区)
第三个分区:系统的根文件系统 (EXT4格式分区)
所以FAT命令可用来操作第二个分区的
- fatinfo命令
查询指定 MMC设备分区的文件系统信息
fatinfo <interface> [<dev[:part]>]
interface表示接口,比如 mmc,
dev是查询的设备号,
part是要查询的分区
如:
fatinfo mmc 1:1
- fstype命令
查看 MMC设备某个分区的文件系统格式
fstype <interface> <dev>:<part>
- fatload命令
用于将指定的文件读取到 DRAM中
fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
interface为接口,比如 mmc,
dev是设备号,
part是分区,
addr是保存在 DRAM中的起始地址,
filename是要读取的文件名字。
bytes表示读取多少字节的数据,如果 bytes为 0或者省
略的话表示读取整个文件。
pos是要读的文件相对于文件首地址的偏移,如果为 0或者省略的
话表示从文件首地址开始读取。
fatload mmc 1:1 80800000 zImage
- fatwrite命令
用于将 DRAM中的数据写入到 MMC设备中
fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
uboot默认没有使能 fatwrite命令,需要修改板子配置头文件,比如 mx6ullevk.h、
mx6ull_alientek_emmc.h等等,板子不同,其配置头文件也不同。找到自己开发板对应的配置头
文件然后添加如下一行宏定义来使能 fatwrite命令
#define CONFIG_FA T_WRITE /* 使能 fatwrite命令 */
EXT格式文件系统操作命令
uboot有 ext2和 ext4这两种格式的文件系统的操作命令,常用的就四个命令,分别为:
ext2load、ext2ls、ext4load、ext4ls和 ext4write。
命令的含义和使用与 fatload、fatls和 fatwrite
一样,只是 ext2和 ext4都是针对 ext文件系统的。
NAND操作命令
- nand info命令
打印 NAND Flash信息
nand info
- nand device命令
切换 NAND Flash,板子支持多片 NAND的话就可以使用此命令
来设置当前所使用的 NAND
nand device <dev>
dev是设备编号
- nand erase命令
用于擦除 NAND Flash
命令有三种形式:
nand erase[.spread] [clean] off size //从指定地址开始(off)开始,擦除指定大小(size)的区域。
nand erase.part [clean] partition //擦除指定的分区
nand erase.chip [clean] //全片擦除
- nand write命令
用于向 NAND指定地址写入指定的数据,一般和“nand erase” 命令配置使用来更新
NAND中的 uboot、linux kernel或设备树等文件
nand write addr off size
addr是要写入的数据首地址,off是 NAND中的目的地址,size是要写入的数据大小。
- nand read命令
从 NAND中的指定地址读取指定大小的数据到 DRAM
nand read addr off size
addr是目的地址,
off是要读取的 NAND中的数据源地址,
size是要读取的数据大小
BOOT操作命令
- bootz命令
用于启动在DRAM中的zImage和设备树
bootz [addr [initrd[:size]] [fdt]]
addr是 Linux镜像文件在 DRAM中的位置,
initrd是 initrd文件在DRAM中的地址,如果不使用 initrd的话使用‘-’代替即可,
fdt就是设备树文件在 DRAM中的地址。
- bootm命令
用于启动 uImage镜像文件
bootm [addr [initrd[:size]] [fdt]]
addr是 uImage在 DRAM中的首地址,
initrd是 initrd的地址,
fdt是设备树(.dtb)文件在 DRAM中的首地址,如果 initrd为空的话,同样是用“-”来替代。
- 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系统
其他常用命令
- reset命令
复位 - go命令
用于跳到指定的地址处执行应用
go addr [arg ...]
addr是应用在 DRAM中的首地址
arg 就是该指令的参数, 类似运行函数
-
run命令
运行环境变量中定义的命令
最大的作用在于运行我们自定义的环境变量 -
mtest命令
mtest命令是一个简单的内存读写测试命令,可以用来测试自己开发板上的 DDR
mtest [start [end [pattern [iterations]]]]
start是要测试的 DRAM开始地址,
end是结束地址