基于S3C2410的SD卡linux驱动工作原理

想了解SD卡的工作原理,首先需要了解的就是SD卡协议了,这个在网上可以轻松的下载到。在了解协议后,就可以看看下面的一些开发思路了。  
  首先看下脱离操作系统如何在S3C2410上实现SD卡的读写。过程可以分为3个大的步骤:初始化sd卡、写sd卡、读sd卡;下面的过程是我通过realview-MDK环境测试过的。

  一、初始化sd卡

基于S3C2410的SD卡linux驱动工作原理_第1张图片



  二、写sd卡

  写sd卡可以分为3种方式:POLL、中断、DMA

  (1) POLL写

基于S3C2410的SD卡linux驱动工作原理_第2张图片



  (2)中断写

基于S3C2410的SD卡linux驱动工作原理_第3张图片



  (3)DMA写

基于S3C2410的SD卡linux驱动工作原理_第4张图片



  三、读sd卡

  读sd卡也可分为3中方式:POLL、中断、DMA

  (1) POLL读

基于S3C2410的SD卡linux驱动工作原理_第5张图片



  (2)中断读

基于S3C2410的SD卡linux驱动工作原理_第6张图片



  (3) DMA读

基于S3C2410的SD卡linux驱动工作原理_第7张图片


        了解了脱离操作系统的工作原理后,现在可以思考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代码初始化过程

基于S3C2410的SD卡linux驱动工作原理_第8张图片



  二、SD卡块设备注册过程

基于S3C2410的SD卡linux驱动工作原理_第9张图片



  三、request及数据传输的实现
基于S3C2410的SD卡linux驱动工作原理_第10张图片

你可能感兴趣的:(基于S3C2410的SD卡linux驱动工作原理)