U-Boot 命令解析(二)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 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阿尔法
相关文章
|
1月前
|
网络协议 开发工具 C语言
Jetson错误(二):wget命令提示无法解析主机地址的问题解决
对于解决在NVIDIA Jetson平台上使用wget命令时出现的无法解析主机地址的问题,提供了两种解决方法:一种是临时修改DNS服务器为Google的公共DNS,另一种是永久修改DNS设置。
72 5
|
2月前
|
存储 缓存 NoSQL
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
70 0
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
137 3
|
3月前
|
数据采集 运维 监控
运维笔记:流编辑器sed命令用法解析
运维笔记:流编辑器sed命令用法解析
56 5
|
3月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
76 8
|
3月前
|
运维 Ubuntu Shell
Docker命令宝典:解锁容器化技术的无限可能,从镜像管理到容器操作,全面解析与实战指南!
【8月更文挑战第3天】Docker简化了应用的部署与运行,掌握其基本命令对开发者和运维人员至关重要。通过`docker images`可查看本地镜像;使用`docker pull`拉取如最新版Ubuntu镜像;`docker rmi`用于删除不再需要的镜像。运行容器可通过`docker run`命令,结合`-it`等选项提供交互式环境。`docker ps`显示运行中的容器,加上`-a`则列出所有容器。`docker stop`和`docker start`分别用于停止和重启容器,而`docker rm`则删除容器。
82 5
|
3月前
|
运维 Rust 监控
Linux高效运维必备:fd命令深度解析,文件描述符管理从此得心应手!
【8月更文挑战第23天】本文介绍了一款名为fd的命令行工具,该工具基于Rust语言开发,旨在以更直观的语法和更快的速度替代传统的`find`命令。通过本文,您可以了解到如何安装fd以及一些基本用法示例,比如使用正则表达式匹配文件名、排除特定目录等。此外,文章还展示了如何结合`ps`和`lsof`命令来查找特定文件并显示其文件描述符,从而帮助您更好地管理和监控Linux系统中的文件与进程。
128 0
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
66 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
52 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
59 0

推荐镜像

更多