U-Boot 命令解析(二)

简介: U-Boot 命令解析(二)

网络操作命令

进行网络操作之前,我们需要先配置一下 U-Boot 网络相关的环境变量,包括开发板的 IP 地址、MAC 地址、网关地址、子网掩码、服务器 IP 地址,并要保证开发板的 IP 地址和服务器 IP 地址在同一网段内:

setenv ipaddr 192.168.0.232      # U-Boor IP 地址
setenv ethaddr 00:aa:bb:cc:dd:ef # MAC 地址
setenv gatewayip 192.168.0.1     # 网关地址
setenv netmask 255.255.255.0     # 子网掩码
setenv serverip 192.168.0.120    # 服务器 IP 地址
saveenv                        # 保存环境变量

ping 命令

  • 通过 ping 命令可以验证开发板的网络能否使用,是否可以和服务器进行通信:
=> ? ping
ping - send ICMP ECHO_REQUEST to network host

Usage:
ping pingAddress
  • ping 服务器 IP 地址:

dhcp 命令

  • dhcp 用于开发板自动获取 IP 地址:
=> ? dhcp
dhcp - boot image via network using DHCP/TFTP protocol

Usage:
dhcp [loadAddress] [[hostIPaddr:]bootfilename]
  • 不仅如此,dhcp 命令还可以用来获取镜像文件

nfs 命令

  • nfs(Network File System),即网络文件系统,通过 nfs 可以在计算机之间通过网络来分享文件资源,nfs 的用法:
=> ? nfs
nfs - boot image via network using NFS protocol

Usage:
nfs [loadAddress] [[hostIPaddr:]bootfilename]
  • U-Boot 中 nfs 一般用来通过服务器下载 Linux 镜像文件,如 zImage,在使用 nfs 之前,服务器要开启 NFS 服务并保证开发板能够 ping 通服务器 IP 地址,zImage 存放在服务器 /home/alpha/nfs-work/ 目录下:

  • 使用 nfs 命令将 zImage 下载到开发板的 0x80800000 地址处:
=> nfs 80800000 192.168.0.120:/home/alpha/nfs-work/zImage


tftp 命令

  • tftp 和 nfs 一样也可以从服务器下载文件,只不过使用的是 TFTP 协议:
=> ? tftp
tftpboot - boot image via network using TFTP protocol

Usage:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
  • 同样在使用 tftp 之前服务器要开启 TFTP 服务,并保证开发板能够 ping 通服务器 IP 地址,使用 tftp 命令下载 zImage 到开发板的 0x80800000 地址处:
tftp 80800000 zImage

MMC 命令

在 U-Boot 中,一般将 eMMC 和 SD 卡视为一种设备,MMC 命令同样适用于 SD 卡。

  • 输入 ?mmc 即可查看与 mmc 有关的命令:

  • U-Boot 支持的 MMC 命令总结如下:
命令 描述
mmc info 查看 MMC 设备的相关信息
mmc read 读取 MMC 中的数据到 RAM 中
mmc wirte 将 RAM 中的数据写入 MMC 设备
mmc erase 擦除 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 寄存器的值。

查看 MMC 设备

  • U-Boot 启动日志可以看到当前设备为 eMMC:

  • mmc list 命令用于查看当前一共多少 MMC 设备:

  • mmc info 命令用于查看当前 MMC 设备的信息:

  • mmc part 命令用于查看当前 MMC 设备的分区:


切换 MMC 设备

  • mmc dev 命令用于切换当前 MMC 设备:
mmc dev [dev] [part] - show or set current mmc device [partition]
# [dev] 是要切换到的 MMC 设备号,[part] 是分区号,默认为分区 0


  • 如执行命令切换到 SD 卡:
mmc dev 0

  • 查看 SD 卡设备信息:

  • 查看 SD 卡设备分区:

MMC 读命令

  • mmc read 命令用于读取 mmc 设备的数据到 RAM 中:
mmc read addr blk# cnt
# addr 是数据读取到 RAM 中的地址
# blk 是要读取的块(扇区)的起始地址(十六进制),一个块是 512 字节
# cnt 是要读取的块(扇区)的数量(十六进制)


  • 如读取 eMMC 某处数据,执行命令如下:
mmc dev 1 0               # 切换到 eMMC 分区 0
mmc read 80800000 600 10   # 从 eMMC 的第 1536(0x600)个块开始,读取 16(0x10)个块的数据到 RAM 的 0x80800000 地址处


  • 通过 md.b 命令查看 0x80800000 处的数据

  • 根据数据内容可以猜到这些数据为 U-Boot 的环境变量,即 eMMC 中 U-Boot 环境变量的存储起始地址就是第 1536*512 = 786432 字节处。

MMC 写命令

  • mmc wirte 命令用于将 RAM 中的数据写入到 MMC 设备中:
mmc write addr blk# cnt
# addr 是要写入 MMC 中的数据在 RAM 中的起始地址
# blk 是要写入 MMC 的块的起始地址(十六进制)
# cnt 是要写入的块的数量(十六进制),一个块为 512 字节
  • 从 TFTP 服务端创建一个测试文件 test.txt,文件大小共 12 个字节:

  • 在 U-Boot 中执行 tftp 命令将其下载到 RAM 中:


  • 执行写命令再将其写到 SD 卡中:
mmc dev 0 0           # 切换到 SD 卡 0 分区
mmc write 80800000 2 1 # SD 卡一个块 512 个字节,从第 2 个块开始烧写,一共烧写 1 个块


  • 通过读命令将 SD 卡数据读到 RAM 中查看:

  • 注意:不要写 SD 卡或者 eMMC 的前两个块(扇区),里面保存着分区表!


MMC 擦除命令

  • mmc erase 命令用于擦除 MMC 设备数据,慎用!
mmc erase blk# cnt
# blk 为要擦除的起始块
# cnt 是要擦除的块的数量

更多内容

  • CSDN博客:@Hello阿尔法
  • 哔哩哔哩:@Hello阿尔法
  • 知乎:@Hello阿尔法
相关文章
|
2月前
|
缓存 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 配置DNS dnsconf 命令 使用教程
【Shell 命令集合 网络通讯 】Linux 配置DNS dnsconf 命令 使用教程
39 0
|
2月前
|
Shell Linux 开发工具
【Shell 命令集合 文件管理】Linux 高级的文件管理器 mc 命令解析
【Shell 命令集合 文件管理】Linux 高级的文件管理器 mc 命令解析
44 0
|
17天前
|
Linux 内存技术
U-Boot 命令解析(一)
U-Boot 命令解析(一)
|
2月前
|
JavaScript Java C++
【CMake 中的 aux_source_directory 命令深入解析】 aux_source_directory 命令从文件识别到最佳实践
【CMake 中的 aux_source_directory 命令深入解析】 aux_source_directory 命令从文件识别到最佳实践
31 0
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 更新locate命令所使用的数据库 updatedb命令解析
【Shell 命令集合 文件管理】Linux 更新locate命令所使用的数据库 updatedb命令解析
155 0
|
2月前
|
开发工具 git
|
3月前
|
安全 Unix Shell
【Linux】Linux系统编程——Linux命令解析器
【Linux】Linux系统编程——Linux命令解析器
55 1
|
3月前
|
安全 网络协议 Linux
Linux网络常用命令解析
Linux网络常用命令解析
33 0
|
8月前
|
Linux 数据安全/隐私保护
Linux cp命令使用指南:详细教程及实际应用场景解析
Linux cp命令使用指南:详细教程及实际应用场景解析
969 0
|
4月前
|
安全 Go 开发工具
go clean命令 完全解析
go clean命令 完全解析
152 0

推荐镜像

更多