1.内核MMC/SD驱动程序框架
内核drivers/mmc目录下有3个子目录:card/、core/和host/,这刚好表示了MMC/SD驱动程序的3个层次,如下:
1)区块层
向文件系统层、用户空间提供文件操作的接口,主要文件是card/目录下的block.c,queue.c向它提供了几个函数来操作队列。
区块层调用core/目录下的core.c、sysfs.c提供的接口来识别存储卡的分区、读写存储卡等功能。
2)核心层
核心层代码在core/目录下,它封装了MMC/SD命令,实现MMC/SD协议,它调用主机控制器层的接口完成存储卡的识别、设置、读写等。
可知,开发板上MMC/SD接口连线是:nCD接到外部中断引脚EINT16,接上或拔下存储卡时会触发中断。
移植MMC/SD/SDIO控制器驱动程序分为3步骤:打补丁、增加MMC/SD平台设备、修改主机控制器驱动程序以指定上图中的nCD中断。
1)给内核打补丁
2)增加MMC/SD平台设备