uboot命令使用学习(4)

2023-11-10

学习目标:

uboot命令使用学习(4)
EMMC和SD卡操作命令

学习内容:

学习使用了正点原子的I.MX6ULL教程及开发平台。
1、mmc info命令
2、mmc rescan命令
3、mmc list命令
4、mmc dev命令
5、mmc part命令
6、mmc read命令
7、mmc write命令
8、mmc erase命令

学习时间:

2022-05-30

学习产出:

一般认为EMMC与SD卡是同一个东西,都是mmc接口设备,uboot中常用于操作mmc设备的命令为“mmc”。
mmc是一系列的命令,其后可以跟不同的参数,输入"? mmc"即可查看mmc有关的命令,如下图所示。
在这里插入图片描述

一、mmc info
mmc info命令用于输出当前选中的mmc设备信息,如图所示。
在这里插入图片描述
从图中可以看出,当前选中的mmc设备为SD卡,版本为3.0,容量为14.8GiB,4位宽的总线。
二、mmc rescan
mmc rescan命令用于扫描当前开发板上的所有MMC设备,包括EMMC和SD卡,输入此命令后不会有任何打印信息,如下图所示。
在这里插入图片描述
三、mmc list
mmc list用于查看当前开发板一共有几个MMC设备,如图所示。
在这里插入图片描述
可以看出当前开发板有两个MMC设备,分别为FSL_SDHC:0(设备号为0)和FSL_SDHC:1(设备号为1),这是因为当前开发板使用了两个MMC设备,EMMC和SD卡,FSL_SDHC:0为SD卡,FSL_SDHC:1为EMMC。当前uboot是从SD卡中加载的,因此默认将SD卡作为当前选中的MMC设备,这也就是为什么,输入mmc info命令查询的是SD卡信息。
四、mmc dev
mmc dev命令用于切换当前mmc设备,命令格式如下:
mmc dev [dev] [part]
[dev]用来设置要切换的mmc设备号,[part]是分区号。如果不写分区号的话默认分区0。如切换到EMMC,使用mmc list命令查看到的EMMC设备号为1,如下图所示。
在这里插入图片描述
从图中可以看出,切换到emmc成功,mmc1为当前的mmc设备,即EMMC。用mmc info查看当前的EMMC设备信息,如下图所示。
在这里插入图片描述
图中可以看出,当前EMMC设备的版本为4.0,容量为7.3GiB,8位位宽。
五、mmc part
EMMC或者SD卡会有多个分区,可以使用mmc part来查看其他分区的情况,比如查看EMMC设备分区的情况。
mmc dev 1 //切换到EMMC
mmc part //查看EMMC分区
如下图所示。
在这里插入图片描述
从图中可以看出,此时的EMMC具有两个分区,第一个分区的扇区起始地址为20480,长度为262144个扇区;第二个分区的扇区起始地址为282624,长度为14987264个扇区。如果EMMC中烧写了Linux系统,EMMC将会有三个分区,第0分区存放uboot,第1个分区存放Linux镜像和和设备树,第2个分区存放根文件系统。图中的EMMC设备只有两个分区,那是因为第0分区没有格式化,所以识别不出来,实际上第0分区是存在的。一个新的SD卡默认只有一个分区,那就是分区0,目前是将uboot烧写带SD卡中的,起始就是将u-boot.bin烧写到了SD卡的第0分区中。
如果要将EMMC的分区2设置为当前的EMMC设备,可以使用如下命令:
mmc dev 1 2
如图所示。
在这里插入图片描述
六、mmc read
mmc read命令用于读取mmc设备的数据,命令格式如下:
mmc read addr blk cnt
addr是数据读取到DRAM中的地址;
blk是要读取的块起始地址(十六进制);
cnt是要读取的块数量(十六进制)。
这里的块和扇区是一个意思,在EMMC中通常说扇区,SD卡通常说块。
比如从SD卡的第0x600个块开始,读取0x10个块的数据到DRAM的0x80800000地址处,如图所示。
在这里插入图片描述

先将当前mmc设备切换为SD卡,当前uboot存在于SD卡中,如果切换到EMMC,可能因为当前EMMC中未烧录数据,导致数据全为00或者FF,然后读取数据到DRAM的80800000地址处。
使用md.b命令查看当前DRAM中80800000地址处的数据,如图所示。
在这里插入图片描述
上图只截取的一部分数据,可以看出这些数据就是uboot的环境变量。因为SD的块大小为512字节,总共写入了16个块,所以总共的字节数为16x512=8192字节,也就是0x2000。
七、mmc write
要将数据写入到mmc设备中可以使用mmc write命令,格式如下:
mmc write addr blk cnt
addr就是要写入MMC的数据在DRAM中的起始地址;
blk就是要写入MMC的起始地址(十六进制);
cnt就是要写入的块大小(十六进制),一个块为512字节。
我们为您可以使用此命令来升级uboot,也就是在uboot中更新uboot。这里先通过nfs或tftp命令将新的u-boot.bin通过网络下载到DRAM中,然后使用mmc write命令,将DRAM中的u-boot.bin写入到mmc设备中。先查看当前的uboot的版本号及编译时间,如下图所示。
在这里插入图片描述
如上图所示,先将当前的mmc设备切换为SDk卡,因为目前开发板是SD卡启动的,所以要烧写到SD卡。当前uboot的版本为2016.3,编译时间为2022-05-29 00:46:25。
进入ubunt主机的uboot下,重新编译一次uboot,如下图所示。
在这里插入图片描述
然后找到编译出来的u-boot.imx(就是在u-boot.bin前面加了一些头部信息,i.mx6ull需要这些信息,才正常启动),如下图所示。
在这里插入图片描述
然后将u-boot.imx拷贝到ubunt中的tftpboot目录下,如下图所示。
在这里插入图片描述
最后保证开发板能ping通ubunt主机,在uboot命令行使用tftp命令下载,如下图所示。
在这里插入图片描述
可以看出uboot的大小为38400字节,384000/512=750,所以要向SD卡中写入750(0x2EE)块,若有小数就要加1块。使用命令mmc write从SD卡分区0的第2个扇区。千万不要写SD卡或者EMMC的前两个扇区,因为里面保存着分区表。而且要写到第2扇区,否则uboot不会正常启动。
如下图所示。
在这里插入图片描述
重启开发板。
在这里插入图片描述
从上图可以看出,uboot的编译时间已经更新,说明uboot更新成功。
同理,如果要在uboot中更新EMMC中的uboot,可以使用如下命令:
mmc dev 1 0 //切换到 EMMC 分区 0
tftp 80800000 u-boot.imx //下载 u-boot.imx 到 DRAM
mmc write 80800000 2 22E //烧写 u-boot.imx 到 EMMC 中
mmc partconf 1 1 0 0 //分区配置, EMMC 需要这一步!

八、mmc erase
mmc erase用于擦除mmc设备中指定的块,命令格式为:
mmc erase blk cnt
blk为要擦除的起始块;
cnt为要擦除的数量。
注意,谨慎使此命令,最好不要用!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uboot命令使用学习(4) 的相关文章

随机推荐

  • 利用fairygui界面滚动组件实现滑动屏幕

    我在做一个小游戏的时候需要实现界面滑动效果 开始第一念头是用监听鼠标的滑动位置改变来做 但是fairygui有一种滚动组件就可以很方便的实现 我们需要用到滑动界面情况 通常是因为游戏的背景图片比游戏可视界面大 暂不考虑背景循环 图片加载 首
  • 开发要点-微信小程序

    微信小程序教程 基于微信平台的接触即用应用 兼有服务号的功能 同时提供类似原生的体验 以前叫应用号 适合做用完即走的应用 与用户的关系不是重依赖的关系 体验官方示例 了解小程序组件 组件 UI组件 接口 动态API 传统接口 微信开放接口
  • python3 题解(36 补齐为回文串)

    补齐为回文串 问题 回文串也中镜像串 就是左右对称的串 a aba baab 都是回文串 给定一个串 至少要添加上多少个字母 才能将它改造为回文串呢 分析 这可以通过递归的方法 不断缩小规模来实现 如果一个串的首尾两个字符相同 那么最小次数
  • 2018之后的Unity3d制作AR教程

    自2017 4以后的unity版本 AR的SDK已经被集成 那么如何用2018unity3d制作AR呢 1 首先打开Unity3d2018 然后打开File gt Building Setting 接着打开PlayerSetting 找到X
  • Linux基础IO

    基础IO 一 C语言文件操作 C语言文件接口汇总 C语言文件接口使用 二 Linux文件操作系统调用 open write read close 使用系统接口 三 文件描述 fd 文件描述符原理 文件描述符分配规则 如何理解一切皆文件 四
  • Java IO流处理 面试题汇总

    说明 本节内容来源于网络汇总 输入输出流是相对于内存而言的 1 面试题汇总 1 java中有几种类型的流 2021 08 19更新 从编码方式上 分为字符流和字节流 如上图可知 字节流继承inputStream和OutputStream 字
  • StableDiffusion入门教程

    目录 介绍 模型的后缀 ckpt模型 safetensors模型 文件夹 VAE 模型在哪下载 Hugging face
  • Docker-Compose一键部署

    Docker Compose一键部署 文章目录 Docker Compose一键部署 Docker 网络模式 一键部署 Docker 网络模式 关于 docker 网络模式 有时间会另出一篇博客详细介绍 或者在该博客下继续补充 docker
  • d3dcompiler_47.dll缺失怎么修复?多种解决d3dcompiler_47.dll丢失的方法分享

    在使用电脑过程中 我们有时可能会遇到各种各样的错误提示信息 其中之一就是 d3dcompiler 47 dll缺失 的问题 这个错误意味着你的计算机上缺少了一个重要的组件文件 可能导致某些程序无法正常运行 尽管对于非专业用户来说 这个问题可
  • Python开发技术—文件和异常2

    第1关 读取CSV文件1 任务描述 本关任务 编写一个能读取csv文件的程序 将指定的文件按照要求的格式输出 相关知识 为了完成本关任务 你需要掌握 1 csv模块 测试说明 平台会对你编写的代码进行测试 在你的程序的当前目录下存在一个bo
  • QGIS二次开发08:QGIS的二次封装例子

    QGIS体系过于庞大 对二次开发有一定的学习难度 同时在后续的多个项目中会有大量相同功能的应用 因此有必要进行二次封装 暴露必要的实现接口 从而简化开发的难度 一 基础封装功能 1 空间数据加载和显示 实现工程文件加载和显示 2 地图交互动
  • 【CSS】背景图定位问题适配不同机型

    需求 如图 实现一个带有飘带的渐变背景 其中头像必须显示飘带凹下去那里 需要适配不同的机型 一不下心容易错位 实现 因为飘带背景是版本迭代中更新的 所以飘带和渐变背景实则两个div 飘带切图如下 圆形部分需要契合头像
  • 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用

    真火 作为最近一段时间人工智能领域内的顶流之一 AIGC AI Generated Content 早已火爆出圈 频登各大互联网平台热搜 cite 微软亚洲研究院官方微博 这段时间以来 基于深度学习的内容生成在图像 视频 语音 音乐 文本等
  • 融合网络位置服务器,4G/5G定位的关键技术及异构融合一体化定位系统的网络架构...

    摘要 如何提高室内定位精度并实现室内外定位的连续无缝覆盖是定位领域急需解决的问题 针对该问题 首先介绍了4G定位的标准与技术 并分析了其特点与不足 然后 分析了面向5G的超密集组网下的定位技术 AOA TDOA定位技术以及上下行定位技术 最
  • 【python教程】之try--except异常捕获

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 异常简介 捕获异常 try except except捕获异常类型 捕获多个异常的方式 不明确错误类型的情况 try except else try except
  • 上线代码质量审查解决方案

    前言 使用自动化工具和人工审查并行方式检查程序源代码是否存在安全隐患 或者有编码不规范的地方 利用自动化代码审计工具 如CheckStyle FindBugs PMD JTest 进行代码审计 以及每周定期组织对最近开发的业务进行代码评审
  • java javaw 命令区别_java 和javaw 的区别

    javaw exe用法和java exe 相同 javaw的程序不在java console 上面显示任何东西 如果在开发程序 就用java 这样可以看到错误提示 如果是运行完成了的程序 就用javaw 可以提高一点速度 两个应用程序都能运
  • I2C总线的通讯距离

    关于I2C总线 I2C总线不适合远距离通信 尤其是使用线缆与接口器件进行通信时一般不选择 I2C 使用I2C总线都是在用一个开发板上或者距离比较近 如果是远距离通信 比如说超过2米 这个时候对硬件就有特殊的要求了 通信线缆小于0 2米 一般
  • STM32学习之以太网介绍

    以太网简介 以太网 Ethernet 是互联网技术的一种 由于它是在组网技术中占的比例最高 很多人直接把以太网理解为互联网 以太网是指遵守IEEE802 3标准组成的局域网 由IEEE 802 3标准规定的主要是位于参考模型的物理层 PHY
  • uboot命令使用学习(4)

    学习目标 uboot命令使用学习 4 EMMC和SD卡操作命令 学习内容 学习使用了正点原子的I MX6ULL教程及开发平台 1 mmc info命令 2 mmc rescan命令 3 mmc list命令 4 mmc dev命令 5 mm