适宜于嵌入式多媒体应用的Flash文件系统
实验2 频繁写操作异常终止状况下本Flash文件系统的可靠工作
实验条件 Flash存储器规格:16 KB/Block×1024Block,预先存储5个文件,文件长度分别为k×100KB(k=1..5),模拟写操作进行当中,发生系统掉电类事故,造成写操作异常中止。 实验结果 实验次数 100次 导致SR、FAT或FRT出错的次数 71次 Flash文件系统启动自检时发现并更正文件系统错误的次数 71次 Flash上已有的5个文件受损的次数 0文件×0次4 降低Flash文件系统的资源消耗
嵌入式系统相对于通用计算机系统来讲,往往有荷刻得多的成本要求,需要嵌入式系统尽可能低的系统资源配置。尤其对于Flash文件系统这种用于增强系统功能的服务性质模块,就更需要降低对系统资源的消耗,才能够扩大其使用的范围。
就Flash文件系统的资源消耗来讲,主要包括程序代码开销、处理器占用时间、运行时内存开销以及额外的Flash存储器消耗。其中,运行时内存开销最限制Flash文件系统的应用,同时设计结构的改善与运行时内存开销直接相关。所以针对资源消耗的结构优化主要着重于降低运行时的内存开销。
Flash存储器的擦除单位是区块(Block),这是本Flash文件系统中数据存储分配的最小单元。如果不采用任何措施的话,运行时内存开销中将至少包括备份一个完整区块数据的缓冲区。但一个Flash存储器的区块可能很大(Sumsung[TM]KM29U128是16KB),这在很多嵌入系统中都是过大的资源开销(最通用的8位微处理器MCS-51系列,总线寻址的能力只有64KB),必须进行改进。
为此,采用交换缓冲区(Swap Buffer)技术来解决这个困难。当需要准备某一个区块的数据时,并不直接向该区块写入,而是首先擦除用于做交换缓冲区的区块,然后逐步向交换缓冲区填入目的数据内容。因为此时,任何有用数据内容都未被破坏,所以运行内存中的缓冲就可以做得比较小。当交换缓冲区填写完成后,再擦除目的区块,拷贝交换缓冲区内容到目的区块。
采用交换缓冲区后,对内存中的缓冲区大小没有特别要求,考虑到Flash存储器的操作特性,选取Flash存储器的页面(Page)容量作为内存缓冲区大小。在结构上作了上述改进后,虽然大大降低了Flash文件系统的运行时内存消耗,但代价是将一个数据区块的写入时间延长了一倍。不过一般的Flash存储器中都有一特点制作的区块,该区域保证不会损坏,正好适用做交换缓冲区。这样就可以省去中间交换缓冲过程的数据完整性检验,加快写操作的速度。
表1给出了在与MCS-51兼容的微处理器上本Flash文件系统实例,对Sumsung KM29U128 Flash存储器(16KB/Block×1024Block)[4]进行管理应用中的系统资源开销。地于一般的成本要求来讲,是可以接受的。
表1 一个应用实例中本Flash文件系统的系统资源开销
5 基于存储内容的自适应环境管理策略
嵌入式系统中应用Flash存储器,与多媒体相关的应用占据相当的比例,如数码相机、语音监录、MP3播放器等。存储在Flash上的内容多数是多媒体数据流,这种应用相对于
《适宜于嵌入式多媒体应用的Flash文件系统(第3页)》