从本章开始,我们分析mmc子系统,其也遵循LINUX设备-总线-驱动模型,并基于自身的特点进行了相应的抽象。
针对本专题,我们主要涉及如下几个章节:
一、MMC子系统概述;
二、MMC子系统驱动模型分析(包括总线、设备、驱动);
三、MMC总线分析
四、MMC host分析
五、MMC driver分析
六、MMC card添加流程分析
七、MMC block分析
本篇为此系列的起始,主要对MMC子系统进行一个简要的概述说明。针对MMC来说,主要包括几个部分:MMC控制器、MMC总线、card。针对卡而言,包括MMC卡(7pin,支持MMC和spi两种通信模式)、SD卡(9pin,支持sd和spi两种通信模式)、TF卡(8pin,支持sd和spi两种通信模式),针对MMC、SD而言,其总线规范类似,都是从MMC总线规范演化过来的。另外上面所说的均是针对存储卡而言,而基于MMC这种通信方式,又演化了SDIO,SDIO强调的是IO,与MMC/SD的区别主要是连接的设备,其不再仅仅是存储卡,可以链接任何支持SDIO的外设(包括蓝牙设备、wifi设备等)。
其实SDIO的实现则和我们之前分析的IIC、SPI总线类型,通过SDIO可以连接各种类型的设备(wifi、bluetooth、uart、gps、esata等)
CPU、MMC之间的硬件关联图
CPU、MMC controller、存储设备之间的关联如下图所示,主要包括了MMC controller、总线、存储卡等内容的连接,针对控制器与设备的总线连接,主要包括时钟、数据、命令三种类型的引脚,而这些引脚中的cd引脚主要用于卡的在位检测,当mmc controller检测到该位的变化后,则会进行mmc card的注册或注销操作。