适合嵌入式Flash文件系统的均衡擦写实现方法

文档序号:6575839阅读:277来源:国知局
专利名称:适合嵌入式Flash文件系统的均衡擦写实现方法
技术领域
本发明涉及计算机领域,尤其涉及嵌入式系统中Flash (闪速电可擦除可编程只读存 储器)文件系统均衡擦写机制的数据结构和算法。
背景技术
目前在嵌入式领域巳经存在有嵌入式Linux中的JFFS2等针对嵌入式系统的Flash文 件系统,但是由于这些文件系统安全和可靠机制实现的复杂性,对一些存储资源很少的嵌 入式系统并不适用;在这种情况下出现了一些简化的Flash文件系统,这些简化的Flash 文件系统提供了一种分配合理、使用灵活且节约存储空间的文件管理方法,但欠缺的是普 遍未考虑到Flash的硬件特性。
Flash有一定的使用寿命, 一般可擦除的次数为10 100万次,随着使用次数的增加, 会有一些单元逐渐变得不稳定或损坏。因此,要尽量避免频繁地对局部地址范围的操作,
以免造成局部单元提前损坏,从而导致整个Flash的损坏,以及Flash的使用寿命縮短。
由于Flash在嵌入式系统中的普遍使用,人们迫切希望有一种简单实用的Flash文件系 统均衡擦写实现方法可以延长Flash的使用寿命,从而降低工程中由于Flash损坏而产生 的不必要成本。

发明内容
本发明要解决的技术问题是提供一种适合嵌入式Flash文件系统的均衡擦写实现方法, 采用该方法能延长Flash的使用寿命,从而降低工程中由于Flash损坏而产生的不必要成 本。
为了解决上述技术问题,本发明提供一种适合嵌入式Flash文件系统的均衡擦写实现 方法,将Flash存储空间分为文件控制信息区和文件数据存储区两个区域文件控制信息 区用于保存文件系统的文件控制块(File Control Block)信息和作为基本分配单元的文 件块的分配信息;文件数据存储区用于存储文件的实际数据信息;文件控制信息区保存了 文件系统的文件控制块和文件块的相关控制信息,文件数据区用于保存文件系统中文件的实际数据信息;
文件系统在系统启动时要将保存在Flash文件控制信息区的控制信息读入内存中,在 系统关闭时要将内存中文件系统的控制信息从内存中写入到Flash的文件控制信息区内; 整个过程包括如下步骤
1) 、将Flash地址空间按照指定的物理块的大小,按地址递增顺序依次编号,指定物 理块的大小应为偶数;然后为每一个物理块分配一个对应的文件块,编号相同的文件块与
物理块一一对应;
2) 、文件系统中维护了一个文件控制块(FCB)静态链表,用来记录文件系统中所 有的文件控制块(FCB)的信息, 一个文件控制块对应一个文件;由于使用的是静态链表, 因此链表的大小需要预先分配,故文件控制块静态链表将分成两部分 一部分为已经被使 用的文件控制块, 一部分为空闲的文件控制块;
3) 、文件系统中维护了一个文件块(FB)静态链表,用来记录文件系统中所有的文 件块(FB)的信息, 一个文件块对应一个物理块;由于使用的是静态链表,因此链表的大 小需要预先分配,故文件块静态链表将分成两部分 一部分为已经被使用的文件块, 一部 分为空闲的文件块;
4) 、通过地址映射机制将文件块(FB)静态链表里的每一个文件块映射到Flash的地 址空间中的一个物理块上,从而使文件块与Flash上的物理块形成一对一的映射关系,文件 块记录了与其对应物理块的使用信息;
5) 、当需要创建一个文件时,若还有空闲的文件控制块(FCB),即空闲的文件控制块 静态链表不为空,则从空闲的文件控制块静态链表的表头取出一个文件控制块(FCB)分配 给申请者;
6) 、当需要删除一个文件时,则将该文件控制块(FCB)插入到空闲的文件控制块静态 链表的尾部;
7) 、当一个文件需要申请一个文件块(FB)时,若Flash上还有空闲空间,即空闲的 文件块静态链表不为空,则从空闲的文件块静态链表的表头取出一个文件块分配给申请文 件;
8) 、当文件系统需要释放一个文件块(FB)时,则将该文件块插入到空闲的文件块 静态链表的尾部。
作为本发明的适合嵌入式Flash文件系统的均衡擦写实现方法的改进静态链表是用一维数组实现的链表。
作为本发明的适合嵌入式Flash文件系统的均衡擦写实现方法的进一步改进通过文 件块的编号将内存中文件块静态链表中的结点与Flash上的物理块一一对应起来。
作为本发明的适合嵌入式Flash文件系统的均衡擦写实现方法的进一步改进静态链 表是一种FIFO(先进先出)的数据结构,即队列;总是从链表头分配资源,被释放的资源放 在链表尾。
采用本发明的方法,每次从空闲块链表中取出的都是最久未被使用过的Flash空闲块。 从而在对Flash操作时,不会频繁地对同一块地址进行操作,实现了对Flash的均衡擦写。 本发明适合嵌入式Flash文件系统的均衡擦写实现方法的主要优点有
1. 均衡擦写机制实现中所使用的数据结构以及算法的开销小,包括用来存储文件系 统控制信息的空间小且可根据实际情况调整,不需要排序等冗余操作,节约了内存空间以 及CPU资源;
2. 文件系统中的链表使用的是静态链表,解决了许多实时操作系统不支持动态内存 管理的问题。


下面结合附图对本发明的具体实施方式
作进一步详细说明。
图1是本发明方法中实现所使用的Flash的地址空间以及存储分配结构图2是将内存中的每一个文件块映射到Flash地址空间上一个物理块的说明图3是申请一个空闲块的操作说明图4是释放一个空闲块的操作说明图。
具体实施例方式
在本发明中,文件系统相关数据结构如下-
文件控制块(File Control Block,以下简称FCB)结构包括以下域
1. 文件名,
2. 文件所占用的文件块链表中第一个文件块的编号,
3. 文件所占用的文件块总数,
4. 当前正在使用的文件块编号,
5. 当前文件块内偏移,
6. 文件的属性信息(*),7. 文件的操作密码(",
8. 下一个文件控制块(FCB)的编号;
文件块(File Block,以下简称FB)结构包括以下域
1. 文件块的编号,
2. 文件块已使用的字节数,
3. 文件块的CRC码(循环冗余码)(*),
4. 下一个文件块的编号;
文件系统相关数据信息描述
文件控制块(FCB):
文件控制块中带"*"的域是附加域,具体实现时可以不用,或者更换成其他用户所 具体需要的域。文件控制块是文件系统中用来记录一个文件属性的数据结构,它随着文件 系统中文件的创建而创建,随着文件的删除而释放,因此,文件与文件控制块是一一对应 的。
文件块(FB)
文件块中带"*"的域是附加域,具体实现时可以不用,或者更换成其他用户所具体 需要的域。文件块是文件系统中用来记录Flash介质一个物理块信息的数据结构,当文件块 被一个文件使用时,它将被链接在该文件对应的文件控制块的文件块链表中。若文件块没 有被任何文件使用时,那么这个文件块将被链接在系统维护的空闲文件块链表中。通过文 件块的编号将文件块映射到Flash可用地址空间上的一个物理块上,通过映射,文件块与物 理块就一一对应了起来。
实施例l、 一种适合嵌入式Flash文件系统的均衡擦写实现方法,其实现所用硬件平台 如下所述实现时使用的是Motorola公司的HCS12开发板上的大小为256KB的Flash,该 Flash分为16个Page,每个Page大小为16KB。具体实现时我们取每个物理块为512个字节, 即 一个Page包括了 32个物理块。
如附图1所示,将Flash存储空间分为文件控制信息区和文件数据存储区两个区域文 件控制信息区用于保存文件系统的文件控制块(FCB)信息和作为基本分配单元的文件块 (FB)的分配信息;文件数据存储区用于存储文件的实际数据信息。总的来说,文件控制 信息区保存了文件系统的文件控制块和文件块的相关控制信息,文件数据区用于保存文件 系统中文件的实际数据信息。
7依次进行如下步骤
1) 如附图2所示,将Flash地址空间按照指定的物理块的大小512个字节,按地址递增 顺序依次编号0 31,然后为每一个物理块分配一个对应的文件块,编号相同的文件块与物 理块一一对应;
2) 如附图2所示,文件系统中维护了一个文件控制块(FCB)静态链表FCBList,用 来记录文件系统中所有的文件控制块(FCB)的信息,文件控制块静态链表将分成两部分: 一部分为已经被使用的文件控制块(如FCBList[l]和FCBList[2]), 一部分为空闲的文件控 制块(除FCBList[l]和FCBList[2]以外的文件控制块);
3) 如附图2所示,文件系统中维护了一个文件块(FB)静态链表FBList,用来记录文 件系统中所有的文件块(FB)的信息,文件块静态链表将分成两部分 一部分为已经被使 用的文件块(如FBList[l]、 FBList[2]、 FCList[3]和FBList[4]), 一部分为空闲的文件块(除 FBList[l]、 FBList[2]、 FCList[3]和FBList[4]以外的文件块);
4) 、通过地址映射机制将文件块(FB)静态链表里的每一个文件块映射到Flash的地 址空间中的一个物理块上,从而使文件块与Flash上的物理块形成一对一的映射关系,文件 块记录了与其对应物理块的使用信息。例如,在附图2中,数组FBList中编号为O的文件块 与页号为0x30,编号为O的物理块对应。由于Flash寻址的特点,我们可以利用页号也物理 页号建立文件块与物理块的一一对应关系,对应关系为文件块编号=(所在页号-0x30) *32+物理块编号,即页号为0x32,物理块编号为5的物理块与编号为69的文件块相对应;
5) 、当需要创建一个文件时,若还有空闲的文件控制块(FCB),即空闲的文件控制块 静态链表不为空,则从空闲的文件控制块静态链表的表头取出一个文件控制块(FCB)分配 给申请者,具体操作类似于步骤7;
6) 、当需要删除一个文件时,则将该文件控制块(FCB)插入到空闲的文件控制块静态 链表的尾部,具体操作类似于步骤8;
7) 、如附图3所示,当一个文件需要申请一个文件块(FB)时,若Flash上还有空闲 空间,即空闲的文件块静态链表不为空,则从空闲的文件块静态链表的表头取出一个文件 块分配给申请文件。如附图3所示,假设,空闲文件块链表头为5号结点,空闲文件块链表 尾为9号结点,此时需要分配一个新的文件块,那么就将链表头所在的5号结点分配给用户, 此时新的空闲文件块链表头变为6号结点;
8) 、如附图4所示,当文件系统需要释放一个文件块(FB)时,则将该文件块插入到空闲的文件块静态链表的尾部。如附图4所示,假设,空闲文件块链表头为5号结点,空闲 文件块链表尾为9号结点,此时需要释放编号为3的文件块,那么就将3号结点插入到此时 空闲文件块链表尾所在的9号结点之后,此时新的空闲文件块链表尾变为3号结点。
最后,还需要注意的是,以上列举的仅是本发明的一个具体实施例。显然,本发明不 限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接 导出或联想到的所有变形,均应认为是本发明的保护范围。
权利要求
1、一种适合嵌入式Flash文件系统的均衡擦写实现方法,其特征是将Flash存储空间分为文件控制信息区和文件数据存储区两个区域文件控制信息区用于保存文件系统的文件控制块(File Control Block)信息和作为基本分配单元的文件块的分配信息;文件数据存储区用于存储文件的实际数据信息;文件控制信息区保存了文件系统的文件控制块和文件块的相关控制信息,文件数据区用于保存文件系统中文件的实际数据信息;文件系统在系统启动时要将保存在Flash文件控制信息区的控制信息读入内存中,在系统关闭时要将内存中文件系统的控制信息从内存中写入到Flash的文件控制信息区内;整个过程包括如下步骤1)、将Flash地址空间按照指定的物理块的大小,按地址递增顺序依次编号,指定物理块的大小应为偶数;然后为每一个物理块分配一个对应的文件块,编号相同的文件块与物理块一一对应;2)、文件系统中维护了一个文件控制块(FCB)静态链表,用来记录文件系统中所有的文件控制块(FCB)的信息,一个文件控制块对应一个文件;由于使用的是静态链表,因此链表的大小需要预先分配,故文件控制块静态链表将分成两部分一部分为已经被使用的文件控制块,一部分为空闲的文件控制块;3)、文件系统中维护了一个文件块(FB)静态链表,用来记录文件系统中所有的文件块(FB)的信息,一个文件块对应一个物理块;由于使用的是静态链表,因此链表的大小需要预先分配,故文件块静态链表将分成两部分一部分为已经被使用的文件块,一部分为空闲的文件块;4)、通过地址映射机制将文件块(FB)静态链表里的每一个文件块映射到Flash的地址空间中的一个物理块上,从而使文件块与Flash上的物理块形成一对一的映射关系,文件块记录了与其对应物理块的使用信息;5)、当需要创建一个文件时,若还有空闲的文件控制块(FCB),即空闲的文件控制块静态链表不为空,则从空闲的文件控制块静态链表的表头取出一个文件控制块(FCB)分配给申请者;6)、当需要删除一个文件时,则将该文件控制块(FCB)插入到空闲的文件控制块静态链表的尾部;7)、当一个文件需要申请一个文件块(FB)时,若Flash上还有空闲空间,即空闲的文件块静态链表不为空,则从空闲的文件块静态链表的表头取出一个文件块分配给申请文件;8)、当文件系统需要释放一个文件块(FB)时,则将该文件块插入到空闲的文件块静态链表的尾部。
2、 根据权利要求l所述的一种适合嵌入式Flash文件系统的均衡擦写实现方法,其特征是:所述静态链表是用一维数组实现的链表。
3、 根据权利要求l所述的一种适合嵌入式Flash文件系统的均衡擦写实现方法,其特征是: 通过文件块的编号将内存中文件块静态链表中的结点与Flash上的物理块一一对应起来。
4、 根据权利要求l、 2或3所述的一种适合嵌入式Flash文件系统的均衡檫写实现方法,其 特征是所述静态链表是一种FIFO的数据结构,即队列;总是从链表头分配资源,被释放的 资源放在链表尾。
全文摘要
本发明公开了一种适合嵌入式Flash文件系统的均衡擦写实现方法,将Flash存储空间分为文件控制信息区和文件数据存储区两个区域文件控制信息区用于保存文件系统的文件控制块(File Control Block)信息和作为基本分配单元的文件块的分配信息;文件数据存储区用于存储文件的实际数据信息;文件控制信息区保存了文件系统的文件控制块和文件块的相关控制信息,文件数据区用于保存文件系统中文件的实际数据信息;文件系统在系统启动时要将保存在Flash文件控制信息区的控制信息读入内存中,在系统关闭时要将内存中文件系统的控制信息从内存中写入到Flash的文件控制信息区内。采用该方法能延长Flash的使用寿命。
文档编号G06F17/30GK101609464SQ20091009983
公开日2009年12月23日 申请日期2009年6月22日 优先权日2009年6月22日
发明者吴朝晖, 霖 周, 红 李, 杨国青, 琦 胡, 魏城炯 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1