文档库 最新最全的文档下载
当前位置:文档库 › DSP之SD卡与文件系统彻底研究

DSP之SD卡与文件系统彻底研究

DSP之SD卡与文件系统彻底研究

DSP之SD卡与文件系统彻底研究(V1.0)

一、SD卡分类

BY红尘有约 ahong007@https://www.wendangku.net/doc/b73264594.html,

SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。

对于C55X系列的DSP,支持SD卡和MMC卡,不过分类太多。初学者在进行读写SD卡读写的时候,如果不能分清类别,读写C55X不能兼容的标准,怎么调试也分不清楚是硬件或者是软件的问题,故此有必要先搞清楚一些基本知识,红尘再此就犯过常识性的错误。

SD卡标准

SD(Secure Digital)卡有两个标准:

1,标准SD1.1版,采用4bit数据带宽,工作频率25Mhz,100Mbps理论数据传输率,设计最大容量2GB(部分厂商用特别技术使SD1.1版容量达到4GB)。

2,标准SD2.0版,于2006年7月发布,新标准提高了传输速率和容量,并支持FAT32。采用4bit数据带宽,工作频率50Mhz,200Mbps理论数据传输率,设计最大容量32GB。

采用标准1的卡有:

SD,miniSD,microSD

采用标准2的卡有:

SDHC,miniSDHC,microSDHC

SD卡,24mm x 32mm x 2.1mm

DSP之SD卡与文件系统彻底研究

miniSD卡,21.5mm x 20.0mm x 1.4mm

micioSD卡(TF卡),15mm x 11mm x 1mm

SDHC卡,和SD一样大

SDHC是英文‘'High Capacity SD Memory Card”的缩写即“高容量SD存储卡”。2006年5月SD协会发布了最新版的SD2.0的系统规范,在其中规定SDHC 是符合新的规范、且容量大于2GB小于等于32GB的SD卡。

SDHC主要特征在于最高支持32GB。同时传输速度被重新定义为Class2(2MB/sec)、Class4(4MB/sec)、 Classb(bMB/sec)等级别、高速的SD卡可以支持高分辨视频录制的实时存储。

miniSDHC卡,和miniSD一样大

microSDHC,和micioSD一样大

MMC(MultiMediaCard)有两个标准:

1,标准MMC,1bit数据带宽,工作频率0-20Mbps,7针脚

2,2,标准MMC4.0版,4bit或8bit数据带宽,工作频率最高52MHz

3,采用标准1的卡有:

4,MMC,RS-MMC

采用标准2的卡有:

MMCplus,MMCmobile,MMCmicro

MMC卡,32mm*24mm*1.4mm

RS-MMC卡,24mm*18mm*1.4mm

MMCplus,和MMC一样大

MMCmobile,和RS-MMC一样大

MMCmicro,14mm*12mm*1.1mm

最重要的是,TI的C55X系列的DSP只支持SD1.1版的SD和标准MMC,所以有朋友在调试SD卡的时候请注意,自己卡的型号是否满足要求,本人红尘曾经在这方面耽误时间。

DSP之SD卡与文件系统彻底研究

SD卡与MMC卡的区别

外形尺寸: 从两种卡的正面看过去,除了SD卡侧面的的写保护开关,两者的外观是一样的(都是24mm x 32mm)。因为这个原因,这两种闪存卡标准常常被混淆。首先,两者的厚度是不同的,MMC卡1.4mm而SD卡厚2.1mm。除了厚度,还有其他物理上的区别,包括管脚的配置(在卡的背面)以及SD卡的写保护开关。

兼容性: 因为MMC卡比SD卡稍微薄一些,所以通常您可以说MMC卡兼容于SD卡兼容设备。而由MMC插槽物理结构上(较薄)的原因,SD卡常常无法适用于MMC设备。

内容保护: SD包含一种内容保护技术,叫做CPRM(Content Protection for Recordable Media,可记录媒体的内容保护)。SD includes a content protection technology called CPRM (Content Protection for Recordable Media). 大致而言,这是为了防止人们通过闪存卡把一些受到版权保护的数据散布给他人。但是,这种技术很少应用于主机设备中,因此也很少被内容提供商或用户所使用。

写保护: 正如上面提到的,SD卡有一个写保护开关。如果您将此开关设置在锁定位置,便携式设备将不能向卡中写入或擦除数据。

速度: SD卡运行在25MHz的时钟频率上,数据带宽是4位,因此最大传输速率是12.5MB/s(12.5兆字节每秒)。 MMC卡时钟频率是20MHz,1位数据带宽,所以最大传输速率为2.5MB/s。在2005年,新规范定义的下一代闪存卡将闪亮登场,提供了更高的传输速率。MMC的继任者MMCplus提供高达52MB/s 的最大传输率,而SD 1.1标准也达到了50MB/s。需要注意的是,这只是理论上的最大值,实际的传输率取决于闪存卡的元件和品质。

RS-MMC:现在新出的RS-MMC都是双电压的,双电压指的是可以支持工作在1.8/3.3V双电压下,数码设置内存扩展接口电压有的是3.3V的,为了加大手机电池使用时间,现在的手机的MMC内存扩展接口电压设计成1.8V的低电压。支持双电压的MMC内存适用面较广!

RS-MMC卡

DSP之SD卡与文件系统彻底研究

特点:尺寸、重量仅为MMC卡的一半。

RS-MMC标准最初由MMCA(多媒体卡协会)于2002年11月正式对外发布,华腾微电子于今年3月率先向业界展示了容量为256mb的RS-MMC卡。RS-MMC的外形尺寸仅为普通MMC卡的一半,重量只有1克,然而却继承和沿袭了MMC卡所有的优势和性能特征。作为一项存储卡的技术延伸,它将海量存储及小巧的外形尺寸融为一体,基本解决了困扰手机开发者已久的存储卡所占空间的问题。由于它的出现,未来的手机外形设计有可能趋于小巧。可以支持工作在1.8/3.3V双电压下。

mmc卡

MMC(MultiMediaCard,多媒体存储卡)由SanDisk和Siemens公司在1997年发起,与传统的移动存储卡相比,其最明显的外在特征是尺寸更加微缩——只有普通的邮票大小(是CF卡尺寸的1/5左右)。这使其成为世界上最小的半导体移动存储卡,它对于越来越追求便携性的各类手持设备形成强有力的支持。MMC 在设计之初是瞄准手机和寻呼机市场,之后因其小尺寸等独特优势而迅速被引进更多的应用领域,如数码相机、PDA、MP3播放器、笔记本电脑、便携式游戏机、数码摄像机乃至手持式GPS等。

1GB,SD卡图:

1GB,MMC卡图:

DSP之SD卡与文件系统彻底研究

1GB,RS-MMC卡图:

免责声明:

本教程内容可能收录来源于网络的内容,由于许多内容在网络流传太广,原创信息无法确认,所以无法著名作者信息。如有某些内容侵犯您的权益,请告知。

本教程是红尘花费无数心血所做,请在全文转载或者使用其它用途的时候注明来源出处,谢谢。

另外由于红尘知识有限,可能造成写的某些信息不准确,欢迎您提出宝贵的意见。请使用本教程的时候自己做准确性判断,由此造成后果自负。

DSP之SD卡与文件系统彻底研究

二、C5509读写SD卡

BY红尘有约 ahong007@https://www.wendangku.net/doc/b73264594.html,

SD卡电气特性

如图一所示,显示SD卡的接口与形状。SD卡标准接口包含9根引脚,分别是VDD,VSS0-1,DATA0-3,SDCLK和SDCMD。对于SD卡的其它功能,如SD 卡写保护,SD卡电源使能及SD卡检测等,SD卡标准并没有制定,这要求SD 主控制器的设计者根据各自的需求来设计。

图一SD卡物理特性

图二 SD卡引脚控制功能

DSP之SD卡与文件系统彻底研究

DSP之SD卡与文件系统彻底研究

CLK:时钟信号;

CMD:双向命令和响应信号;

DAT0-3:双向数据信号;

VDD,VSS:电源和地信号;

SD模式下允许有一个主机, 多个从机(即多个卡), 主机可以给从机分别地址。主机发命令,有些命令是发送给指定的从机,有些命令可以以广播形式发送。SD模式下可以选择总线宽度, 即选用几根DAT信号线, 可以在主机初始化后设置。

SD卡系统包括SD主控制器,总线和SD设备。SD总线上有一个主设备和多个从设备,星形总线接口。SD卡系统包括两种可选的通信协议,SD和SPI (Serial Peripheral Interface,串行外部设备接口)。应用程序可以选择其中的一种。如图2和3所示为SD卡的SD总线和SPI总线的拓扑结构连接。

图三SD总线结构

DSP之SD卡与文件系统彻底研究

图四SD总线结构

C5509 MMC/SD控制器

本教程研究的是在TMS320VC5509即根据红尘有约的CTH5509开发板研究的读写SD卡文件系统,TMS320VC5509内部具有MMC/SD控制器,初学者不必掌握十分复杂的SD卡协议,先使用控制器读写SD卡,建立一个感性的印象,然后逐步掌握SD卡协议,先完成对它的操作,再去研究内部结构,由外而内。当掌握这些,对于普通I/O模拟SD卡协议操作,也不是一件多么难的事情。

在C5509片内外设中,MMC/SD控制器和McBSP引脚是兼容的,必须在EBSR寄存器中选择是MMC/SD模式还是McBSP。C5509具有三个McBSP,但只有McBSP1和McBSP2具有MMC/SD功能,也就是C5509片内具有两个MMC/SD 控制器。

DSP之SD卡与文件系统彻底研究

图五SD模式结构框图

图六 C5509MCBSP共用引脚

图七 C5509MCBSP共用引脚

图八 C5509MCBSP引脚说明

对于SD卡操作,以MMC/SD 1为例,使用寄存器如下:#define MMCFCLK (volatile ioport unsigned int *)0x4C00

#define MMCCTL (volatile ioport unsigned int *)0x4C01

#define MMCCLK (volatile ioport unsigned int *)0x4C02

#define MMCST0 (volatile ioport unsigned int *)0x4C03

#define MMCST1 (volatile ioport unsigned int *)0x4C04

DSP之SD卡与文件系统彻底研究

#define MMCIE (volatile ioport unsigned int *)0x4C05 #define MMCTOR (volatile ioport unsigned int *)0x4C06 #define MMCTOD (volatile ioport unsigned int *)0x4C07 #define MMCBLEN (volatile ioport unsigned int *)0x4C08 #define MMCNBLK (volatile ioport unsigned int *)0x4C09 #define MMCNBLC (volatile ioport unsigned int *)0x4C0A #define MMCDRR (volatile ioport unsigned int *)0x4C0B #define MMCDXR (volatile ioport unsigned int *)0x4C0C #define MMCCMD (volatile ioport unsigned int *)0x4C0D #define MMCARGL (volatile ioport unsigned int *)0x4C0E #define MMCARGH (volatile ioport unsigned int *)0x4C0F #define MMCRSP0 (volatile ioport unsigned int *)0x4C10 #define MMCRSP1 (volatile ioport unsigned int *)0x4C11 #define MMCRSP2 (volatile ioport unsigned int *)0x4C12 #define MMCRSP3 (volatile ioport unsigned int *)0x4C13 #define MMCRSP4 (volatile ioport unsigned int *)0x4C14 #define MMCRSP5 (volatile ioport unsigned int *)0x4C15 #define MMCRSP6 (volatile ioport unsigned int *)0x4C16 #define MMCRSP7 (volatile ioport unsigned int *)0x4C17 #define MMCDRSP (volatile ioport unsigned int *)0x4C18 #define MMCCIDX (volatile ioport unsigned int *)0x4C1A

DSP 之SD 卡与文件系统彻底研究

表一 MMC 控制器关键设置 DMAEN 0 禁止DMA 1 使能DMA

DATEG 0 0 禁止DATA3边缘检测

0 1 DATA3上升沿检测

1 0 DATA3下降沿检测

1 1 DATA3上升和下降沿

都进行边缘检测

WIDTH 0 1位数据宽度

0 4位数据宽度

CMDRST 0 MMC 控制器的命令使能

1 MMC 控制器的命令复位

DATRST 0 MMC 控制器的数据使能

1 MMC 控制器的数据复位

表二 MMCFCLK 寄存器

位 字段 数值 说明

8 IDLEEN 0 1 MMC 控制器不能被

停止,如果PERI=1,

则IDLE 命令后MMC

控制器进入静止模

7~0 FDIV 0~255 工作时钟分频系数

DSP 之SD 卡与文件系统彻底研究

表三 MMCCLK 寄存器 位 字段 数值 说明

4 CLKEN 0 1 CLK 信号被禁止,该引脚的信号为低CLK 信号使能

3~0

CDIV 0~15 存储时钟分频系数

C5509控制器的初始化主要过程是:

1 复位MMCCTL 的CMDRST 和DATRST 。通过DMAEN 来使能或禁止

DMA 事件,设置SPIEN 位禁止SPI 模式,清除DATAEG 位禁止DATA3的边缘

检测。

2 设置MMCFCLK 寄存器的FDIV 分频系数,MMCCLK 寄存器的CDIV 分

频系数。

3 设置MMC 控制器的使能IDLE 能力。

4 置MMCCTL 的CMDRST 和DATRST 位1,使脱离复位状态。

SD 卡初始化操作信息:

MMC_SetupNative Init = {

0, /* Disable DMA for data read/write */

0, /* Set level of edge detection for DAT3 pin */

0, /* Determines if MMC goes IDLE during IDLE instr */

1, /* Memory clk reflected on CLK Pin */

7, /* CPU CLK to MMC function clk divide down */

5, /* MMC function clk to memory clk divide down */

0, /* No. memory clks to wait before response timeout */

DSP之SD卡与文件系统彻底研究

0, /* No. memory clks to wait before data timeout */

512, /* Block Length must be same as CSD */

};

C5509的SD卡读写操作过程是:

1 发送命令SEND_GO_IDLE,使所有卡进入静止状态。

2 发送SD卡的工作电压,即工作条件,获取所有SD卡的信息,讲不在工作电压范围内的卡设置为不可用状态。重复3,4,5步骤直到识别所有的SD卡。

3 获取SD卡的ID信息。

4 分配SD卡的相对位置。

5 选择要操作的SD卡。

6 向SD卡发送或者读取512字节内容。

7 关闭SD卡控制器。

SD卡读写操作代码:

mmc1 = MMC_open(MMC_DEV1);

MMC_setupNative(mmc1,&Init);

MMC_sendGoIdle(mmc1);

for (count=0;count<4016;count++)

cardtype = MMC_sendOpCond(mmc1,0x00100000);

if(cardtype==SD_CARD)

{

cid = &cardid;

SD_sendAllCID(mmc1,cid); // get the CID structure for all cards.

card = &cardalloc;

rca = SD_sendRca(mmc1,card);

}

/* Select the card to transfer data to/from. This step puts the card into the *

* transfer state where it is ready to read/write data */ retVal = MMC_selectCard(mmc1,card);

DSP之SD卡与文件系统彻底研究

MMC_read(mmc1,addr,buff,512);

for (count = 0; count <= 6000; ++count)

MMC_close(mmc1);

具体源程序以后在https://www.wendangku.net/doc/b73264594.html,论坛网页上公布。

由于时间仓促(白天上班,晚上加班加点完成),没有对SD卡相关的所有内容进行介绍,而且介绍内容比较简略,希望能对初学者起到启发的作用。学习DSP技术关键在于时间,在此笔者向读者推荐CTH5509开发板,具有三大主要功能:语音信号采集与回放、SD卡与文件系统,TCP/IP网络通讯,并且所有引脚扩展,片上外设RTC,TIME等详尽的程序说明,DSP FFT等算法、BIOS应用等等。而且所有内容对初学者公开代码,电路SCH格式,并且响应的教程比较详细,本人保证购买CTH5509开发板的用于,享受完全免费并且内容详尽的技术服务支持—当然上班时间除外,呵呵。先做个广告,关键还是看效果不是,敬请期待CTH5509开发板,初学者的最好学习板,性价比高。

在此感谢老婆zhenzhen的支持,两地相隔千里不能经常见面,但心却是彼此相连,让时间快点过去,让我们能天天在一起,不要再折磨我了,上帝啊、阿弥陀佛、阿门……

免责声明:

本教程内容可能收录来源于网络的内容,由于许多内容在网络流传太广,原创信息无法确认,所以无法著名作者信息。如有某些内容侵犯您的权益,请告知。

本教程是红尘花费无数心血所做,请在全文转载或者使用其它用途的时候注明来源出处,谢谢。

另外由于红尘知识有限,可能造成写的某些信息不准确,欢迎您提出宝贵的意见。请使用本教程的时候自己做准确性判断,由此造成后果自负。

DSP之SD卡与文件系统彻底研究

使用WinHex15.0工具查看写入的SD卡中第一扇区(512字节)内容,数据具体含义在以后的章节中会讲述,敬请期待。

DSP之SD卡与文件系统彻底研究

三、解读FAT32文件系统

BY红尘有约 ahong007@https://www.wendangku.net/doc/b73264594.html,

FAT的全称是File Allocation Table(文件分配表系统),FAT文件系统1982年开始应用于MS- DOS中。FAT文件系统主要的优点是它可以被多种操作系统访问,如MS- DOS , Windows所有系列和OS/2等。这一文件系统在使用时遵循8.3命名规则(即文件名最多为8个护符,扩展名为3个护符)。同时FAT文件系统无法支持系统高级容错特性,不具有内部安个特性等。FAT32是FAT16文件系统的派生,比FAT16支持更小的簇和更大的分区,这就使得FAT32分区的空间分配更有效率。

为了实现C5509对SD卡上的FAT32文件系统的读写,我们需要了解文件系统的一些常识。

DBR(DOS BOOT RECORD)

DSP之SD卡与文件系统彻底研究

图一FAT32文件系统结构图

完成的FAT32文件系统包括DBR(DOS BOOT RECORD )操作系统引导记录区),FAT1(文件分配表1),FAT2(文件分配表2),根目录和数据,剩余扇区。

为了准确地认识FAT32文件系统,先先格式化SD卡,建立一个文件,CTH.txt,输入实验数据并拷贝到SD卡中,把SD卡插入读卡器中并插入PC的USB口,使用winhex工具查看插入的SD卡空间。

图二格式化与新建文件

首先看SD卡的第一扇区(一个扇区512字节),也就是DBR。

DBR通常占用分区的第0扇区共512个字节(特殊情况也要占用其它保留扇区)。在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOS Parameter Block),扩展BPB,OS引导程序,结束标志几部分组成。以FAT32为例说明分区DBR各字节的含义。

DSP之SD卡与文件系统彻底研究

图三SD卡第一扇区512字节内容表一 FAT32上DBR各地方划分

DSP之SD卡与文件系统彻底研究

图四 WinHex32对DBR各部分的解释

相关文档