新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM和SD卡的嵌入式文件系统研究与设计

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

作者:时间:2011-05-25来源:网络收藏

摘 要:本文针对汽车性能检测仪对数据的存储和交换要求,在S3C2410A处理器和mCOS-II操作基础上采用开发了一种。文章首先介绍卡的接口电路,接着给出实现本的3层结构,并且对各层的具体实现进行了剖析。

本文引用地址:http://www.eepw.com.cn/article/150709.htm

关键词:系统;卡;FAT16 ;S3C2410A

引言

随着嵌入式处理器计算机能力的不断提高,32位MPU已成为嵌入式系统应用的主流。本文针对汽车性能记录仪研发中遇到的数据存储和数据交换的问题,在9嵌入式处理器和mC/OS-II操作系统基础上采用SD卡开发了一种嵌入式文件系统,该系统具有支持多操作系统、易于移植和存储速度快的特点。

接口电路

硬件平台的控制核心采用三星公司16/32位RISC控制器S3C2410A,它采用920T内核,主频可达203MHz,内部具有丰富的系统外围设备控制器,包括SD卡控制器。SD卡支持SPI和BUS两种接口模式,本系统采用BUS接口模式。S3C2410A与SD卡读写器的接口电路如图1所示。

SD卡的DAT0~DAT3、CLK(时钟线)和CMD(命令线)分别连接到S3C2410A的 GPE7~GPE10、GPE5和GPE4引脚。SD卡支持单线和4线读/写,前者通过DAT0进行数据串行传输,DAT1作为中断口,最高传输速率25Mbps;后者通过DAT0~DAT3分别进行串行数据传输,最高传输速率100Mbps。

SD卡嵌入式

文件系统设计与实现

整个嵌入式文件系统结构如图2所示,共分3层,包括SD卡驱动层、FAT16文件系统层和应用层。其中,SD卡驱动层又分为4层:硬件抽象层、SD卡工具函数层、SD卡命令层和SD卡操作函数接口层。SD卡嵌入式文件系统是SD卡需要按整块进行存储的特性建立起来的,以块为单位对SD卡进行管理,这样既便于管理,也可以屏蔽硬件的操作细节,为应用层开发提供了统一标准的API调用。为了便于与上位机进行数据交换,采用了Windows和Linux都支持的FAT16文件系统。下面具体说明各层的实现。

SD卡驱动层

驱动层是面向主控器S3C2410A和SD卡,完成SD卡控制器中相应寄存器的设置和向SD卡发送命令实现SD卡初始化、读、写等操作,目的是为其上层提供相应的功能函数,屏蔽直接对硬件的具体操作。

硬件抽象层

硬件抽象层主要完成对S3C2410A中SD卡控制器相应寄存器的设置,将对SD卡直接控制抽象为对SD卡控制器的操作。

SD卡工具函数层

本层实现CRC校验,所有的命令(Command)和响应(Response,R3响应除外)使用CRC7校验,生成多项式为:G(x)=x7+x3+1;数据校验采用CRC16,生成多项式为:G(x)=x16+x12+x5+1。CRC7校验采用直接编程计算的方法, CRC16采用查G(x)=x16+x12+x5+1余式表的方法。

SD卡命令层

本层宏定义了各种命令和响应,实现了向SD卡发送各种命令的函数SD_SendCmd()和读写SD卡内部寄存器等功能。SD总线上以位流的方式传送命令和数据,分别以0和1表示起始和停止。SD卡读写时序如图3所示。

Command发起每个操作,通过CMD线串行传输的。SD卡标准定义了两种命令:ACMD(Application specific command)和GEN-CMD(General command),后者可直接发送,所有的ACMD命令在发送前必须先发送CMD55命令, Response是卡对命令的响应,包括R1、R1b、R2、R3四种类型,通过CMD线传输。Data block通过DAT数据线传输,在写操作过程中,由DAT0线传输busy信号。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭