基于S3C2410和CF卡的FAT32开发
目录结构的描述。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
- 嵌入式软件设计中查找缺陷的几个技巧(03-06)
- 基于算法的DSP硬件结构分析(04-02)
- Windows CE下驱动程序开发基础(04-10)
- DSP+FPGA在高速高精运动控制器中的应用(05-17)
- 基于USB接口和DSP的飞机防滑刹车测试系统设计(05-19)
- 一种基于DSP平台的快速H.264编码算法的设计(05-19)