SD卡驱动开发随笔(1)

原创 2006年05月30日 16:46:00

 

前不久刚写完SD卡驱动,最后的运行和读写文件效果自己也比较满意以下是性能测试结果

---------------------------------------------------------------------------------------------------------------

File Size is 25165824

Block:00000128Byte,Cost:00006655ms,Average:3781KByte/sec

Block:00001024Byte,Cost:00005752ms,Average:4375KByte/sec

Block:00016384Byte,Cost:00003638ms,Average:6917KByte/sec

Block:00065536Byte,Cost:00003169ms,Average:7941KByte/sec

Block:00262144Byte,Cost:00003041ms,Average:8275KByte/sec

Block:01048576Byte,Cost:00002999ms,Average:8391KByte/sec

Block:02097152Byte,Cost:00003012ms,Average:8355KByte/sec

---------------------------------------------------------------------------------------------------------------

现就把自己所得所想做个清理。

 

按照SD卡的协议的描述可分为2种总线的接口

1.  SD BUS

物理层定义:(具体连接图不在贴出)下面大致介绍下一些数据线的定义

D0-D3    数据传送

CMD     进行CMD Respons

CLK      大家最熟悉的HOST时钟信号线了

VDD VSS  电源和地

2.  SPI BUS 一般用SPI协议的接口来做

物理层定义:

CLK       HOST时钟信号线了

DATAIN    HOST-àSD Card数据信号线

DATAOUT  SD Card àHOST数据信号线

除了以上述数据线外SPI BUS多了CS片选(注意:如果是以SPI方式来写SD卡驱动要注意这点)

通常SD  MMC卡内部会有一些Register

一般有下面几种

1.  CID  卡的识别号

2.  RCA  卡的相对地址

3.  DSR  可选寄存器

4.  CSD  描述操作该卡的规则(时序规则)。包括,数据读/写时间,工作电流,扇区大小,文件系统格式,卡所使用的命令集,写保护等信息。通过该寄存器可以获取卡的容量,访问方式。

5.  SCR  卡的配置寄存器

6.  OCR  卡运行条件寄存器 描述卡的工作电压范围 ,它还还包含一个上电状态标记位用于描述是否完成卡上电过程 (驱动对卡在作初试化动作的时候特别要注意这点)

 

因为我本人是用SD BUS 方式来驱动SD卡所以主要将过程做简单介绍。

 

首先谈下SD协议定义的一些游戏规则:

SD总线的访问状态有3

1 COMMOND:启动操作的会话,由HostCMD连线传送到卡类设备

2 Response:响应CMD的会话,由卡类设备由CMD连线传送至Host

3 Data:在Host与卡设备间传送数据的双向数据流,物理链路为Data0-Data3

注意:每一个完整的操作都需要一个CMD来启动,根据不同的CMD 有相应的DataResponse.

SD可以一主对多从,也可以P2P 所以大家弄清楚P2P的规律,其他的多卡广播也自然明了

按照协议的描述对于P2P的情形是否有数据传输来分4

1.无响应的广播命令-BC

2.响应型的广播命令-BCR

3.无数据传输的点对点命令(AC

4.带数据传输的点对点命令(ADTC

这些会话都有一定的时序。

 

(未写完)待续.......

Linux SD卡驱动开发(一) —— SD 相关基础概念

一.SD/MMC卡基础概念 1.1.什么是MMC卡       MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月01日 21:18
  • 3176

Linux SD卡驱动开发(二) —— SD 卡驱动分析HOST篇

回顾一下前面的知识,MMC 子系统范围三个部分: HOST 部分是针对不同主机的驱动程序,这一部是驱动程序工程师需要根据自己的特点平台来完成的。 CORE 部分: 这是整个MMC 的核心存,这部分完成...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月01日 22:19
  • 5744

Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作

前面对SD卡控制器有了一个基本的介绍。其实SD控制器层更过的意义是为core层提供一种操作SD卡硬件的一种方法,当然不同的控制器对硬件控制的方法不尽相同,但是他们最终都能像core层提交一个统一的封装...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月02日 10:18
  • 2437

linux设备驱动开发详解SD_部分1

  • 2009年12月30日 11:24
  • 12.07MB
  • 下载

Linux SD/MMC卡驱动开发

 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 共享资源,欢迎转载...
  • qigaohua
  • qigaohua
  • 2016年06月14日 18:37
  • 247

WinCE下SD卡驱动开发

WinCE 5.0下面SD卡驱动的开发。这是我做的第一个项目,当时做这个项目花费了相当的时间和精力,搞的我精疲力尽。几乎可以说当时对WinCE一点都不懂。也不知道从何处下手,就东看西看。东改西改,改的...
  • jangel_lee
  • jangel_lee
  • 2013年10月15日 17:26
  • 676

SD卡驱动开发心得体会

http://blog.csdn.net/edsam49/article/details/5893068 最近在负责SD卡驱动的开发移植工作,支持vfat文件系统,现在谈一下开发心得吧! ...
  • zhanzheng520
  • zhanzheng520
  • 2014年01月07日 16:29
  • 475

wince下SD卡驱动开发

WinCE 5.0下面SD卡驱动的开发。这是我做的第一个项目,当时做这个项目花费了相当的时间和精力,搞的我精疲力尽。几乎可以说当时对WinCE一点都不懂。也不知道从何处下手,就东看西看。东改西改,改的...
  • zhubin0613
  • zhubin0613
  • 2014年02月26日 20:00
  • 550

Linux SD卡驱动开发(一) —— SD 相关基础概念

一.SD/MMC卡基础概念 1.1.什么是MMC卡       MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),...
  • zqixiao_09
  • zqixiao_09
  • 2016年04月01日 21:18
  • 3176

【SD卡】关于DJYOS下SD卡驱动开发详解

关于DJYOS下SD卡驱动开发详解                                                                              王建忠 ...
  • wangjianzhongfj
  • wangjianzhongfj
  • 2011年09月27日 13:01
  • 1860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SD卡驱动开发随笔(1)
举报原因:
原因补充:

(最多只允许输入30个字)