admin管理员组文章数量:1637808
IMX6ULL 学习笔记
version : v1.0 「2023.4.27」
author: Y.Z.T.
简介: 随记 , 记录 uboot 命令
⭐️ 目录
文章目录
- IMX6ULL 学习笔记
- :two: Uboot
- 2.1 Uboot命令
- 2.1.1 查询命令
- 2.1.1.1 help
- 2.1.1.2 bdinfo
- 2.1.1.3 printenv
- 2.1.1.4 version
- 2.1.2 环境变量修改命令
- 2.1.3 内存操作命令
- 2.1.3.1 md命令
- 2.1.3.2 nm命令
- 2.1.3.3 mm命令
- 2.1.3.4 mw命令
- 2.1.3.5 cp命令
- 2.1.3.6 cmp命令
- 2.1.4 网络操作命令
- 2.1.4.1 ping 命令
- 2.1.4.2 bhcp命令
- 2.1.4.3 nfs命令
- 2.1.4.4 tftp命令
- 2.1.5 EMMC和SD卡命令
- 2.1.6 FAT 格式文件系统操作命令
- 2.1.6.1 fatinfo 命令
- 2.1.6.2 fatls 命令
- 2.1.6.3 fstype 命令
- 2.1.6.4 fatload 命令
- 2.1.6.5 fatwrite 命令
- 2.1.7 EXT 格式文件系统操作命令
- 2.1.8 BOOT 操作命令
- 2.1.8.1 bootz命令
- 2.1.8.2 boot 命令
- 2.1.9 其他命令
- 2.1.9.1 reset 命令
- 2.1.9.2 go命令
- 2.1.9.3 run命令
- 2.1.9.4 mset 命令
2️⃣ Uboot
2.1 Uboot命令
Uboot
提供了丰富的命令集 , 可以通过help
指令查看当前支持的命令 , 支持tab
键进行命令补全 , 和命令历史记录功能
2.1.1 查询命令
2.1.1.1 help
作用
- 列出所有命令
- 查询某个命令功能 :
help ls
2.1.1.2 bdinfo
作用
- 查看当前板子信息
打印出
DRAM
的起始地址和大小、启动参数保存起始地址、波特率、 sp(堆栈指针)起始地址等信息
2.1.1.3 printenv
作用
打印环境信息,显示一些环境参数的配置信息,这些参数也是可以修改的
2.1.1.4 version
作用
查看
uboot
版本,uboot
编译时间和编译器
2.1.2 环境变量修改命令
修改环境变量的操作涉及到两个命令:setenv
和 saveenv
setenv
:设置或者修改环境变量的值
saveenv
:保存修改后的环境变量;一般环境变量是存放在外部 flash 中的, uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中,所以使用命令 setenv 将修改的环境变量值保存到 flash 中
例: 修改bootdelay
变量的值为 10
setenv bootdelay 10
saveenv
新增变量
使用setenv
命令可以新建环境变量
setenv <新变量> <新值>
saveenv
删除变量
删除变量的话,我们直接使用
setenv
设置变量的值为空就行
sentenv <待删除变量>
2.1.3 内存操作命令
内存操作命令就是用于直接对
DRAM
进行读写操作,常用的内存操作命令有md
、nm
、mm
、mw
、cp
和cmp
2.1.3.1 md命令
作用
md 命令用于显示内存值
md[.b, .w, .l] address [# of objects]
- [.b .w .l] :对应
byte
、word
和long
,也就是分别以 1 个字节、2 个字节、4 个字节来显示内存值- address :就是要查看的内存起始地址
- [# of objects] :表示要查看的数据长度(数字是以十六进制表示 , 如 10 表示十进制的16)
例
2.1.3.2 nm命令
作用
nm
命令用于修改指定地址的内存值nm[.b, .w, .l] address
在待输入地址后面的
?
中输入修改后的数据输入完成以后按下回车,然后再输入
q
即可退出
例
2.1.3.3 mm命令
作用
mm
命令也是修改指定地址内存值的,使用mm
修改内存值的时候地址会自增,- 而使用命 令
nm
的话地址不会自增,使用mm
修改完一个值后会修改下一个值mm[.b, .w, .l] address
例
2.1.3.4 mw命令
作用
mw
用于使用一个指定的数据填充一段内存 (mw
命令令同样以.b
、.w
和.l
来指定操作格式)mw[.b, .w, .l] address value [count]
address
表示要填充的内存起始地址value
为要填充的数据count
是填充的长度
例 使用
.l
格式将以0X80000000
为起始地址的0x10
个内存块 填充为0X0A0A0A0A
2.1.3.5 cp命令
作用
cp
是数据拷贝命令,用于将DRAM
中的数据从一段内存拷贝到另一段内存中,或者把Nor Flash
中的数据拷贝到DRAM
中cp[.b, .w, .l] source target count
source
为源地址target
为目的地址count
为拷贝的长度
例 将
0x80000000
处的地址拷贝到0X80000100
处
2.1.3.6 cmp命令
cmp
是比较命令,用于比较两段内存的数据是否相等cmp [.b, .w, .l] addr1 addr2 count
addr1
为第一段内存首地址addr2
为第二段内存首地址
例
2.1.4 网络操作命令
ARM
板的调试经常用到网络功能,uboot
提供了许多用于网络调试的指令 如dhcp
、ping
、nfs
、tftpboot
- 将开发板和电脑连接在同一个交换机或者路由器下,方便进行网络调试
关于网络的环境变量
配置环境变量
setenv ipaddr 192.168.1.50
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.225
saveenv
2.1.4.1 ping 命令
作用
通过
ping
命令可以验证网络能否使用
[注]
网络连接情况:
- 网线连接开发板和电脑网口
- pc主机 通过wifi连接外网
Ubuntu
虚拟机 使用两个网络驱动器 , 一个用于连接主机 , 一个用于连接开发板
- uboot ping不通Ubuntu主机的情况 , 可以参考这篇文章 👇
( 开发板 ping 虚拟机 )
2.1.4.2 bhcp命令
dhcp
可以用于从路由器获取IP
地址,前提得开发连接到路由器(交换机自动分配IP)上
2.1.4.3 nfs命令
nfs (Network File System)
网络文件系统,通过nfs
可以在计算机之间通过网络来分享资源可以通过网络将编译好的
linux
镜像和设备树文件下载 到DRAM
中,然后直接运行nfs [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress
是要保存的 DRAM地址[[hostIPaddr:]bootfilename]
是要下载的文件地址。
例
在
uboot
中输入以下内容nfs 80800000 192.168.1.226:/home/yzt/samba_share/zdyz_example/nfs/zImage
运行结果:
可以看到已经烧录的
80800000
地址的内容 和zImage
源文件的内容一致
[注]
出现
nfs
挂载不成功的
可以参考这篇文章 嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件
2.1.4.4 tftp命令
作用
tftp
命令的作用和nfs
命令一样,都是用于通过网络下载东西到DRAM
中,只是tftp
命令使用的TFTP
协议,Ubuntu
主机作为 TFTP服务器。tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
配置xinetd服务器
修改
/etc/xinetd.d/tftp
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/yzt/samba_share/zdyz_example/tftpboot/
disable = yes
per_source = 11
cps = 100 2
flags = IPv4
}
改变传输目录
修改
/etc/default/tftpd-hpa
文件传输信息
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/yzt/samba_share/zdyz_example/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
开始传输
在
uboot
中 使用命令tftp 80800000 zImage
进行传输
2.1.5 EMMC和SD卡命令
uboot
支持EMMC
和SD
卡,提供EMMC
和SD
卡的操作命令 , 即mmc
命令
mmc 命令
注意 不能 写
SD
卡或者EMMC
的前两个块(扇区),里面保存着分区表
2.1.6 FAT 格式文件系统操作命令
- 有时候需要在
uboot
中对SD
卡或者EMMC
中存储的文件进行操作,这时候就要用到文件操作命令- 如:
fatinfo
、fatls
、fstype
、fatload
和fatwrite
,这些命令只支持FAT格式的文件系统
2.1.6.1 fatinfo 命令
作用
用于查询指定 MMC 设置指定分区的文件系统信息
fatinfo <interface> [<dev[:part]>]
nterface
表示接口,比如mmc
dev
是查询的设备号part
是要查询的分区。
例 查询
emmc
分区1 的文件系统信息
2.1.6.2 fatls 命令
作用
查询 FAT 格式设备的目录和文件信息
fatls <interface> [<dev[:part]>] [directory]
nterface
表示接口,比如mmc
dev
是查询的设备号part
是要查询的分区directory
是要查询的目录
例 查询分区1的文件
- 可以看见 ,
emmc
的分区1中存放着8个文件
2.1.6.3 fstype 命令
作用
查看
MMC
设备某个分区的文件系统格式fstype <interface> <dev>:<part>
例 查询
emmc
三个分区的文件系统
- 从上图可以看出,分区 0格式未知,因为分区 0存放的
uboot
,并且分区 0没有格式化- 以文件系统格式未知。分区 1的格式为
fat
, 分区 1用于存放 linux镜像和设备树。- 分区2的格式为儿
ext4
, 用于存放linux 的根文件系统 (roofs
)
2.1.6.4 fatload 命令
作用
将指定的文件读取到
DRAM
中fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
interface
为接口,如mmc
dev
是设备号part
是分区addr
是保存在DRAM
中的起始地址filename
是要读取的文件名字bytes
表示读取多少字节的数据
例 将
EMMC
分区 1中的zImage
文件读取到DRAM
中的0X80800000
地址处fatload mmc 1:1 80800000 zImage
2.1.6.5 fatwrite 命令
作用
将
DRAM
中的数据写入到MMC
设备中(使用前需要修改板子配置头文件,使能写文件系统,使能如下)#define CONFIG_FAT_WRITE /* 使能 fatwrite命令 */
fatwirte
命令用于将DRAM
中的数据写入到MMC
设备中,命令格式如下:fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
interface
为接口,如mmc
dev
是设备号part
是分区addr
是保存在DRAM
中的起始地址
2.1.7 EXT 格式文件系统操作命令
uboot
有ext2
和ext4
这两种格式的文件系统的操作命令,常用的就五个命令,分别为:ext2load
、ext2ls
、ext4load
、ext4ls
和ext4write
命令 | 功能 |
---|---|
ext2load | 从 ext2 文件系统中读文件数据 |
ext2ls | 以查询文件和目录 |
ext4load | 从 ext4 文件系统中读文件数据 |
ext4ls | 以查询文件和目录 |
ext4write | 写文件数据 |
2.1.8 BOOT 操作命令
uboot
有相关的boot
(引导)命令来启动Linux
,常用的跟boot
有关的命令有:bootz
、bootm
和boot
2.1.8.1 bootz命令
作用
将
Linux
镜像和设备树文件存到DRAM
中就行,然后使用bootz
命令来启动bootz [addr [initrd[:size]] [fdt]]
addr
是Linux
镜像文件在DRAM
中的位置initrd
是initrd
文件在DRAM
中的地址
2.1.8.2 boot 命令
boot
命令也是用来启动Linux
系统的,只是boot
会读取环境变量bootcmd
来启动Linux
系统bootcmd
是一个很重要的环境变量,这个环境变量保存着引导命令,就是启动的命令集合
2.1.9 其他命令
2.1.9.1 reset 命令
reset
命令顾名思义就是复位的,输入reset
即可复位重启
2.1.9.2 go命令
go
命令用于跳到指定的地址处执行应用go addr [arg ...]
addr
是应用在DRAM
中的首地址
2.1.9.3 run命令
run
命令用于运行环境变量中定义的命令,比如可以通过run bootcmd
来运行bootcmd
中 的启动命令,但是run
命令最大的作用在于运行我们自定义的环境变量run 环境变量
2.1.9.4 mset 命令
mtest
命令是一个简单的内存读写测试命令,可以用来测试自己开发板上的DDR
mtest [start [end [pattern [iterations]]]]
start
是要测试的DRAM
开始地址end
是结束地址
例
mtest 80000000 80001000
版权声明:本文标题:IMX6ULL学习笔记 (二) —— uboot 命令 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729257359a1192676.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论