Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101235
  • 博文数量: 22
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 401
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-15 17:37
文章分类
文章存档

2009年(21)

2008年(1)

我的朋友

分类: LINUX

2009-05-11 10:15:51

    了解SD卡的工作原理,首先需要了解SD卡协议,在网上可以轻松的下载到。在了解协议后,就可以看看下面的一些开发思路了。

   首先看下脱离操作系统如何在S3C2410上实现SD卡的读写。过程可以分为3个大的步骤:初始化sd卡、写sd卡、读sd卡;下面的过程是我通过realview-MDK环境测试过的。

一、初始化sd卡

初始化sd卡

二、写sd卡

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

(1)POLL写

POLL写

(2)中断写

中断写

(3)DMA写

DMA写

三、读sd卡

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

(1)POLL读

POLL读

(2)中断读

中断读

(3)DMA读

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卡

二、SD卡块设备注册过程

DMA写

三、request及数据传输的实现

DMA读

阅读(1186) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~