SD 卡 linux 驱动分析

作者: 刘洪涛,华清远见嵌入式培训中心高级讲师,ARM公司授权ATC讲师

 我在讲嵌入式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及数据传输的实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值