首页 » 技术文章 » 基于FAT32文件系统嵌入式软件的实现

基于FAT32文件系统嵌入式软件的实现

作者:  时间:2011-07-21 19:20  来源:EDN

  引言

  近几年来,随着闪烁存储技术的进步,由于Flash闪烁存储体系具有容量大和功耗低等优点,被广泛用于数码相机、媒体播放器和PDA等各种数码产品中。当前各种流行的嵌入式操作系统虽然功能完备,但在许多具体的应用中,仍需要编写特定的系统控制软件。数码产品中一个必要的软件模块就是对一种或多种文件系统的支持。FAT32文件系统被WindowsLinux等当前流行的PC操作系统广泛支持,这也是许多数码产品选择FAT32的原因。本文介绍了FAT32文件系统结构和基于DSP TMS320LF2407A为硬件平台支持 FAT32文件系统结构的嵌入式软件实现。

  FAT32文件系统结构简介

  单FAT32分区的磁盘或闪烁存储器(以下没有特殊情况均指单FAT32分区情况)由主引导区(MBR)、系统引导区、文件分配表FAT1、文件分配表备份FAT2、文件根目录FDT和文件数据区组成,它们在磁盘上是顺序分布的,如图1所示。

1  FAT32文件系统的实现机制

  主引导区从物理第一扇区开始,记录了第一磁盘分区的入口和剩余磁盘分区的入口信息、第一分区的文件系统格式、起始扇区号和大小。接下来就是FAT32文件系统的引导区,存放着BPB参数和系统引导程序,如图1左上方表格所示。然后是文件分配表及其备份FAT1FAT2,用于管理和分配文件区的磁盘空间,其位置和大小由系统引导区中的参数计算可得。簇是FAT表给文件分配磁盘空间的最小单位,每个簇在FAT表中占有一个登记项,簇的编号与FAT登记项的编号一一对应。FAT表从第2个表项开始分配给文件,最开始两个表项即序号为01的表项为保留表项值为:0FFFFFF8FFFFFFFF。其它的表项则以链表的形式存放下一个在逻辑上连续的簇号值,结束用0FFFFFFF标记表示不再有后续的表项,用00000000表示该簇没有被使用,FAT管理磁盘空间的工作机理如图1所示。磁盘空间的最后的部分为根目录和文件区,根目录FDT、普通文件目录和文件具体内容由FAT表统一管理,与FAT16文件系统为根目录划出专用的磁盘空间不同,这也是FAT32FAT16的最大区别之一。在系统引导区第一扇区偏移量为2Ch处存放着根目录的入口簇号,根据FAT32系统信息可计算出根目录的具体位置,一般根目录的入口簇号为00000002FAT32文件系统的文件登记表格式请参考图1,限于篇幅这里不介绍超长文件名。

  另外,对于支持ATA协议标准块存储设备有物理寻址(CHS)和逻辑寻址(LBA)两种方式。在物理寻址方式下,存储空间通过磁头(Head)、柱面(Cylinder)和扇区(Sector)三个参数组织起来的,每一组H/C/S参数唯一确定存储载体中的一个扇区,通常一个扇区拥有512个字节的数据空间。逻辑寻址方式下,按照连续的逻辑扇区编号进行寻址,使用28个数据位来表示逻辑扇区的地址。下面给出物理寻址方式与逻辑寻址方式的对应关系,设NS为每磁道扇区数,NH为磁头数,CHS分别表示磁盘的柱面、磁头和扇区编号,LBA表示逻辑扇区号,Div为整除计算,mod为求余计算,则:LBANH×NS×C+NS×H+S1C(LBA div NS)div NHH(LBA div NS)mod NHS(LBA mod NS)+1。了解了FAT32文件系统的结构,就可以获取相关文件系统参数(参见图1),对文件进行管理,包括一下几个方面:

  系统引导扇区开始的逻辑扇区号,由主分区第一扇区即物理第一扇区偏移量1C6h处获得。

  计算文件分配表及备份FAT1FAT2的位置和大小:FAT1的起始逻辑扇区号=保留扇区的大小+系统引导扇区开始的逻辑扇区号;FAT2的逻辑扇区号=FAT1的逻辑扇区号+每个FAT所占的扇区数。

  根据根目录的起始簇号计算根目录的位置:根目录的起始逻辑扇区号=FAT2的逻辑扇区号+每个FAT所占的扇区数+(根目录的起始簇号-2)×每簇扇区数。这也是根据簇号计算逻辑扇区号的公式。

  TMS320LF2407A简介及资源配置

  TMS320LF2407A采用高性能静态CMOS技术,25ns指令周期,速度为40MIPS,低电压3.3V设计;总寻址范围192K字,其中包括64K 程序空间, 64K 数据空间, 64K I/O空间;片内程序空间集成32KFlash;数据空间集成2.5KRAM,包括544DARAM2KSARAM;两个事件管理模块EVAEVB,分别提供两个16bit全局计数器,8个脉冲宽度可调调制通道PWM,三个外部事件的定时采样捕获单元;同步的16通道高性能10bit ADC,转换速率为500ns;串行异步通信接口(SCI)、串行同步外设接口(SPI)CAN总线2.0接口。由于TMS320LF2407A集成了多种数据传输接口,并且片内集成ADC模块,可被广泛用于控制、接口转换以及数据采集等领域。

相关推荐

嵌入式系统的固件更新

嵌入式  Flash  RAM  缓冲区  2013-09-12

苹果再胜诉 三星特定Galaxy产品在荷兰禁售

苹果  Galaxy  blue flash  2012-11-29

把面向数字家庭的Adobe Flash引进到MIPS-Based平台

TPI  Adobe  Flash  2011-09-02

最炫Flash性能 歌美HD8900 LE拆机评测

2011-08-03

基于FAT32文件系统嵌入式软件的实现

Flash  FAT32  2011-07-21

三星、东芝NAND Flash市占差距缩减至0.3%

三星  Flash  2011-07-13
在线研讨会
焦点