uboot命令(1):mmc命令

时间:2022-06-21 16:50:05

版权声明

更新:2017-06-07
博主:LuckyAlan
联系:liuwenvip163@163.com
声明:吃水不忘挖井人,转载请注明出处!

1 文章介绍

今天在进行Android分区修改的时候发现擦除后无法进入kernel,查了一下是因为bootargs_Hi3798MV200-emmc.txt文件中的bootcmd没有修改。这个参数与内核启动有关,需要用到mmc命令,因此多mmc相关的命令做一个学习总结。

2 开发平台

软件平台:Android系统。
硬件平台:hisi3798MV200

3 阅读须知

4 文章正文

4.1 打印当前mmc设备的信息

命令: mmcinfo

uboot命令(1):mmc命令

4.2 对mmc进行读写操作

4.2.1 命令说明

读操作命令:  mmc read <device num> addr blk# cnt [partition]  
写操作命令:  mmc write <device num> addr blk# cnt [partition]

参数说明:

  • device num:mmc的设备号,可以通过mmc list查询
  • addr:内存地址
  • blk# :mmc内的块号
  • cnt:块数目

4.2.2 命令举例

读操作:  mmc read 0x10800000 0x600 0x10  
读操作说明:从第0个mmc设备块上1536*512个字节处开始(1536是0x600的十进制),读取16×512个字节(16是10的10进制)到内存0x10800000 处。以kernel为例,若前面的分区为94M(也就是kernel的分区从94M的地方开始),那么,0x600的地方的值应为:94*2*1024的十六进制0x2F000。

为何这样计算呢?我们在系统开始的时候可以看到如下打印信息:

uboot命令(1):mmc命令

在上图中可以看到,每个块是512Bytes,因此kernel的启动地址为94*1024*1024改为94*1024*1024/512=94*2*1024。下面的计算方法相同。

写操作: mmc write 0x90000000 0x600 0x10 
写操作说明:把内存0x90000000开始,长度为16x512大小的数据,写入到第2个mmc设备块偏移位置为0x600处。

5 参考资料

1、《常用u-boot命令详解(全)
2、《uboot中的mmc命令
3、《mmc的命令里面write的参数是16进制却不需要写0x