闪存的地址空间不允许随意被删除,删除一个文件时必须把扇区作为一个删除单元。因此,删除一个文件,要使用与编辑操作相同的手段获得该文件节点的存储信息,这样文件的信息可以使用。有了文件信息,文件的存储空间的第一个扇区可以得到,其他的也可以依次得到。然后未使用的扇区链表上的扇区可以通过调用函数FreeSect(Ulong SectNum)释放第一个扇区。最后,根据双链表的原则,这个节点将被删除。
图5为一个文件创建和删除过程的示例。要创建一个文件(文件名为N005,大小为912 B,第一个扇区是5号),未使用扇区链表的头节点作为这个文件的存储空间的第一个扇区(扇区号为5)。同时,在文件信息链表的尾节点写文件信息。这个文件的存储扇区数可以计算出来,结果被证明是4。然后,从未使用的扇区链表头部,4个扇区依次用于存储文件数据。从而,文件信息和系统记录更新后,文件的创建操作完成。
要删除文件(文件名是N011,文件大小为2 026 B,第一个扇区编号为6),根据文件名N011,通过遍历文件信息链表获取文件信息节点,根据存储在此节点文件信息,可以获得文件大小和存储空间项(即文件的第一个扇区)。扇区数目也可以计算出来。由于指针索引指向下一个节点,每个扇区被释放,并连接到未使用扇区链表尾节点。最后的操作是从文件信息链表删除这个节点。与此同时,文件信息和系统的记录应该更新。
通过在一个嵌入式计算机数控系统上的有效且成功应用充分展示了FFS的良好性能。这个FFS经过略微的修改即可在不同的嵌入式平台上进行移植,且具有一定的普遍性。
为了提高存储和管理嵌入式平台上文件数据的性能,本文提出了一种新的应用于闪存文件系统(FFS)的策略,其特点可以描述如下:
(1)减少写周期提高写入速度。
(2)采用动态分配存储空间,提高利用效率和延长闪存的使用寿命。
(3)相应的文件被删除后,存储扇区可以很快被释放,并可以连接到未使用的扇区链表。
(4)当损坏扇区的数量到达设置值时自动报警,确保系统处于良好状态。
(5)FAT分配的内存空间存储指针以数组的形式作为全局变量。
(6)为延长内核扇区寿命确保系统启动可靠服务,采用冗余设计、快速计算和追踪策略。
因此,本文中的FFS,特别是在可靠性、存储效率和良好的可移植性方面已获得明显的成效。
参考文献[1] ZHAO Kui,ZHANG Fan.A storage management scheme for embedded system[J].Technological Development of Enterprise,2005,24(1):23-26.
[2] 周兴德,孟晓风.实时系统软件设计方法[J].计算机自动测量与控制,2000(4-6).
[3] NOERGAARD T.Embedded systems architecture:a comprehensive guide for engineers and programmers[M].Newnes,USA,2005:369-412.
[4] ROSENBLUM M,OUSTERHOUT J K.The design and implementation of a log-structured file system[J].ACM Transactions on Computer Systems(TOCS),1992,10(1):26-52.
[5] Kim Han Joon,Lee Sang Goo.A new flash memory management for flash storage system[C].In:Proceedings of the TwentyThird Annual International Computer Software and Applications Conference.IEEE Computer Society,Washington DC,USA,1999:284-289.
[6] WANG Tao.Research on developing platform for CNC system based on MCX314 motion control chip[D].School of Mechanical Engineering,Tianjin University,Tianjin,China,2005.
上一页 [1] [2] [3] [4] 下一页