1. 常用操作命令

1..1 网络命令

使用网络命令之前,首先需要设置开发板的 IP 地址和 mac 地址:

=> setenv ipaddr 192.168.0.232=> setenv ethaddr aa:bb:cc:dd:ee:ff=> saveenv

我们使用 PC 机和开发板进行通信测试,所以需要设置 PC 机的 IP 地址为同一网段的:192.168.0.102。

1)ping

Ping 命令主要用于测试网络通信状态,设置好开发板 IP 和 PC 机 IP 之后,使用网线连接好开发板和

PC 机,使用 ping 命令:

=> ping 192.168.0.102

host is alive,表示网络通信畅通。

2)tftp

前面章节已经讲解了 tftp 相关知识,简单来说,tftp 就是一种网络文件传输协议,在 uboot 中也集成了 tftp 协议。在 uboot 阶段使用 tftp 主要是用于将文件(一般是 uboot 镜像、内核镜像、设备树)从 Ubuntu 系统中传输到开发板的内存中,方便调试或者更新镜像。如何在 Ubuntu 系统上安装 tftp 服务器,这里不再赘述。我们直接使用在 Ubuntu 上建立好的 tftp 共享文件夹,将一个内核和设备树放入其中。

仍然设置开发板 ip 地址为 192.168.0.232,Ubuntu 系统 ip(即 tftp 服务器 ip)设置为 192.168.0.103 在板子端设置 serverip 为 192.168.0.103

=> setenv ipaddr 192.168.0.232=> setenv ethaddr aa:bb:cc:dd:ee:ff=> setenv serverip 192.168.0.103=> saveenv

设置环境变量完成之后,使用 ping 命令测试网络连接状态:

网络通了之后,就可以使用 tftp 命令将 Ubuntu 的 tftp 共享文件夹中的 zImage 和.dtb 下载到开发板内存中,使用命令将内核 zImage 下载到内存的 0x80800000 地址:

=> tftp 80800000 zImage

使用命令将.dtb 下载到内存的 0x83000000 地址:

=> tftp 83000000

OKMX6ULL-S2-emmc-1024x600.dtb

下载完成之后,我们就可以使用 bootz 命令启动内核了,具体的使用方法,我们在后面 boot 启动命名章节进行讲解。

1..2 内存命令

1)  md

md 是 memory display 的缩写,即显示内存数据。

使用 help md 命令查看 md 使用方法:

其中,.b 表示要显示 8 位数据,.w 表示显示 16 位数据,.l 表示显示 32 位数据。

Address 表示显示的数据地址,of objects 表示显示的数据个数(注意是十六进制)。

例如:显示内存地址 0X83000000 地址中的 2 个 8 位数据:

=> md.b 83000000 2

显示内存地址 0X83000000 地址中的 1 个 16 位数据:

=> md.w 83000000 1

 

如果不加.b,.w,.l,也不设置显示数据的个数的话,默认是显示 1 个 32 位数据:

=> md 83000000

 

2mw

mw 是 memory write 的缩写,即向内存中写入数据。

使用 help mw 命令显示 mw 的使用方法:

显然跟 md 命令使用方式类似,只是多了一个 value,即要写入的数据,而 count 是指要在起始地址为 address 的内存中写入 value 的个数。

直接举例说明,向内存 0x80000000 的地址写入 2 个 8 位数据 a8,然后使用 md 命令查看是否写入成功:

=> mw.b 80000000 a8 2

=> md.b 80000000 2

显然写入数据成功。

1..3 eMMC/SD 卡命令

eMMC 和 SD 卡(TF 卡)是同一类设备,以下命令二者是通用,本章节主要以 eMMC 举例说明命令的使用。

使用 help mmc 可以看到 mmc 相关命令列表以及其对应命令用法:

1mmc dev

使用 mmc list 可以看到当前系统挂载的所有 mmc 设备:

本系统的 mmc 设备有设备 0 和设备 1,设备 1 是 eMMC 设备,设备 0 就是 SD 卡(TF 卡)设备。

使用 mmc dev 命令可以查看当前选中正在使用的 mmc 设备,mmc dev

使用方法为: mmc dev [dev] [part]

[dev]是指要选择的设备,[part]是指所选设备的分区。

如果不加[dev]和[part]两个参数,则显示当前选中设备,如果不加[part]参数,则默认使用所选设备的0 分区。

当前选中正在使用的是mmc1设备的0分区,即eMMC Flash的0分区,此处的0分区其实是指eMMC Flash 的用户分区(用户分区的概念在以下 mmc write 章节会有说明)。使用 mmc dev 切换到使用 SD 设备: mmc dev 0

切换成功之后,现在使用的就是 SD 卡(TF 卡)设备,此时使用的 mmc 命令都是对 SD 卡进行的操作。为了使用 eMMC 进行命令使用举例演示,我们再将 mmc 设备更换为 eMMC: mmc dev 1

2mmc info

该命令是查看当前 mmc 设备相关信息: mmc info 或者 mmcinfo

 

3mmc read

mmc read 命令是读 mmc 中的数据到内存地址。使用方法为 mmc read addr blk# cnt,其中 addr 是将要存放数据的内存地址,blk#是要读的 mmc 的

起始块号,cnt 是块数目。举例,从 mmc 第 5 块开始读取 2 块的数据到内存 0x80800000: mmc read 80800000 5 2

每一块是 512 个字节,读取 2 块,就是读取 2*512=1024 个字节。

4mmc write 顾名思义,mmc write 是向 mmc 中写入数据,mmc write addr blk# cnt,其中 addr 是存放数据的内存地址,blk#是要写的 mmc 的起始块号,cnt 是块数目。

举例,我们现在使用 mmc write 将最新编译的 u-boot.imx 更新到 mmc 中。

第一步,我们需要先将新的 u-boot.imx 存放到内存中,前面章节我们讲过使用 tftp 将 Ubuntu 的 tftp共享文件夹中的文件下载到内存中,我们现在就使用 tftp 将 u-boot.imx 文件下载到内存 0x80800000 地址。然后第二步,就是用 mmc write 命令将 u-boot.imx 写入到 mmc 的指定 uboot 分区中。

我们通过操作 eMMC 设备演示 mmc write 命令的使用,在进行操作之前,我们先简单了解一下 eMMC分区的相关知识,eMMC 设备一般是由 BOOT Area Patrtition1、BOOT Area Patrtition2、RPMB Partition、 General Purpose Partitions(可分 4 个) 、User Data Area 这几个物理分区组成,对于 RPMB Partition、General Purpose Partitions 这两种分区我们没有涉及到这里不作介绍,我们涉及到的是 BOOT Area Patrtition1、BOOT Area Patrtition2、User Data Area,其中 BOOT Area Patrtition1、BOOT Area Patrtition2是存放 uboot 镜像的分区,两者选其一作为实际存放 uboot 的分区,OKMX6ULL-S2 使用的是 BOOT Area Patrtition1; User Data Area (UDA) 用户分区通常是 eMMC 中最大的一个分区,是实际产品中最主要的存储区域,OKMX6ULL-S2 在烧写时,会对此用户分区进行软件分区,分成 RAW、fat 和 ext3 格式的三个逻辑分区。了解了 eMMC 分区的相关概念之后,我们就可以进行如下操作,验证测试 mmc write 命令。按照前面 tftp 命令章节,配置好 tftp 网络环境之后,我们重新编译一个 uboot.imx 镜像,并且放入到 Ubuntu 的 tftp 共享文件夹中,并保证网络连接状态良好,在开发板使用 tftp 将新的 uboot 镜像下载到内存 0x80800000 处:

=> tftp 80800000 u-boot.imx

下载完成,之后使用 mmc write 写入到 eMMC 分区 BOOT Area Patrtition1 中,根据 mmc write addr blk# cnt 使用方法,addr=80800000,blk#是要烧写的起始地址, uboot 在 eMMC boot 分区的偏移为 1K=2*512 字节,即 blk#=2,cnt 是烧写的数据长度,根据 tftp 传输完成之后的打印信息,知道 uboot.imx 镜像大小为 429056 字节=838*512 字节,所以 cnt 应该等于 838,十六进制为 0x346。选择 mmc 设备及 BOOT Area Patrtition1 分区(最后一个参数为“1”,表示 BOOT Area Patrtition1 分区,为“2”时,表示选择的是 BOOT Area Patrtition2 分区,为“0”时,表示选择的是 UDA 用户分区):

=> mmc dev 1 1

=> mmc write 80800000 2 346

烧写完成之后,使用 reset 开发板,查看重启之后的打印信息:

通过版本信息看到 uboot 更新成功。

5mmc erase

mmc erase 是擦除 mmc 中数据。使用方法:

mmc erase blk# cnt,其中 blk#是要擦除的 mmc 起始地址,cnt 要擦除的块数量。一般情况很少使用mmc erase 命令进行 mmc 擦除操作。

后面常用命令还有一章,包含nand命令,文件系统命令,启动命令。

嵌入式系统想学习笔记之五--uboot之常用命令相关推荐

  1. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

  2. 嵌入式系统设计师学习笔记①:数的进制转换

    嵌入式系统设计师学习笔记:数的转换 进位计数制系统的基本概念:数制,基数,数码,数位,位权 制作了个表格如下: 在十六进制中:A-10,B-11,C-12,D-13,E-14,F-15. 举例各种进制 ...

  3. Linux学习笔记(二)|常用命令

    Linux学习笔记(二)常用命令 1.文件处理命令 1.1命令格式与目录处理 -ls 功能描述:显示目录文件 原意:list 所在路径:/bin/ls 语法: ls-a 显示所有文件,包括隐藏文件 l ...

  4. Linux学习笔记(一):Linux常用命令

    linux学习笔记(一):Linux常用命令 ctrl + l 清屏 clear crtl + c 终止操作 Linux常用命令 文件处理命令 ls:list 功能:显示目录文件 选项: -a 显示所 ...

  5. Hadoop 学习笔记(三)常用命令

    Hadoop 学习笔记(三)常用命令 进入HADOOP_HOME目录. 执行sh bin/start-all.sh 进入HADOOP_HOME目录. 执行sh bin/stop-all.sh Usag ...

  6. 嵌入式系统学习笔记之五-uboot常用命令之补充

    1.nand 命令 uboot 也支持 NAND Flash 的操作命令,现在我们使用的 NAND 版的开发板,进行本节讲解. 输入"help nand"即可查看 NAND 相关命 ...

  7. 嵌入式系统及应用Linux学习笔记(一)——常用命令

    https://blog.csdn.net/qq_40700822/article/details/106080389 Linux学习笔记(一) Linux简介 Linux特点 Linux基本操作 1 ...

  8. 狂神说--docker学习笔记-docker安装,常用命令,以及使用

    狂神说bilibili视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 1. Docker概述 1.1 Docker为什么出现? 大家经常做一款 ...

  9. liunx学习笔记(一:常用命令)

    linux: 在学习linux之前我们应该多少了解windows的一些相关操作,linux也就是类似windows的另一种操作系统,用来管理软硬件的一种应用.在windows下你可以通过鼠标点击相关的 ...

最新文章

  1. numpy中的cov(方差计算)简单介绍
  2. Anaconda+用conda创建python虚拟环境
  3. pyspark rdd 基本操作
  4. 用electron-forge创建一个项目
  5. 【CyberSecurityLearning 35】基础环境搭建
  6. java libpcap,Linux下编译安装libpcap
  7. 该文件可能是只读的 或者您要访问的位置_喔噢小贴士:如何保护PPT不被更改,将其设为只读...
  8. c#之using关键字
  9. 无法设置或未定义null引用的属性innerHTML
  10. PMP考试有哪些技巧?
  11. 项目管理的方法论 一
  12. 剑侠世界手游服务器维护公告,剑侠世界手游公告_剑侠世界手游开服公告_更新公告_安趣网...
  13. 阿里云 ECS 服务等级协议 SLA是什么?
  14. 基于MATLAB的指纹识别系统【论文,GUI】
  15. 西门子S7系列PLC以太网通讯处理器MPI-131
  16. RTX30系列-Ubuntu系统配置与深度学习环境Pytorch配置
  17. VS2019许可证过期解决办法
  18. linux网络引流工具,gor 引流快速入门
  19. 目标检测中边框回归的直观理解 bbox regression
  20. BI的作用,体现在企业的哪些方面

热门文章

  1. 佳能80d有人脸识别吗_国家地理2020年旅行者最推荐相机Top10,有你喜欢的吗?
  2. C语言按两个字节读写二进制文件,C语言 读写二进制文件(示例代码)
  3. angular 缓存 html5,Angular 如何及时更新客户端缓存?
  4. 数据泄露报告称,1/5 的外部数据泄露事件涉及政府背景(附下载)
  5. 未来数据中心的选择:宽带多模光纤
  6. 乐观锁与悲观锁——解决并发问题
  7. python学习笔记(开课介绍1)
  8. TOMCAT6中一个警告“Parameters:Invalid chunk ignored ”
  9. django学习笔记1
  10. jdk 环境配量配置