综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章嵌入式系统正文
 
基于S3C2410和CF卡的FAT32开发
发布日期:2008-06-17 作者:黎小玉 卢博友 杨亮 雷永锋 来源:微计算机信息

摘 要:本文依据CF卡的基本结构和工作原理,设计了S3C2410与CF卡的接口电路和系统软件,按照FAT32格式实现基于S3C2410的CF卡文件系统。该系统可广泛应用于需要进行大容量的现场数据采集、存储和查询的场所。
关键词:CF卡;FAT32文件系统;S3C2410

1 引言

随着计算机应用技术的飞速发展,移动存储设备得到了广泛的应用。CF(Compact Flash)卡以其能捕获、保存、传送数据、及其它音像信息的设计理念诞生于1994年,它是最早推出的闪存卡。由于CF卡具有价格低廉、体积小、存储容量大、高速等特点,因此被广泛地应用于数码相机、PDA和笔记本电脑等那些需要高速采样、实时记录数据、然后再将数据传入计算机进行分析处理的仪器和设备中。

由于CF卡中存储的信息要能从PC机上读取出来,所以必须采用一种标准的格式组织数据,通常采用的方法是在CF卡中内嵌文件系统。目前,市场上存在多种商用的嵌入式操作系统可以支持文件系统,但这些操作系统对硬件要求一般都比较高,价格昂贵,且要额外占用一定量的存储空间。由于成本等方面的限制,较少使用嵌入式操作系统,因此很有必要开发一种不依赖于商用操作系统的标准文件系统。在此本文介绍了按照FAT32格式实现的基于S3C2410的CF卡文件系统。

2 CF卡简介

   CF存储卡内嵌单片控制器及闪存模块,连接口为25针双排的母插口,点距为50mil(1.27mm)。CF卡内部结构模块图如图1所示。

图1 CF存储卡模块图

 

主控制器通过一个50针的连接器与CF卡连接。连接器为每排25针(1.27mm)的公插头。

CF卡的存取方式有三种:PC Card Memory模式、PC Card I/O模式以及True IDE模式。PC Card模式与PCMCIA标准兼容。True IDE模式与ATA标准兼容。

3 S3C2410与CF卡接口设计

本系统采用了ARM公司的32位嵌入式微处理器S3C2410。ARM 系列嵌入式微处理器,以其低功耗、高性能等突出优点已在32位嵌入式应用中稳居世界第一,成为高性能、低功耗嵌入式处理器的代名词。ARM核已是现在嵌入式SoC系统芯片的核心,也是现代嵌入式系统发展的方向。

S3C2410与CF卡的硬件连接关系如图2所示,通过改变CPLD内部逻辑关系可以实现三种模式。由于在True IDE模式下,CF卡与主机通信的信号最少,硬件接口最简单、软件易于实现,因此本设计采用了True IDE模式。

图2 S3C2410与CF卡的硬件连接关系图

 


在True IDE模式下,某些信号有特殊的含义,必须采用True IDE模式下特有的设置方法,如表1True IDE模式I/O解码所示:

表1  True IDE模式I/O解码

nCE2

nCE1

A2

A1

A0

IORD

IOWR

1

0

0

0

0

RD数据

WR数据

8位或16位

1

0

0

0

1

错误寄存器

特征

8位

1

0

0

1

0

扇区计数

扇区计数

8位

1

0

0

1

1

扇区号

扇区号

8位

1

0

1

0

0

低柱面

低柱面

8位

1

0

1

0

1

高柱面

高柱面

8位

1

0

1

1

0

选择卡/磁头

选择卡/磁头

8位

1

0

1

1

1

状态

命令

8位

0

1

1

1

0

Alt状态

设备控制

8位

 

 nCE1是任务文件寄存器片选信号,低电平有效;nCE2是交替状态(Alternate Status)寄存器和设备控制(Device Control)寄存器片选信号,也是低电平有效。因为实际操作中,极少使用交替状态寄存器和设备控制寄存器,所以对CF卡的操作实际就是对任务文件寄存器的操作。因此,一般设置nCE1=0,nCE2=1。主机操作CF卡时,系统仅使用地址总线A2~A0,用于选择组成任务文件寄存器的8个寄存器之一。表1中,nCE1=0时,对应的8个寄存器统称为任务文件寄存器。

 需要注意的是,在True IDE模式下,nOE不是读使能信号,而是CF卡True IED模式的使能信号。CF卡上电时,若nOE(PIN9)为"0",则CF卡自动进入True IDE模式;若nOE="1"则进入PC Card 模式。当电源一直接通时,热拔插CF卡将会使其从原来的True IDE模式重新配置成PC Card模式。因此,热插拔过程中,为了使CF卡工作在True IDE模式,需要在CF卡加电启动的同时,将nOE信号接地。实现的方法:在CPLD中将nOE置0。True IDE模式下,nWE也不用作写使能信号,而应该由主机将之接地。处理方法:在CPLD中将其只置为1。

还有一点需要注意的是Reset信号在True IDE 模式下低电平有效,而在其它模式下高电平有效。将Reset信号接到S3C2410的系统复位信号nReset。

4 系统软件构成

目前, 在PC机DOS/Windows的管理下, 广泛使用的是FAT12、FAT16 和FAT32 文件系统,

FAT12一般用于软盘, FAT16 和FAT32 则用于硬盘。本系统采用FAT32文件系统。   

FAT文件系统的卷由4个基本的区组成,它们在卷中的排列顺序如下:

0——保留区(引导区);

1——FAT区;

2——根目录区(FAT32中存在的是浮动的FDT表);

3——文件和目录数据区。

FAT卷中第1个重要的数据结构BPB(BIOS Parameter Block),它位于卷的保留区内第1个扇区中,BPB参数块记录着分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数, 分配单元大小等重要参数。文件分配表FAT,从逻辑1扇区开始, 它是文件管理系统用来给每个文件分配磁盘物理空间的表格, FAT文件分配表由表标识和簇映射的集合组成, 一个完全相同的镜像副本连续存储在主FAT表后, FAT的全部目的就是跟踪文件, 具体描述即需要说明整个磁盘分区中的每个存储单元(簇) 的使用情况、文件数据的簇存储情况(连续或碎片) 以及树型目录结构的描述。FAT实际上就是一个卷中所有簇使用情况的映射表, 每个文件、目录都同表中的若干项对应联系, 并在目录中进行索引。FAT之后就是根目录, 记录整个磁盘上所有文件的有用信息, 其中每一个文件占32个字节, 包括文件名、文件属性、文件的修改时间和文件的长度等等。根目录接下来是数据区, 用来存储采集的数据等信息。

在CF卡上进行文件读写操作过程如下:CF卡读写以扇区为单位,每扇区为512字节,每次可读写一个或多个连续的扇区。在CF卡读写时,分别向扇区计数、扇区号、低柱面、高柱面、选择卡/磁头寄存器写入CF卡需要访问的扇区位置,其写入模式有2种:即CHS(Cylinder/Head/Sector)模式和LBA(Logical Block Address)模式。通过设置选择卡/磁头寄存器的第6位LBA确定其模式:即如果LBA=0,则为CHS模式;如果LBA=I,则为LBA模式。本设计采用LBA寻址方式访问CF卡数据。

S3C2410对CF卡读扇区数据时首先分别向扇区计数、扇区号、低柱面、高柱面、选择卡/磁头寄存器写入相应的数据指定需要读写的扇区;再向命令寄存器写20H,读取状态字为58H后读取数据;最后读取命令寄存器的状态字,如果为50H表示没有错误, CF卡进入待命状态。

S3C2410对CF卡向指定扇区写数据的命令是30H,其操作与读数据相似,只不过在写入数据后要等到CF卡中数据稳定并进入空闲状态才能结束这一过程。

通过对CF卡写入命令ECH就可以读出1个扇区,其中包含了该CF卡的一些参数的信息,如容量、默认的柱面数、默认的磁头数、每个扇区的字节数、每个磁道的扇区数和CF卡上总的扇区数等,以此来判断是否需要格式化CF卡。在格式化后的CF卡中,具有FAT文件系统结构。

FAT32文件系统在CF卡上工作时,首先初始化文件系统;再建立一个目录;然后读/写 一个文件;接着删除这个文件和目录;最后关闭文件系统。   

//初始化文件系统

DiskInit();                          //初始化逻辑盘信息管理模块

AddFileDriver(CFCammand);            //加载CF卡底层驱动程序

FileInit();                          //初始化文件指针系统

 

//建立一个目录

ChangeDrive(“a:”);       //改变当前逻删除一个底层驱动程序辑盘

MakeDir(“dir2.dir”);     //建立目录

ChangDir(“a:\\dir2”);    //改变当前目录

 

//读/写一个文件

FHandle = FileOpen(“a.txt”,w”);     //以指定方式打开文件

If  (FHandle != Not_Open_FILE)

 {

         FileSeek(FHandle,0,SEEK_END); //移动文件读/写位置

           FileWrite(S,6, FHandle);      //写文件

            FileClose(FHandle);            //关闭指定文件

  }

FHandle = FileOpen(“a.txt”,r”);

If  (FHandle != Not_Open_FILE)

  {

            FileSeek(FHandle,0,SEEK_END);

            FileRead(buf,6, FHandle2);   

            FileClose(FHandle);

  }

 

//删除这个文件、目录,最后关闭文件系统

RemoveFile(S);                             //删除文件

ChangeDir(“a:\\”);                       //改变当前目录

RemoveDir(“dir2”);                       //删除目录

RemoveFileDriver(GetDrive(“a”)); //GetDrive(“a”)—获取指定目录的逻辑盘号 

                                  // RemoveFileDriver—删除一个底层驱动程序

5 结论

按照FAT32文件格式,在S3C2410的应用系统中,实现了基于CF 卡的基本文件系统功能,如读写、创建、删除和复制文件,创建、打开和删除子目录以及返回上级目录等,且能与其他支持FAT32的系统交互信息。该系统可以很方便地进行存储容量的扩展, 而且耗电量低, 满足了长期大量数据存储的要求, 存储的文件与现在广泛使用的windows操作系统兼容, 更加方便了高速采样等场合的数据采集和回放分析。系统的扩展性强, 可以很方便地应用在各种工业现场以及小型便携式嵌入式系统中, 在数据采集存储方面更加灵活、稳定, 摆脱了操作系的限制。

本论文的创新点:介绍了一种不依赖于商用操作系统而按照FAT32格式实现的基于S3C2410的CF卡标准文件系统,使得CF卡中存储的信息能从PC机上读取出来。

参考文献

[1] 李昊,王跃科,周睿,潘仲明.CF卡在大容量数据存储系统的典型应用[ J ].微计算机信息,2005,11-1:66~68.

[2] 毛晓燕.基于8051的CF卡文件系统实现[ J ]. 自动化仪表, 2003, 24 (6) : 23 ~ 37.

[3] 姚放君.嵌入Compact Flash卡接口设计[ J ]. 计算机应用研究, 2003,(6) : 225 ~227.

[4] 田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社.2005.3


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
基于S3C2410的CAN总线通信设计与开发 (07-03)
U-Boot在S3C2410上的移植 (07-19)
嵌入式无线局域网设备的设计与实现 (08-08)
触摸屏在S3C2410上的应用实例 (02-22)
S3C2410X的I2C控制器及其应用开发 (12-12)
S3C2410X在无线宽带通信网中的应用 (03-07)
嵌入式系统中LCD驱动的实现原理 (08-13)
一个基于Linux操作系统的嵌入式网关的实现 (10-02)
基于S3C24104X的TSP开发与应用 (08-09)
虚拟SPI时序在TC77与S3C2410通信中的应用 (08-25)
S3C2410外围存储系统的研究与设计 (06-12)
基于S3C2410的CDMA无线数据传输方法 (06-13)
一种基于ARM的税控收款机磁卡接口设计 (06-15)
基于ARM的嵌入式文件系统YAFFS的移植 (06-12)
基于AC48304的嵌入式多路语音记录器 (03-11)
虚拟SPI时序在TC77与S3C2410通信中的应用 (08-28)
基于S3C2410的TFT-LCD驱动电路设计 (09-12)
引导加载程序vivi 的分析和移植研究 (12-20)
信息家电中蓝牙通信的实现 (昨天)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号