linux驱动之系统移植-----uboot常用命令汇总

信息查询类指令

  • 查询所有支持的命令 :
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是结束地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值