新闻中心

EEPW首页 > 汽车电子 > 设计应用 > 车载MP3中Flash文件系统的设计与应用

车载MP3中Flash文件系统的设计与应用

作者:时间:2010-01-08来源:网络收藏

2.1 存储管理系统

存储器的操作是以块为单位的,而FAT则是建立在以扇区(sector)为单位的磁盘操作基础上(通常为512字节/扇区)。因此,本文设计了一个特殊的存储管理系统,来解决以块为单位的Flash物理特性和以扇区为单位的接口之间的矛盾,以使得Flash的物理地址和FAT操作的逻辑地址之间能够对应。同时,由于Flash的其它特点,Flash存储管理系统还实现了各块之间的擦写次数均衡和坏块管理等工作。

(1)物理地址到逻辑地址的映射

为了在Flash物理地址和FAT操作的逻辑地址之间建立一个好的映射关系,对Flash的存储空间在逻辑上进行了重新定义。结合Flash特点,将每个存储单元块内部分成若干物理扇区,每个物理扇区由512字节+16字节=528字节组成。其中Main Area的512字节为有效数据空间,而Spare Area的16字节用于存放其它信息。

由上述定义便可以确定Flash物理扇区和绝对地址之间的对应关系:

绝对地址=Flash基地址+物理扇区号×528

在建立了物理地址和逻辑地址之间的映射关系之后,但可以很好地将系统对音频文件的操作转换成系统直接Flash的编程或者擦除操作。例如,在该系统中要进行ReadFile()操作,便可以根据其对应关系,通过执行Flash存储管理系统中的sectorread()操作来实现。

(2)可靠性设计

由于该系统采用汽车供电,因此当汽车处于不太平衡的环境中,可能会由于颠簸千万播放系统的异常断电,所以提高播放系统的可靠性非常重要。本文通过将Spare Area的16字节定义为逻辑扇区号、扇区当前状态、坏块信息等来提高播放系统的可靠性。其中Spare Area的具体定义如下:

逻辑扇区号 扇区当前状态 坏块信息 保留字节

第1~3字节 第4~5字节 第6字节 第7~16字节

由以上定义可以看到,Spare Area的第4~5字节用于存储扇区当前状态。这样在Flash写操作过程中,如果突然断电,便可以根据此状态进行掉电数据恢复。该系统中设定扇区当前状态有3种:扇区为空(0xfff)、扇区数据无用(0x0000)、扇区数据有效(0x00ff)。这样定义以后,系统便可以在Flash写操作异常终止时能够对当时的状态进行及时的保存,以便下次系统开启后能够判断出上次系统中存在的问题并作出相应的处理。

(3)坏块管理

由于Flash内部会有坏块,因此Flash存储管理系统需要对Flash进行坏块管理。本文对坏块的管理分以下两种情况:

①初始坏块处理。Flash存储器在使用前可能会有坏块,而且这些坏块是随机分布的。所以,Flash文件管理系统在系统执行读写操作之前先建立一个坏块表,然后对Flash存储器进行初始化扫描以发现坏块,并将坏块标记为不可用,加入到坏块表中。

②操作过程中坏块处理。在擦除或者编程过程中发生错误时,Flash文件管理系统将该块中其它页的数据重新拷贝到一个新的空块中,然后再将该块标记为坏块,加入到坏块表中。在这个处理过程中,由于对Flash的擦除或者编程操作都会使得Flash存储单元块的内容改变,所以Flash文件管理系统一旦发现Flash存储器的存储单元块成为坏块后便不再对该块进行擦除或编程操作,以免将坏块标志位数据清除掉,而是将该块标记为坏块,并将其加入坏块表中。

Flash文件管理系统在进行上述坏块管理后,坏块单元对用户应用是完全透明的。这大大方便了用户的使用,也达到了车载播放系统的目的。

(4)均衡擦写次数

由于Flash有一定的使用寿命,一般可擦除的次数为10~100万次,所以随着使用次数的增加,会有一些单元逐渐变得不稳定或失败。因此,要尽量避免频繁地对同一块地址操作,以免造成局部单元提前损坏;同时,由于擦除操作耗时较多,也应减少擦除操作,应该尽量达到擦写次数均衡。为此,本文设计了Flash更新算法和磨损程度检测算法。



评论


相关推荐

技术专区

关闭