我在讲嵌入式Linux驱动开发班的时分,发现不少学员对SD卡驱动这块比较感兴趣,课下来找我讨论。而在许多技术论坛,也有不少人问这方面的问题,所以就想写一下这方面的内容,期望对咱们的学习能有所协助。想了解SD卡的作业原理,首要需求了解的便是SD卡协议了,这个在网上能够轻松的下载到。在了解协议后,就能够看看下面的一些开发思路了。
首要看下脱离操作系统如安在S3C2410上完成SD卡的读写。进程能够分为3个大的进程:初始化sd卡、写sd卡、读sd卡;下面的进程是我经过realview-MDK环境测试过的。
一、初始化sd卡
二、写sd卡
写sd卡能够分为3种方法:POLL、中止、DMA
(1) POLL写
(2)中止写
(3)DMA写
三、读sd卡
读sd卡也可分为3中方法:POLL、中止、DMA
(1) POLL读
(2)中止读
\
(3) DMA读
了解了脱离操作系统的作业原理后,现在能够考虑linux是怎么办理办理SD卡的了。Linux中SD驱动能够分为3层:块设备层(mmc_block.c ,mmc_sysfs.c,mmc_queue.c)、mmc协议层(mmc.c)、sd驱动层(s3c2410_sdi.c)。
下面从以下几个方面了解驱动:
1、s3c2410_sdi.c代码初始化进程;
2、SD卡块设备注册进程;
3、request及数据传输的完成。
下面介绍的进程参阅的代码是咱们华清远见培训中心在教育中运用的一套代码,内核版别是2.6.8,其它版别进程相似。
一、s3c2410_sdi.c代码初始化进程
二、SD卡块设备注册进程
三、request及数据传输的完成