第一次写这方面的文章,也不怎么会写吧!之前一直在学习uboot代码,其实提到设备驱动就不得不提到内核机制,所以学习驱动必须学习内核机制,希望和所有初学者一起学习、交流!
我主要从事eMMC/SD卡设备驱动的开发,提起SD卡大家都知道就是手机里面的那张小存储卡,而emmc可能就不太清楚了,其实用过手机或平板的都知道,厂商经常会说自己的ROM 16G、32G等,其实这个ROM已经不是当初的概念了,现在这个ROM是用nandflash或者emmc代替,emmc比nandflash的传输速度更快,底层的开发更加方便,不用考虑nandflash的坏块处理。所以大家买手机或者平板是可关注下ROM用的是什么芯片。
SD卡和emmc的接口和传输协议都类似,所以它们代码都放在/common/drive/mmc/文件夹下,按照驱动的架构分为三层分别存放在三个文件夹下面/mmc/card,/mmc/core,/mmc/host 三个文件夹下,接下来我主要分析下emmc/sd卡的驱动框架结构,具体代码有待继续学习。
emmc/sd都属于块设备驱动,而块设备驱动是内核驱动中最难的一种,下面是一个典型的块设备驱动的架构,它包括了应用层、内核驱动、硬件三层。
按照这个框架来实现emmc/sd卡的驱动模型,主要是实现其中的内核空间和硬件层。