U-Boot 命令解析(二)

U-Boot 命令解析(二)

    • 网络操作命令
      • ping 命令
      • dhcp 命令
      • nfs 命令
      • tftp 命令
    • MMC 命令
      • 查看 MMC 设备
      • 切换 MMC 设备
      • MMC 读命令
      • MMC 写命令
      • MMC 擦除命令
    • 更多内容

接 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 hostUsage:
ping pingAddress
  • ping 服务器 IP 地址:

dhcp 命令

  • dhcp 用于开发板自动获取 IP 地址:
=> ? dhcp
dhcp - boot image via network using DHCP/TFTP protocolUsage:
dhcp [loadAddress] [[hostIPaddr:]bootfilename]
  • 不仅如此,dhcp 命令还可以用来获取镜像文件

nfs 命令

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434248.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode hot100岛屿数量

本题中要求统计岛屿数量(数字1的上下左右均为1,则是连续的1,称为一块岛屿)。那么这种类型题都是需要依靠深度优先搜索(DFS)或者广度优先搜索(BFS)来做的。这两种搜索,实际…

统计学-R语言-7.3

文章目录 前言总体方差的检验一个总体方差的检验两个总体方差比的检验 非参数检验总体分布的检验正态性检验的图示法Shapiro-Wilk和K-S正态性检验总体位置参数的检验 练习 前言 本篇文章继续对总体方差的检验进行介绍。 总体方差的检验 一个总体方差的检验 在生产和生活的许多…

docker环境搭建及其安装常用软件

centos安装docker Install Docker Engine on CentOS | Docker Docs 下载docker sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io…

面了 5 家知名企业的NLP算法岗(大模型方向),被考倒了。。。。。

最近技术群的一位同学,分享了他面试NLP算法工程师(大模型方向)的经历与经验。直呼太难了。。。。 今天整理后分享给大家,如果你对这块感兴趣,可以文末加入我们的技术群 这位同学为了准备面试刷了 leetcode200-300 题左右,侧重刷…

《30天自制操作系统》 第一周(D1-D7) 笔记

前言:这是我2023年5月份做的一个小项目,最终是完成了整个OS。笔记的话,只记录了第一周。想完善,却扔在草稿箱里许久。最终决定,还是发出来存个档吧。 一、汇编语言 基础指令 MOV: move赋值,数据传送指令…

iperf3网络带宽性能测试工具 局域网网络最大带宽高阶教程

iperf3 是一个 TCP, UDP, 和 SCTP (传输层协议)网络带宽测量工具,iperf 是一个用于主动测量 IP 网络上最大可用带宽的工具. 它支持与时间、协议和缓冲区相关的各种参数的调优. 对于每个测试,它报告测量的吞吐量/比特率(带宽), 丢包率和其他参数&#xff…

STM32F1之RTC实时时钟(Unix时间戳)

目录 1. Unix时间戳 2. UTC/GMT 3. 时间戳转换 3.1 time_t 3.2 struct tm 3.3 char * 3.4 时间戳的使用 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置…

如何基于 ESP32 芯片测试 WiFi 连接距离、获取连接的 AP 信号强度(RSSI)以及 WiFi吞吐测试

测试说明: 测试 WiFi 连接距离,是将 ESP32 作为 WiFi Station 模式来连接路由器,通过在开阔环境下进行拉距来测试。另外,可以通过增大 WiFi TX Power 来增大连接距离。 获取连接的 AP 信号强度,一般可以通过 WiFi 扫描…

Zabbix交换分区使用率过高排查

Zabbix High swap space usage 问题现象 Zabbix 出现Highswap space usage(less than 50% free)告警,提示交换分区空间使用率超过50% 处理过程 1. 确定swap分区是否已占满 free -h登录Zabbix服务器检查内存情况,检查发现Linux服务器空闲的内存还有不少…

u盘安装系统(最简单,只有window10)

目录 一、下载官方媒体创建工具 二、运行此工具 三、正式开始制作U盘启动盘 四、进入bios界面设置 原文链接: 手把手教你自制U盘重装win10系统专业版+激活【图文教程】_制作u盘安装盘 win10-CSDN博客https://blog.csdn.net/Smalldemons/article/det…

css设置不可点击

文章目录 一、前言二、MDN三、使用四、注意五、总结六、最后 一、前言 在网页开发中,经常会遇到一种情况,就是需要将某个元素的点击事件屏蔽,使其在用户点击时没有任何反应。这时候,我们可以通过CSS的pointer-events属性设置为no…

【C语言/数据结构】排序(直接插入排序|希尔排序)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 插入排序 直接插入排序&…