(系统移植)2 U-boot常用命令

资料来自:正点原子嵌入式开发linux

目录

信息查询命令

bdinfo:查看板子信息

printenv:查看环境变量

version:查看Uboot版本号

环境变量操作命令

setenv:设置环境变量值

setenv:新建环境变量

setenv:删除环境变量

saveenv:保存设置

内存操作命令

md:显示内存值

nm:修改指定地址的内存值,不可递增

mm:修改指定地址的内存值,可递增

nw:使用指定数据填充一块内存

cp:数据拷贝

cmp:比较两段内存的数据是否相等

网络操作命令

setenv+地址addr:设置IP

ping:检查连接

dhcp: 用于从路由器获取 IP 地址

nfs:网络文件传输

tftp:网络文件传输

mmc:EMMC与SD操作命令

FAT  格式文件系统操作命令

fatinfo:查询MMC指定分区文件系统信息

fatls: 查询 FAT 格式设备的目录和文件信息

fstype :查看 MMC 设备某个分区的文件系统格式

fatload :用于将指定的文件读取到 DRAM 中

fatwrite :将 DRAM 中的数据写入到 MMC 设备中

EXT  格式文件系统操作命令

BOOT操作命令

bootz:自动 zImage 镜像文件,启动LINUX

bootm:自动 zImage 镜像文件,启动LINUX

boot :用来启动 Linux 系统的


信息查询命令

bdinfo:查看板子信息

printenv:查看环境变量

version:查看Uboot版本号

 

环境变量操作命令

setenv:设置环境变量值

setenv bootdelay 5

setenv:新建环境变量

setenv author zuozhongkai

setenv:删除环境变量

setenv author   :赋值空就是删除

saveenv:保存设置

命令 saveenv 用于保存修改后的环境变量,一般环境变量是存放在外部 flash 中的,uboot 启动的时候会将环境变量从 flash 读取到 DRAM 中。所以使用命令 setenv 修改的是 DRAM中的环境变量值,修改以后要使用 saveenv 命令将修改后的环境变量保存到 flash 中,否则的话uboot 下一次重启会继续使用以前的环境变量值。

 

内存操作命令

md:显示内存值

md[.b, .w, .l] address [# of objects]

命令中的[.b .w .l]对应 byte、word 和 long,也就是分别以 1 个字节、2 个字节、4 个字节
来显示内存值。address 就是要查看的内存起始地址,[# of objects]表示要查看的数据长度,这
个数据长度单位不是字节,而是跟你所选择的显示格式有关。比如你设置要查看的内存长度问
为 20(十六进制为 0x14),如果显示格式为.b 的话那就表示 20 个字节;如果显示格式为.w 的话
就表示 20 个 word,也就是 20*2=40 个字节;如果显示格式为.l 的话就表示 20 个 long,也就
是 20*4=80 个字节。

md.b 80000000 14 : 查看以 0X80000000 开始的 20 个字节的内存值

md.w 80000000 10 :查看以 0X80000000 开始的 20*2 个字节的内存值

md.l 80000000 10 :查看以 0X80000000 开始的 20*4 个字节的内存值

nm:修改指定地址的内存值,不可递增

nm [.b, .w, .l] address :nm 命令同样可以以.b、.w 和.l 来指定操作格式

mm:修改指定地址的内存值,可递增

mm [.b, .w, .l] address

nw:使用指定数据填充一块内存

mw [.b, .w, .l] address value [count]

mw 命令同样可以以.b、.w 和.l 来指定操作格式,address 表示要填充的内存起始地址,value
为要填充的数据,count 是填充的长度。

cp:数据拷贝

cp [.b, .w, .l] source target count

cp 是数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把 NorFlash 中的数据拷贝到 DRAM 中。cp 命令同样可以以.b、.w 和.l 来指定操作格式,source 为源地址,target 为目的地址,count为拷贝的长度。

cmp:比较两段内存的数据是否相等

cmp [.b, .w, .l] addr1 addr2 count

cmp 命令同样可以以.b、.w 和.l 来指定操作格式,addr1 为第一段内存首地址,addr2 为第
二段内存首地址,count 为要比较的长度。

 

网络操作命令

setenv+地址addr:设置IP

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.250
saveenv

ping:检查连接

ping 192.168.1.250

dhcp: 用于从路由器获取 IP 地址

nfs:网络文件传输

 uboot 中使用 nfs 命令将 Ubuntu 中的 linux 镜像和设备树下载到开发板的 DRAM 中,我们一般使用 uboot 中的 nfs 命令将 Ubuntu 中的文件下载到开发板的 DRAM 中,在使用之前需要开启 Ubuntu 主机的 NFS 服务,并且要新建一个 NFS 使用的目录,以后所有要通过NFS 访问的文件都需要放到这个 NFS 目录中。

nfs [loadAddress] [[hostIPaddr:]bootfilename]

loadAddress 是要保存的 DRAM 地址,[[hostIPaddr:]bootfilename]是要下载的文件地址。

tftp:网络文件传输

tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。

tftpboot [loadAddress] [[hostIPaddr:]bootfilename]

看起来和 nfs 命令格式一样的,loadAddress 是文件在 DRAM 中的存放地址,
[[hostIPaddr:]bootfilename]是要从 Ubuntu 中下载的文件。但是和 nfs 命令的区别在于,tftp 命令
不需要输入文件在 Ubuntu 中的完整路径,只需要输入文件名即可。

mmc:EMMC与SD操作命令

命令                                            描述
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 设备
mmc setdsr                     设置 DSR 寄存器的值。

 

FAT  格式文件系统操作命令

fatinfo:查询MMC指定分区文件系统信息

fatinfo <interface> [<dev[:part]>]

interface 表示接口,比如 mmc,dev 是查询的设备号,part 是要查询的分区。

fatls: 查询 FAT 格式设备的目录和文件信息

fatls <interface> [<dev[:part]>] [directory]

interface 是要查询的接口,比如 mmc,dev 是要查询的设备号,part 是要查询的分区,directory是要查询的目录。

查询 EMMC 分区 1 中的所有的目录和文件,输入命令:fatls mmc 1:1

fstype :查看 MMC 设备某个分区的文件系统格式

fstype <interface> <dev>:<part>

fstype mmc 1:0

fatload :用于将指定的文件读取到 DRAM 中

fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]

interface 为接口,比如 mmc,dev 是设备号,part 是分区,addr 是保存在 DRAM 中的起始
地址,filename 是要读取的文件名字。bytes 表示读取多少字节的数据,如果 bytes 为 0 或者省
略的话表示读取整个文件。pos 是要读的文件相对于文件首地址的偏移,如果为 0 或者省略的
话表示从文件首地址开始读取。

将 EMMC 分区 1 中的 zImage 文件读取到 DRAM 中的
0X80800000 地址处,命令如下:fatload mmc 1:1 80800000 zImage

fatwrite :将 DRAM 中的数据写入到 MMC 设备中

fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>

interface 为接口,比如 mmc,dev 是设备号,part 是分区,addr 是要写入的数据在 DRAM
中的起始地址,filename 是写入的数据文件名字,bytes 表示要写入多少自己的数据。我们可以
通过 fatwrite 命令在 uboot 中更新 linux 镜像文件和设备树。

zImage 大小为 6039328(0X5C2720)个字节,接下来使用命令 fatwrite 将其写入到 EMMC 的
分区 1 中,文件名字为 zImage,命令如下:fatwrite mmc 1:1 80800000 zImage 0x5c2720

EXT  格式文件系统操作命令

uboot 有 ext2 和 ext4 这两种格式的文件系统的操作命令,常用的就四个命令,分别为:
ext2load、ext2ls、ext4load、ext4ls 和 ext4write。这些命令的含义和使用与 fatload、fatls 和 fatwrit
一样,只是 ext2 和 ext4 都是针对 ext 文件系统的。比如 ext4ls 命令,EMMC 的分区 2 就是 ext4
格式的,使用 ext4ls 就可以查询 EMMC 的分区 2 中的文件和目录,输入命令:ext4ls mmc 1:2

BOOT操作命令

bootz:自动 zImage 镜像文件,启动LINUX

bootz [addr [initrd[:size]] [fdt]]

命令 bootz 有三个参数,addr 是 Linux 镜像文件在 DRAM 中的位置,initrd 是 initrd 文件在DRAM 中的地址,如果不使用 initrd 的话使用‘-’代替即可,fdt 就是设备树文件在 DRAM 中的地址。

 

bootm:自动 zImage 镜像文件,启动LINUX

bootm 和 bootz 功能类似,但是 bootm 用于启动 uImage 镜像文件。如果不使用设备树的话
启动 Linux 内核的命令如下:
bootm addr
addr 是 uImage 镜像在 DRAM 中的首地址。
如果要使用设备树,那么 bootm 命令和 bootz 一样,命令格式如下:
bootm [addr [initrd[:size]] [fdt]]
其中 addr 是 uImage 在 DRAM 中的首地址,initrd 是 initrd 的地址,fdt 是设备树(.dtb)文件
在 DRAM 中的首地址,如果 initrd 为空的话,同样是用“-”来替代。

boot :用来启动 Linux 系统的

 boot 会读取环境变量 bootcmd 来启动 Linux 系
统,bootcmd 是一个很重要的环境变量!其名字分为“boot”和“cmd”,也就是“引导”和“命
令”,说明这个环境变量保存着引导命令,其实就是启动的命令集合,具体的引导命令内容是可
以修改的。比如我们要想使用 tftp 命令从网络启动 Linux 那么就可以设置 bootcmd 为“tftp
80800000 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

 

 

总结:

Uboot共可以连接两个MMC设备,开发板连接的MMC0为SD卡,MMC1为EMMC,EMMC 是有3 个分区的,第 0 个分区存放 uboot,第 1 个分区存放 Linux 镜像文件和设备树,第 2 个分区存放根文件系统。

 

tftp协议可以将需要加载的镜像与设备树放在TFTP文件夹中,通过网络将其写入DRAM中,然后从DRAM中开始运行LINUX。

也可以使用fatload将镜像与设备树从EMMC中读取到DRAM中,然后从DRAM中开始运行LINUX。

TFTP协议代码启动LINUX:

tftp 80800000 zImage
tftp 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 – 83000000

fatload启动LINUX:

fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 - 83000000
 

 

bootcmd为UBOOT启动的默认命令,可以将上述加载LINUX的方法写入环境变量bootcmd中,那么UBOOT启动时可以自动读取bootcmd命令。比如:

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值