目录
1 eMMC简介
1.1eMMC的外观图与引脚说明图
1.2eMMC的定义
1.3eMMC的基础操作
2 eMMC5.1协议
2.1 eMMC5.1协议文档的获取
2.2 eMMC的初始化
2.3 eMMC的读写
3 本专栏教程的目标
3.1 内容核心
3.2 教程安排
通俗点说,eMMC就是一个存储芯片,就像SD卡一样,用于存取数据。从普通开发者角度看,只要遵循eMMC协议,就可以对eMMC芯片进行读写操作。(拓展:SD卡、UFS芯片、eMMC芯片、U盘都是类似的功能,从使用角度看,只是接口不同、通信协议不同,本教程只涉及目前最新的eMMC芯片,遵循eMMC5.1协议。)
下图(图一)是网上搜索到的一款国产eMMC芯片(eMMC采用BGA封装):
图一 eMMC芯片外观而关于其引脚定义,笔者也在网上找到一个图(图二):
图二 eMMC引脚定义图
其中,RFU 引脚暂无作用(RFU是 “Reserved for Future Use” 的缩写)
而关于其他引脚的作用,见下图图三(具体作用后续会详细描述):
注:图三出自eMMC5.1协议文档 第5.3章 (e•MMC Device Overview)
图三 eMMC引脚说明
特别说明的是DS引脚,也就是Data Strobe引脚,原文档描述为:
eMMC ,即:Embedded Multi Media Card 的缩写。由一个嵌入式存储解决方案组成,带有MMC接口、快闪存储器设备及主控制器。所有都在一个小型的BGA 封装。接口速度最高可达每秒400MBytes,其接口电压可以是1.8V或者是3.3V。(一般VCCQ 1.8V,VCC 3.3V)
对于一般的开发者,eMMC的基础操作包括:初始化操作(CMD0+CMD1+CMD2+CMD3+CMD7)、(多种速率的)读写操作、写保护操作、分区操作。
在此后的章节中将详细展开叙述。本篇为开篇简介与概览,故而只是简单介绍。
如下链接,无需C币:
eMMC5.1协议文档(目录中重点章节已高亮)
eMMC上电后,需要先初始化,才能进行后续的读写操作。
初始化的命令序列为:CMD0 发一次、CMD1发多次(直到返回值首位为1)、CMD2、CMD3、CMD7
以上的命令序列发送成功后,eMMC便进入了transfer模式,可进行读写等操作。
eMMC进入了transfer模式后,也就是初始化序列发送成功后,eMMC上盘成功,可进行读写操作。
普通的读写方式有两种:
(1)主控芯片先通过命令指定起始地址,再通过命令指定要传输的块数,然后发送数据;
(2)主控芯片先通过命令指定起始地址,开始发送数据,发完数据再发命令通知eMMC芯片结束读写操作。
后续章节将详细描述。
目标为:从普通开发者角度,描述清楚eMMC的常用功能,使得读者能对eMMC有一个较为全面的了解,并具备一些基本的开发能力。
(1)eMMC芯片的引脚说明;
(2)eMMC芯片的初始化;
(3)eMMC芯片的读写操作;
(4)eMMC芯片的速度模式调整;
(5)eMMC芯片的分区操作;
(6)eMMC芯片的写保护操作。
本教程篇幅计划15篇,其中:
第1-3篇为基础篇,涉及内容为本教程全部内容的简单描述,供入门与了解使用;
第4-5篇为初始化相关内容的专讲;
第6-8篇为读写操作的专讲,包括普通读写与打包读写;
第9-11篇为三种速度模式的专讲(SDR50、HS200、HS400);
第12-13篇为分区操作相关内容;
第13-14篇为写保护操作的相关内容;
第15篇为几个常用寄存器的专讲与全教程的总结
第16-17篇(如果有时间写的话)为命令队列 (CMDQ) 的相关内容