关键词:
参考:U-Boot命令之EMMC和SD卡操作命令
作者:一只青木呀
发布时间: 2020-10-20 15:02:16
网址:https://blog.csdn.net/weixin_45309916/article/details/109178989
目录
EMMC和SD卡操作命令
uboot 支持 EMMC 和 SD 卡,因此也要提供 EMMC 和 SD 卡的操作命令。一般认为 EMMC和 SD 卡是同一个东西,所以没有特殊说明,统一使用 MMC 来代指 EMMC 和 SD 卡。
uboot 中常用于操作 MMC 设备的命令为“mmc”
mmc 是一系列的命令,其后可以跟不同的参数,输入“? mmc”即可查看 mmc 有关的命令,如下图所示:
从上图可以看出, mmc 后面跟不同的参数可以实现不同的功能,如下表所示:
命令 | 描述 |
---|---|
mmc info | 输出 MMC 设备信息 |
mmc read | 读取 MMC 中的数据。 |
mmc wirte | 向 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 寄存器的值。 |
1、 mmc info 命令
mmc info 命令用于输出当前选中的 mmc info 设备的信息,输入命令“mmc info”即可,如下图所示:
从上图可以看出,当前选中的 MMC设备是 SD卡,版本为 3.0,容量为 14.8GiB(EMMC为 4GB),速度为 50000000Hz=50MHz, 4 位宽的总线。还有一个与 mmc info 命令相同功能的命令: mmcinfo,“mmc”和“info”之间没有空格。
2、 mmc rescan 命令
mmc rescan 命令用于扫描当前开发板上所有的 MMC 设备,包括 EMMC 和 SD 卡,输入“mmc rescan”即可。
3、 mmc list 命令
mmc list 命令用于来查看当前开发板一共有几个 MMC 设备,输入“mmc list”
可以看出当前开发板有两个 MMC 设备: FSL_SDHC:0 (SD)和 FSL_SDHC:1 (eMMC),这是因为我现在用的是 EMMC 版本的核心板,加上 SD 卡一共有两个 MMC 设备, FSL_SDHC:0 是 SD卡, FSL_SDHC:1(eMMC)是 EMMC,。默认会将 EMMC 设置为当前 MMC 设备,要想查看 EMMC信息,就要使用命令“mmc dev”来将 EMMC卡设置为当前的 MMC 设备
4、 mmc dev 命令
mmc dev 命令用于切换当前 MMC 设备,命令格式如下:
mmc dev [dev] [part]
[dev]用来设置要切换的 MMC 设备号, [part]是分区号。如果不写分区号的话默认为分区 0。
使用如下命令切换到 EMMC:
mmc dev 1 //切换到 SD 卡, 0 为 SD 卡, 1 为 eMMC
结果如下图所示:
从上图可以看出,切换到 EMMC 卡成功, mmc1 为当前的 MMC 设备,输入命令“mmcinfo”即可查看 EMMC 卡的信息,结果如图下所示:
从上图可以看出,EMMC版本为4.0, 容量为 7.3GiB,速度为 52000000Hz=52MHz, 8 位宽的总线。
5、 mmc part 命令
有时候 SD 卡或者 EMMC 会有多个分区,可以使用命令“mmc part”来查看其分区,比如查看 EMMC 的分区情况,输入如下命令:
mmc part //查看 EMMC 分区
结果如下图所示:
从上图中可以看出,此时 EMMC 有两个分区,扇区 20480~ 262144 为第一个分区,扇区 282644~14987264 为第二个分区。如果 EMMC 里面烧写了 Linux 系统的话, EMMC 是有3 个分区的,第 0 个分区存放 uboot,第 1 个分区存放 Linux 镜像文件和设备树,第 2 个分区存放根文件系统。但是在图中只有两个分区,那是因为第 0 个分区没有格式化,所以识别不出来,实际上第 0 个分区是存在的。一个新的 SD 卡默认只有一个分区,那就是分区 0.
6、 mmc read 命令
mmc read 命令用于读取 mmc 设备的数据,命令格式如下:
mmc read addr blk# cnt
addr 是数据读取到 DRAM 中的地址, blk 是要读取的块起始地址(十六进制),一个块是 512字节,这里的块和扇区是一个意思,在 MMC 设备中我们通常说扇区, cnt 是要读取的块数量(十六进制)。比如从 EMMC 的第 1536(0x600)个块开始,读取 16(0x10)个块的数据到 DRAM 的0X80800000 地址处,命令如下:
mmc read 80800000 600 10 //读取数据
结果如图所示:
7、 mmc write 命令
要将数据写到 MMC 设备里面,可以使用命令“mmc write”,格式如下:
mmc write addr blk# cnt
addr 是要写入 MMC 中的数据在 DRAM 中的起始地址, blk 是要写入 MMC 的块起始地址(十六进制), cnt 是要写入的块大小,一个块为 512 字节。我们可以使用命令“mmc write”来升级 uboot,也就是在 uboot 中更新 uboot。这里要用到 nfs 或者 tftp 命令,通过 nfs 或者 tftp 命令将新的 u-boot.bin 下载到开发板的 DRAM 中,然后再使用命令“mmc write”将其写入到 MMC设备中。我们就来更新一下 SD 中的 uboot,先查看一下 SD 卡中的 uboot 版本号,注意编译时间,输入命令:
mmc dev 0 //切换到 SD 卡
version //查看版本号
可以看出当前 SD 卡中的 uboot 是 2020 年 10 月 12 日 14:04:37 编译的。我们现在重新编译一下 uboot,然后将编译出来的 u-boot.imx(u-boot.bin 前面加了一些头文件)拷贝到 Ubuntu 中的tftpboot 目录下。最后使用 tftp 命令将其下载到 0x80800000 地址处,命令如下:
tftpboot 80800000 u-boot.imx
可以看出, u-boot.imx 大小为 379904 字节, 379904/512=742,所以我们要向 SD 卡中写入742 个块,如果有小数的话就要加 1 个块。使用命令“mmc write”从 SD 卡分区 0 第 2 个块(扇区)开始烧写,一共烧写 742(0x2E6)个块,命令如下:
mmc dev 0 0
mmc write 80800000 2 32E
烧写成功,重启开发板(从 SD 卡启动),重启以后再输入 version 来查看版本号,结果如下图所示:
从上图可以看出,此时的 uboot 是 2020 年 10 月 20 号 14:47:38 编译的,这个时间就是我刚刚编译 uboot 的时间,说明 uboot 更新成功。这里我们就学会了如何在 uboot 中更新 uboot了,如果要更新 EMMC 中的 uboot 也是一样的。
同理,如果要在 uboot 中更新 EMMC 对应的 uboot,可以使用如下所示命令:
mmc dev 1 0 //切换到 EMMC 分区 0
tftp 80800000 u-boot.imx //下载 u-boot.imx 到 DRAM
mmc write 80800000 2 32E //烧写 u-boot.imx 到 EMMC 中
mmc partconf 1 1 0 0 //分区配置, EMMC 需要这一步!
千万不要写 SD 卡或者 EMMC 的前两个块(扇区),里面保存着分区表!
8、 mmc erase 命令
如果要擦除 MMC 设备的指定块就是用命令“mmc erase”,命令格式如下:
mmc erase blk# cnt
blk 为要擦除的起始块, cnt 是要擦除的数量。没事不要用 mmc erase 来擦除 MMC 设备!!!
sd介绍(代码片段)
...是一种非易失性存储器件,有7pin,目前已基本被SD卡代替eMMC,EmbeddedMultimediaCard,内嵌式存储器,以BGA方式封装到SOC上;内置主控制器,以实现统一MMC接口SD,SecureDigitalMemoryCard,即安全数码卡,新一代多媒体储存卡,高速,安全... 查看详情
mmc/emmc/sd-card
转自:http://blog.csdn.net/yazhouren/article/details/46643321MMC(multiMediacard)是一种通信协议,支持两种模式SPI和MMCeMMC是一种支持MMC协议的芯片MMC/e?MMCcommunicationisbasedon anadvanced10-signalbus.Thecommunicationprotocoli 查看详情
[接口]mmc/emmc/sd-card
转自:http://blog.csdn.net/yazhouren/article/details/46643321MMC(multiMediacard)是一种通信协议,支持两种模式SPI和MMCeMMC是一种支持MMC协议的芯片MMC/e?MMCcommunicationisbasedon anadvanced10-signalbus.Thecommunicationprotocoli 查看详情
u-boot常用命令(代码片段)
u-boot常用命令查看u-boot所支持的命令查询命令u-boot版本环境变量板子相关信息环境变量操作内存操作网络操作EMMC和SD卡操作FAT格式文件系统操作EXT格式文件系统操作ubi格式文件系统操作boot操作bootzbootmbootUMS命令常用其他uboot环境... 查看详情
关于arm开发板(rk3399)android系统的emmc进行tuning的次数在源代码中应该在啥地方看
...统太大了,不知道有没查看遗漏的,谢谢回答参考技术AU-boot支持2种方式烧写emmc设备:Fastboot命令:通过usb接口烧写。步骤:1.编写u-boot支持从sd卡启动,里面涉及到文件的修改,下面讲解。2.按照上述方法,把u-boot烧录到sd上,... 查看详情
emmcsd/emmc寄存器介绍
1.SD卡内部架构2.SD/MMC相关寄存器的介绍2.1.CardIdentificationRegister(CID)2.2.CardSpecificDataRegister(CSD)2.3.SDcardConfigurationRegister(SCR)2.4.OperatingConditionsRegister(OCR)2.5.RCA寄存器3.参考文献 熟悉SD/MMC的相关寄存器对 查看详情
linux怎么读取sd卡cid?
要在Linux系统上读取SD卡CID,可以使用以下命令:首先,使用以下命令查看SD卡设备名称:sudofdisk-l这将列出所有已连接的设备,包括SD卡。请注意SD卡的设备名称,例如/dev/sdc。然后,使用以下命令读取SD卡CID:sudocat/sys/class/mmc_host... 查看详情
烧录乌班图系统的sd卡怎么格式化
...明输入界面输入用户名:ORBBEC输入密码:ORBBECe.进入系统命令行模式f.输入命令:sudoarmbian-config参考技术A若您想要在手机上格式化SD卡,请参考以下步骤操作:设定-(更多/一般)存储-SD卡-格式化SD卡。1、格式化emmc:使用空的emmc存储... 查看详情
linux系统移植:u-boot常用指令(上)(代码片段)
文章目录Linux系统移植:U-Boot常用指令(上)一、U-Boot命令行二、U-Boot常用命令(上)2.1help帮助命令2.2信息查询命令2.3环境变量修改命令2.4内存操作命令2.5网络操作命令Linux系统移植:U-Boot常用指令(... 查看详情
inand和emmc是什么东西
...ent/13/1231/16/11948835_341531661.shtml 首先明确的一点是eMMC只是一种接口标准,而iNand是符合eMMC标准的由Sandisk公司生产的一款芯片,Samsung公司生产的符合eMMC标准的芯片是moviNand。eMMC可以看作是SD/MMC卡的芯片化,其接口和SD/MMC... 查看详情
linux系统下怎么查看sd卡cid信息?
参考技术A使用以下命令:cat/sys/devices/platform/jz-msc.0/mmc_host/mmc0/mmc0:1234/cid或者使用通配符cat/sys/devices/platform/jz-msc.0/mmc_host/mmc0/mmc0:*/cid追问提示没有那个目录🤔 参考技术B使用以下命令:cat/sys/devices/platform/jz-msc.0/mmc_host/mmc0/mmc0... 查看详情
tiny4412标准版,编译u-boot并烧录到sd卡,从sd卡启动后只打印‘ok’两个字符
本人开发板是tiny4412(1G+4G)的标准版,由于开发板自带的光盘资料无法读取,所以就从友善官网下载到最新的资料;然而在做uboot烧录实验的时候,发现烧录完成从SD卡启动后只打印“OK”两个字符,无法正常... 查看详情
stm32l476应用开发之五:数据保存与sd卡操作
...该读卡器摸块通讯协议比较简单,本模块的通讯协议分为命令发送和命令的应答两部分,其中命令格式 查看详情
[imx6dl]fastbooterasesd分区实现
u-boot:v2009.08系统默认只支持nand的fastbooterase功能,而我们用的是SD,当使用fastbooterase时,会提示:“NotsupporterasecommandforEMMC”SD和EMMC都是基于MMC,u-boot本身有实现mmc的blockerase功能,因此我们利用它来擦写对应的块即可。在擦写之... 查看详情
14020.petalinux之platform-auto.h和platform-top.h(代码片段)
...filename,从服务器下载文件到addr地址。mmc主要是SD卡和EMMC操作指令 查看详情
stm32开发_利用spi协议读写sd卡介绍sd卡spi时序(代码片段)
...间区别2.2SD卡版本说明2.3SD卡常用的指令表三、向SD卡发送命令的步骤介绍(SendSDCardCmd)3.1取消选中SD卡(SDCardCancelCS)3.2选中SD卡(SDCardSelectCS)3.3向SD卡发送操作命令cmd3.4向SD卡发送命令参数3.5发送CRC校验3.6等待SD卡响应四、SD卡的寄存器... 查看详情
stm32cubemx之sd卡驱动
STM32CubeMx之SD卡驱动1.SD卡简介 SD存储卡(SecureDigitalMemoryCard)是一种基于半导体快闪存储器的新一代高速存储设备。SD存储卡的技术是从MMC卡(MultiMediaCard)格式上发展而来,在兼容SD存储卡基础上发展了SDIO(SDInput/Output)卡,... 查看详情
先在sd卡上启动u-boot,再烧写新的u-boot进nandflash
...一样),和烧写SD卡的工具write_sd以及需要烧写到SD卡中的u-boot-movi.bin。将SD卡格式化后连接到Ubuntu虚拟机中,注意在SD卡需要插入到读卡器中,不能用电脑自带的SD卡槽,否则在Ubuntu下认不到。先执行ls/dev/sdb*,能够看见有一个/dev... 查看详情