基于ARM和SD卡嵌入式文件系统研究与设计.docVIP

基于ARM和SD卡嵌入式文件系统研究与设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARM和SD卡嵌入式文件系统研究与设计

基于ARM和SD卡嵌入式文件系统研究与设计   引言      随着嵌入式处理器计算机能力的不断提高,32位MPU已成为嵌入式系统应用的主流。本文针对汽车性能记录仪研发中遇到的数据存储和数据交换的问题,在ARM9嵌入式处理器和μC/OS-II操作系统基础上采用SD卡设计开发了一种嵌入式文件系统,该系统具有支持多操作系统、易于移植和存储速度快的特点。      接口电路设计      硬件平台的控制核心采用三星公司16/32位RISC控制器S3C2410A,它采用ARM920T内核,主频可达203MHz,内部具有丰富的系统外围设备控制器,包括SD卡控制器。SD卡支持SPI和BUS两种接口模式,本系统采用BUS接口模式。   SD卡的DATO-DAT3、CLK(时钟线)和CMD(命令线)分别连接到$3C2410A的GPE7~GPE10、GPE5和GPFA引脚。SD卡支持单线和4线读/写,前者通过DAT0进行数据串行传输,DATI作为中断口,最高传输速率25Mbps;后者通过DATO-DAT3分别进行串行数据传输,最高传输速率100Mbps。      SD卡嵌入式文件系统设计与实现      整个嵌入式文件系统结构如图2所示,共分3层,包括SD卡驱动层、FATl6文件系统层和应用层。其中,SD卡驱动层又分为4层:硬件抽象层、SD卡工具函数层、SD卡命令层和SD卡操作函数接口层。SD卡嵌入式文件系统是基于SD卡需要按整块进行存储的特性建立起来的,以块为单位对SD卡进行管理,这样既便于管理,也可以屏蔽硬件的操作细节,为应用层开发提供了统一标准的API调用。为了便于与上位机进行数据交换,采用了Windows和Linux都支持的FAT16文件系统。下面具体说明各层的实现。      SD卡驱动层   驱动层是面向主控器$3C2410A和SD卡,完成SD卡控制器中相应寄存器的设置和向SD卡发送命令实现SD卡初始化、读、写等操作,目的是为其上层提供相应的功能函数,屏蔽直接对硬件的具体操作。      硬件抽象层   硬件抽象层主要完成对S3C2410A中SD卡控制器相应寄存器的设置,将对SD卡直接控制抽象为对SD卡控制器的操作。      SD卡工具函数层   本层实现CRC校验,所有的命令(command)和响应(Response,R3响应除外)使用CRC7校验,生成多项式为:G(x)=x7+x3+l;数据校验采用CRC16,生成多项式为:G(x)=x16+x12+x5+1。CRC7校验采用直接编程计算的方法,CRC16采用查G(x)=x16+x12+x5+1余式表的方法。      SD卡命令层   本层宏定义了各种命令和响应,实现了向SD卡发送各种命令的函数SD_SendCmd( )和读写SD卡内部寄存器等功能。SD总线上以位流的方式传送命令和数据,分别以0和1表示起始和停止。   Command发起每个操作,通过CMD线串行传输的。SD卡标准定义了两种命令:ACMD(Application specific command)和GEN-CMD(General command),后者可直接发送,所有的ACMD命令在发送前必须先发送CMD 55命令,Response是卡对命令的响应,包括R1、R1b、R2、R3四种类型,通过CMD线传输。Data block通过DAT数据线传输,在写操作过程中,由DAT0线传输busy信号。      SD卡操作函数接口层   本层目的是为FATl6文件系统层提供所需的SD卡操作函数,主要包括:SD_Initialize( )一初始化SD卡;SD_GetCardInfo( )一获得SD卡信息;SD_CalTimeout( )一计算读,写/擦超时时间;SD_ReadBlock( )一读单块数据;SD_ReadMultiBlock( )一读多个块数据;SD_WriteBlock( )一向SD卡中写入一个块;SD_write MultiBlock( )向SD卡写入多块数据;SD_EraseBlock( )擦除SD卡中的块。以单块数据写为例说明,当SD卡接收到单块写命令CMD24后,卡将发送给主机一个应答令牌,并且等待主机发送一个发送数据块来,当应答R1为0时,说明可以发送数据,块大小设置为512字节,卡对每个数据块返回1字节长的应答令牌,当其低5位为00101时,数据块被正确写入SD卡。数据块之后附有CRC校验,如果校验失败,则所传输的数据会被丢掉,数据传输被终止。      FATl6文件系统层      文件系统层向应用层提供了对文件和目录进行操作的API接口函数。要使写入SD卡的数据在装有Windows或Linux操作系统的上位机中得到正确访

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档