uboot命令学习笔记

Uboot命令

help 或 ?

功能:

列出uboot支持的所有命令

help / ? + 命令

查看当前命令的用法

比如:help go
在这里插入图片描述

信息查询命令

bdinfo

查看板子信息
在这里插入图片描述

arch_number = 0x00000000 
boot_params = 0x80000100
DRAM bank   = 0x00000000 
-> start    = 0x80000000 		DRAM开始地址
-> size     = 0x20000000	 	DRAM的大小
current eth = unknown			当前网络
ip_addr     = 192.168.1.50		当前ip地址
baudrate    = 115200 bps		波特率
TLB addr    = 0x9FFF0000		
relocaddr   = 0x9FF47000
reloc off   = 0x18747000
irq_sp      = 0x9EF44EA0		
sp start    = 0x9EF44E90		(堆栈指针)
FB base     = 0x00000000

version

输出当前uboot的版本

环境变量操作命令

printenv/print

输出环境变量信息

setenv

修改环境变量的值(删除环境变量和 添加环境变量)

例:
新建环境变量
在这里插入图片描述
修改环境变量
在这里插入图片描述
删除环境变量 (将环境变量的值赋值成空)
在这里插入图片描述

saveenv

将设置的环境变量保存到flash当中

uboot 命令中的数字都是十六进制的!不是十进制的!

内存操作命令:

md命令

功能: 显示内存值
格式: md[.b, .w, .l] address [# of objects]
[.b, .w, .l] 对应byte 、word、long 1个字节、2个字节、4个字节
address 内存起始地址
[# of objects] 查看数据的长度(单位取决于所选的显示格式有关)

比如你想查看以 0X80000000 开始的 20 个字节的内存值,显示格式为.b 的话,应该使用
如下所示命令:
md.b 80000000 14
在这里插入图片描述
md.w 800000000 14

在这里插入图片描述
md.l 80000000 14
在这里插入图片描述

nm

功能: 用于修改指定地址的内存值
格式: nm [.b, .w, .l] address

在这里插入图片描述

在这里插入图片描述

需要输入q才能结束nm命令对内存值的修改

mm

使用 mm 修改内存值的时候地址会自增

功能:修改指定地址内存值的,使用 mm 修改内存值的时候地址会自增,而使用命令 nm 的话地址不会自增
格式: mm [.b, .w, .l] address

例:
mm.b 800000
在这里插入图片描述

mw

功能: 使用一个指定的数据填充一段内存
格式: mw [.b, .w, .l] address value [count]
value 填充的值
[count] 填充的长度

例:
mw.b 80000000 10 5
在这里插入图片描述

cp

功能 : 数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 Nor Flash 中的数据拷贝到 DRAM 中
格式: cp [.b, .w, .l] source target count
source 源地址
target 目的地址
count 拷贝的长度

cp.b 8000000 80000100 10

在这里插入图片描述

cmp

功能: 比较两段内存的数据是否相等
格式 : cmp [.b, .w, .l] addr1 addr2 count
在这里插入图片描述

网络操作命令

关于网络 环境变量中的值的名称和功能
在这里插入图片描述

网络地址环境变量的设置要根据自己的实际情况,确保 Ubuntu 主机和开发板的 IP地址在同一个网段内,
比如我现在的开发板和电脑都在 192.168.1.0 这个网段内,所以设置开发板的 IP 地址为 192.168.1.50,
我的 Ubuntu 主机的地址为 192.168.1.250,
因此 serverip 就是192.168.1.250。 ethaddr 为网络 MAC 地址,是一个 48bit 的地址,
如果在同一个网段内有多个开发板的话一定要保证每个开发板的 ethaddr 是不同的,否则通信会有问题!
设置好网络相关的环境变量以后就可以使用网络相关命令了

setenv ipaddr 192.168.1.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.40  服务器的地址
saveenv

ping

网络能否使用,是否可以和服务器(Ubuntu 主机)进行通信,通过 ping 命令就可 以验证,直接 ping 服务器的 IP 地址即可,

注意!只能在 uboot 中 ping 其他的机器,其他机器不能 ping uboot,因为 uboot 没有对 ping命令做处理,如果用其他的 器 ping uboot 的话会失败!

dhcp

功能: dhcp 用于从路由器获取 IP 地址,前提得开发连接到路由器上的,如果开发板是和电脑直 连的,那么 dhcp 命令就会失效

nfs 命令

功能 : nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源,可以使用nfs命令调试
格式: nfs [loadAddress] [[hostIPaddr:]bootfilename]

tftp

功能: tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令 使用的 TFTP 协议
格式: tftp [loadAddress] [[hostIPaddr:]bootfilename]

如何安装tftp 轻轻参考资料

例:
先设置环境变量的service 和 设置ip地址
在这里插入图片描述
从服务器中下载东西到DRAM 中
在这里插入图片描述

从80800000 地址开始运行
在这里插入图片描述

EMMC 和 SD 卡操作命令

mmc

命令功能
mmc info输出 MMC 设备信
mmc read读取 MMC 中的数据。
mmc wirte向 MMC 设备写入数据。
mmc rescan扫描 MMC 设备。
mmc part列出 MMC 设备的分区。
mmc dev切换 MMC 设备。
mmc list列出当前有效的所有 MMC 设备。
mmc hwpartition设置 MMC 设备的分区。
mmc bootbus……设置指定 MMC 设备的 BOOT_BUS_WIDTH 域的值。
mmc bootpart……设置指定 MMC 设备的 boot 和 RPMB 分区的大小。
mmc partconf……设置指定 MMC 设备的 PARTITION_CONFG 域的值。
mmc rst复位 MMC 设备
mmcsetdsr 设置 DSR 寄存器的值

在这里插入图片描述

mmc info

=> mmc info
Device: FSL_SDHC
Manufacturer ID: 3
OEM: 5344
Name: SC16G
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 14.8 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes

mmc rescan

功能: 用于扫描当前开发板上所有的 MMC 设备,包括 EMMC 和 SD 卡

mmc list

功能: 查看当前开发板一共有几个 MMC 设备
默认会将 EMMC 设置为当前 MMC 设备


=> mmc list
FSL_SDHC: 0 (SD)
FSL_SDHC: 1 (eMMC)

mmc dev

功能: 切换当前 MMC 设备
格式:mmc dev [dev] [part]

例:
mmc dev 0 // 切换到SD卡
mmc dev 1 1 //切换到设备1 的分区1

mmc part

功能: 查看当前设备分区详细信息

mmc read

功能: 将mmc中的数据读到DRAM当中
格式: mmc read addr blk# cnt
addr 是数据读取到 DRAM 中的地址
blk 是要读取的块起始地址(十六进制), 一个块是 512字节,这里的块和扇区是一个意思
cnt 是要读取的块数量

mmc write

功能: 写 mmc 设备的数据
格式: mmc write addr blk# cnt
addr 是数据读取到 DRAM 中的地址
blk 是要读取的块起始地址(十六进制), 一个块是 512字节,这里的块和扇区是一个意思
cnt 是要读取的块数量

mmc erase

功能: 擦除mmc设备的指定块
格式: mmc erase blk# cnt
addr 是数据读取到 DRAM 中的地址
blk 是要读取的块起始地址(十六进制), 一个块是 512字节,这里的块和扇区是一个意思
cnt 是要读取的块数量

FAT格式文件系统操作命令

跟文件操作相关的命令有: fatinfo、 fatls、 fstype、 fatload 和 fatwrite,但是这些文件
操作命令只支持 FAT 格式的文件系统!!

fatinfo

fatls

fstype

fatload

fatwrite

EXT 格式文件系统操作命令

uboot 有 ext2 和 ext4 这两种格式的文件系统的操作命令,常用的就四个命令,分别为:
ext2load、 ext2ls、 ext4load、 ext4ls 和 ext4write。这些命令的含义和使用与 fatload、 fatls 和 fatwrit
一样,只是 ext2 和 ext4 都是针对 ext 文件系统的

BOOT 操作命令

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

bootz命令

功能: 启动 Linux
格式: bootz [addr [initrd[:size]] [fdt]]

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

bootm

功能 :bootm 和 bootz 功能类似,但是 bootm 用于启动 uImage 镜像文件。

1.如果不使用设备树的话 启动 Linux 内核的命令如下

bootm addr ddr 是 uImage 镜像在 DRAM 中的首地址

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

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

boot

功能: boot 命令也是用来启动 Linux 系统的

boot 命令也是用来启动 Linux 系统的,只是 boot 会读取环境变量 bootcmd 来启动 Linux 系
统, bootcmd 是一个很重要的环境变量!其名字分为“boot”和“cmd”,也就是“引导”和“命令”,
说明这个环境变量保存着引导命令,其实就是启动的命令集合,具体的引导命令内容是可
以修改的。

例:
比如我们要想使用 tftp 命令从网络启动 Linux
那么就可以设置 bootcmd 为“tftp80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000”,
然后使用 saveenv 将 bootcmd 保存起来。然后直接输入 boot 命令即可从网络启动 Linux 系统,命令如
下:

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz
80800000 - 83000000'
saveenv
boot

如果想从 EMMC 启动那就设置
bootcmd 为“
fatload mmc 1:1 80800000 zImage; fatload mmc1:1 83000000 imx6ull-alientek_emmc.dtb; bootz 80800000 -83000000”,
然后使用 boot 命令启动即可,命令如下:

setenv bootcmd 'fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ullalientek_emmc.dtb; bootz 80800000 - 83000000'
savenev
boot

其他常用命令

reset命令

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

go命令

功能: go 命令用于跳到指定的地址处执行应用,:
格式: go addr [arg …]
addr 是应用在 DRAM 中的首地址

run命令

功能 : run 命令用于运行环境变量中定义的命令

mtest命令

功能 : mtest 命令是一个简单的内存读写测试命令,可以用来测试自己开发板上的 DDR
格式: mtest [start [end [pattern [iterations]]]]
start是要测试的 DRAM 开始地址,
end 是结束地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值