新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于S3C2410和CF卡的FAT32开发

基于S3C2410和CF卡的FAT32开发

作者: 时间:2012-04-11 来源:网络 收藏

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

4 系统软件构成

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

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

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个字节, 包括文件名、文件属性、文件的修改时间和文件的长度等等。根目录接下来是数据区, 用来存储采集的数据等信息。

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

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

对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”); //改变当前目录



关键词: 开发 FAT32 CF S3C2410 基于

评论


相关推荐

技术专区

关闭