DDUP-Day Day Upgaryybl.blog.chinaunix.net
garyybl
全部博文(674)
链表(0)
kfifo(3)
C语言(10)
版本管理(16)
SSH(2)
系统移植(4)
驱动移植(3)
流媒体(4)
WebServer(3)
DHCP(3)
软件移植(9)
Android移植(10)
调试(1)
GPU(2)
FDT(0)
MIPI(2)
smd(1)
hdmi(3)
PMIC(1)
DDR(0)
DMA(6)
3G(10)
电源管理(30)
Bluetooth(4)
Input(2)
WIFI(34)
Flash(9)
Uart(7)
SPI(0)
I2C(2)
Audio(11)
SD(14)
LCD(8)
Camera(2)
TouchScreen(19)
USB(28)
启动顺序(4)
NDK(2)
Audio(6)
Android开发(34)
Android应用(18)
Andord驱动(18)
深入理解LINUX内(2)
By 张斌(8)
By 卿子(16)
内核设计与实现(0)
LDD_Tekkaman Nin(21)
LDD(0)
通知链(4)
Kbuild(1)
系统调用(2)
参数传递(3)
并发&同步(1)
内存管理(19)
内核启动(44)
中断机制(17)
Timer&Clock(17)
2013年(34)
2012年(146)
2011年(197)
2010年(297)
houyizi3
hzbingyu
梦来是缘
linuxDOS
chen_chu
gongping
pingchan
athxy
yinyongq
gordonzh
junjiep
shiyiLiu
cynthia
丸喵喵
浪花小雨
格伯纳
Bsolar
jj339090
分类: LINUX
2011-03-29 22:38:52
我在讲嵌入式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及数据传输的实现
上一篇:存储器标准全面分析与介绍SD卡、CF卡等
下一篇:Linux MMC/SD/SDIO体系结构
登录 注册