快速存储器文件的处理方法

文档序号:6561777阅读:187来源:国知局
专利名称:快速存储器文件的处理方法
技术领域
本发明涉及一种快速存储器(Flash)文件的处理方法,特别涉及一种应用于数据通信产品中的Flash文件的处理方法。
当前利用Flash存储数据一般采用分块的方式,这种方式把Flash分成若干事先划分好的部分,每个部分存放一个文件。这种方式比较浪费空间,存放的文件数量也很有限。
采用文件系统的方式存放数据一般把Flash作为类似普通块设备的存储设备,在Flash存储器的开始部分连续存放文件分配表,只是在处理过程中注意了防止意外终止操作导致丢失数据。这种文件系统遇到修改写的时候可能导致Flash写坏(假设用户一个字节一个字节的写)。如果把用户写入的数据临时存放在内存中,又可能导致数据的丢失。
本发明的另一个目的,在于提供一种快速存储器文件的处理方法,其充分考虑到Flash擦写次数有限的特性,并保证系统异常后,例如掉电,系统重新启动后,数据的一致性。
为实现本发明目的,我们给出一种快速存储器文件的处理方法,主要包括文件的组织和文件的读写操作,其中,该方法还包括建立文件分配表,将文件分配表分散存放在快速存储器的最小擦除块上;进行文件的组织,文件的组织方式采用链表形式;实现文件的操作访问,文件操作访问的方式包括采用先备份、再擦除的操作;或采用日志和先备份、再擦除的操作。
所述的快速存储器文件的处理方法,其中所述的建立文件分配表是指将整个FLASH按照最小擦除块的大小分成簇,在每簇上分成最小区域,在每个簇的起始若干个字节,存放块分配表,记录该簇的所有块的分配状态。
所述的快速存储器文件的处理方法,其中在所述的先备份、再擦除的操作上,对flash簇的划分中,特定一簇为备份簇,若需要有擦除操作时,先将整个需要修改的簇拷贝到备份簇,备份簇拷贝成功后,修改备份簇与修改簇的新旧及有效标志,然后对修改簇进行擦除操作,并根据修改要求将备份簇的内容修改到修改簇中;更新备份簇与修改簇的新旧及有效标志。
所述的快速存储器文件的处理方法,其中所述的特定一簇为Flash划分中的最后一簇。
所述的快速存储器文件的处理方法,其中所述日志方式和先备份、再擦写的操作中,将FLASH的一个特定簇作为日志簇,记录对已经打开文件的修改过程。
所述的快速存储器文件的处理方法,其中所述日志方式和先备份、再擦写的操作主要包括读文件、写文件、关闭文件、删除文件、系统启动恢复等操作。
所述的快速存储器文件的处理方法,其所述的读文件操作的步骤如下首先察看日志簇中是否有本文件中的数据;如果有,优先从日志簇中读取数据;如果日志簇中的数据不足,空缺的数据从实际文件中读出。
所述的快速存储器文件的处理方法,其所述的写文件操作的步骤如下首先判断文件是否已经修改过,如果没有,则更新目录项,把文件长度修改为全1,然后执行实际写入;如果日志区中还没有本文件的记录,则在日志簇开始的打开文件信息中增加一项日志,然后把日志记录增加到日志簇中。
所述的快速存储器文件的处理方法,其所述的文件访问中在关闭文件时,如果本文件的内容在日志簇中有备份,则要把口志簇中的所有数据更新到实际位置,并在关闭时填写相关属性。
所述的快速存储器文件的处理方法,其所述的删除文件操作的步骤如下首先标志此文件的目录项为无效;然后标志所有数据块为无效状态;最后把目录项中指向第一个数据块的索引清0。所述的快速存储器文件的处理方法,其所述的系统启动恢复时的步骤如下如果备份区有有效数据,则恢复到应有位置;
如果有文件有效并且长度为全1,则认为这个文件还没有关闭,计算文件长度,并执行关闭操作;如果目录属性无效,但是指向第一个数据块的索引不为0,则说明文件删除过程没有完成,执行删除。
综上所述,本发明给出的一种快速存储器文件的处理方法,具有如下有益效果1、充分考虑到Flash擦写次数有限的特性,以减少Flash损坏的可能;2、保证系统异常后,例如掉电,系统重新启动后,其数据的一致性。
3、减少了写操作所消耗的时间。
我们提供一种快速存储器文件的处理方法,该方法主要包括建立文件分配表,实现文件的组织和操作访问。
考虑到flash的访问特性,如果把文件分配表放在连续的位置,由于文件属性的变化而修改文件分配表,导致文件分配表区域频繁的擦写;可能会导致文件分配表所在区域的损坏。为避免连续存放的文件分配表可能引起Flash的损坏,因此考虑将文件分配表分散在系统各处存放。具体方法为FLASH文件系统中每次分配的最小区域为Flash_Min KBytes(缺省为1K)。
假设flash的最小擦除块的大小为Min KBytes,称为簇,则在该簇上面建立本簇的文件分配表。整个FLASH按照最小擦除块的大小分成簇,在每簇上分成最小区域,在每个簇上的起始若干个字节,存放块分配表,记录该簇的所有块的分配状态。如

图1所示,每个块分配表的大小由flash的最小可擦除块(簇)大小决定。对于最小可擦除块为Min KBytes的flash,每个区域需要大约8*Min Bytes的空间存储块分配表。以目前8070产品的flash为例,其flash的最小可擦除(簇)大小为128KBytes,每次分配最小单元为1K,每簇共分为128块,每块需要用8个字节来描述块的分配状态;则每个簇中块分配表占8*128 Bytes=1K Bytes;目前产品中有大约4M(以后可能会扩充为8M)的空间,块分配表大概要占去1*32=32 KBytes的空间。
文件的组织方式采用链表形式,文件的类型有两种,一种是目录文件,一种是块分配表的链表文件,目录文件的内容采用记录组织方式。
文件的操作访问的基本方式如下(1)采用先备份,再擦除的操作在上述的flash簇的划分中,特定一簇(最后一簇)为备份簇。若需要有擦除操作时,先将整个需要修改的簇拷贝到备份簇,备份簇拷贝成功后,修改备份簇与修改簇的新旧及有效标志,然后对修改簇进行擦除操作,并根据修改要求(修改文件内容或修改文件属性)将备份簇的内容修改到修改簇中;更新备份簇与修改簇的新旧及有效标志。先备份再擦除的方法主要是为了解决擦除过程异常,原有的数据毁坏而带来的不良影响。若在从修改簇到备份簇的过程中,系统异常(掉电),原有的数据并未破坏,对系统没有不良影响;若修改到备份簇后,未向修改簇写回时系统掉电,对原有的数据也未破坏;向修改簇写回过程中掉电,此时,原有的数据保存在备份簇中,系统重新启动后,将判断特定标志,确定备份簇中的数据是否有效,从而完成从备份簇写回修改簇的工作,并在完成后,修改备份簇与修改簇的新旧及有效标志。
(2)采用日志和先备份、再擦除的操作FLASH的一个特定簇作为日志簇,记录对已经打开文件的修改过程。
每个修改过原有内容的打开文件,都要在日志簇开始部分记录下来,然后对该文件的读写操作以日志的形式记录在该簇上,其格式见图2。
若该簇块已满或已经不能存放当前所做的修改,就更新到实际应该保存的位置,更新方式采用先备份后擦除的操作。
由于本发明的文件分配表是分散存放在Flash的最小可擦除块即“簇”上,下面就flash文件在日志和先备份、再擦除的操作方式访问的流程分别说明如下(1)打开文件打开文件操作只在内存中建立文件句柄和文件地址之间的映射表。
(2)创建文件创建文件的时候在所在目录文件中分配新的目录项,然后填写创建时间(也可以在关闭的时候填写),以及其它属性信息。但是文件长度不填写(保持全1状态),并建立文件句柄和打开文件之间的映射关系,并记录文件已经修改。
(3)读文件读文件首先察看日志簇中是否有本文件中的数据;如果有,优先从日志簇中读取数据,如果日志簇中的数据不足,空缺的数据从实际文件中读出。
(4)写文件写操作首先判断文件是否已经修改过;如果没有,则更新目录项,把文件长度修改为全1,然后执行实际写入(如果是修改写,则把数据写入日志区)。如果日志区中还没有本文件的记录,则在日志簇开始的打开文件信息中增加一项(这一项记录本文件的第一个数据块的分配表号——由于flash中不会同时打开太多的文件被,采用遍历方式查找文件也是可以接受的,第一次修改日志记录的地址等),然后把日志记录增加到日志簇中。
(4)关闭文件如果本文件的内容在日志簇中有备份,则要把日志簇中的所有数据更新到实际位置(包括其他文件)。由于文件的访问(实际上就是写操作)次数比较少,这样操作不会对flash的寿命带来致命打击。
(5)文件属性信息的修改这个问题的处理同样基于flash中没有太多的文件。每次修改文件属性信息(或者关闭文件,或者直接调用接口修改文件属性,但是后者次数有限),都不直接清除原来的文件属性信息,而是直接在目录文件中增加新的记录,并修改原来记录的有效标志位(标识为无效)。
(6)删除文件删除文件的时候首先标志此文件的目录项为无效,然后标志所有数据块为无效状态,最后把目录项中指向第一个数据块的索引清0(索引为0的数据块是不可能分配给文件的)。
(7)系统启动的恢复恢复过程主要需要作一下操作如果备份区有有效数据,则恢复到应有位置;如果有文件有效并且长度为全1,则认为这个文件还没有关闭,计算文件长度,并执行关闭操作;如果目录属性无效,但是指向第一个数据块的索引不为0,则说明文件删除过程没有完成,执行删除(这时候需要进行遍历,清除所有的无效数据块)。
以上所述,仅为本发明的较佳实施例而已,并不能用来限定本发明所实施的范围。凡是依本发明申请专利范围所作的均等变化与修饰,皆应仍属于本发明权力要求所涵盖的范围内。
权利要求
1.一种快速存储器文件的处理方法,主要包括文件的组织和文件的读写操作,其特征在于,该方法还包括建立文件分配表,将文件分配表分散存放在快速存储器的最小擦除块上进行文件的组织,文件的组织方式采用链表形式;实现文件的操作访问,文件操作访问的方式包括采用先备份、再擦除的操作;或采用日志和先备份、再擦除的操作。
2.如权利要求1所述的快速存储器文件的处理方法,其特征在于,所述的建立文件分配表是指将整个FLASH按照最小擦除块的大小分成簇,在每簇上分成最小区域,在每个簇的起始若干个字节,存放块分配表,记录该簇的所有块的分配状态。
3.如权利要求1所述的快速存储器文件的处理方法,其特征在于在所述的先备份、再擦除的操作,对flash簇的划分中,特定一簇为备份簇,若需要有擦除操作时,先将整个需要修改的簇拷贝到备份簇,备份簇拷贝成功后,修改备份簇与修改簇的新旧及有效标志,然后对修改簇进行擦除操作,并根据修改要求将备份簇的内容修改到修改簇中;更新备份簇与修改簇的新旧及有效标志。
4.如权利要求3所述的快速存储器文件的处理方法,其特征在于所述的特定一簇为Flash划分中的最后一簇。
5.如权利要求1所述的快速存储器文件的处理方法,其特征在于,所述日志方式和先备份、再擦写的操作中,将FLASH的一个特定簇作为日志簇,记录对已经打开文件的修改过程。
6.如权利要求1所述的快速存储器文件的处理方法,其特征在于,所述日志和先备份、再擦写的操作方式主要包括读文件、写文件、关闭文件、删除文件、系统启动恢复等操作。
7.如权利要求6所述的快速存储器文件的处理方法,其特征在于所述的读文件操作的步骤如下首先察看日志簇中是否有本文件中的数据;如果有,优先从日志簇中读取数据;如果日志簇中的数据不足,空缺的数据从实际文件中读出。
8.如权利要求6所述的快速存储器文件的处理方法,其特征在于所述的写文件操作的步骤如下首先判断文件是否已经修改过,如果没有,则更新目录项,把文件长度修改为全1,然后执行实际写入;如果日志区中还没有本文件的记录,则在日志簇开始的打开文件信息中增加一项日志,然后把日志记录增加到日志簇中。
9.如权利要求6所述的快速存储器文件的处理方法,其特征在于所述的文件访问中在关闭文件时,如果本文件的内容在日志簇中有备份,则要把日志簇中的所有数据更新到实际位置,并在关闭时填写相关属性。
10.如权利要求6所述的快速存储器文件的处理方法,其特征在于所述的删除文件操作的步骤如下首先标志此文件的目录项为无效;然后标志所有数据块为无效状态;最后把目录项中指向第一个数据块的索引清0。
11.如权利要求6所述的快速存储器文件的处理方法,其特征在于所述的系统启动恢复时的步骤如下如果备份区有有效数据,则恢复到应有位置;如果有文件有效并且长度为全1,则认为这个文件还没有关闭,计算文件长度,并执行关闭操作;如果目录属性无效,但是指向第一个数据块的索引不为0,则说明文件删除过程没有完成,执行删除。
全文摘要
一种快速存储器文件的处理方法,该方法主要包括建立文件分配表,将其分散在Flash文件系统的各处存放;对文件的组织方式采用链表形式;对文件的操作访问的方式包括采用先备份,再擦除的操作,以及采用日志和先备份、再擦除的操作,利用该方法用户可以通过文件操作实现产品升级和配置的更改,且可以保存多个版本的系统程序以及多个配置文件,该方法充分考虑到Flash擦写次数有限的特性,并保证系统异常重新启动后,数据的一致性。
文档编号G06F12/08GK1400531SQ0112467
公开日2003年3月5日 申请日期2001年8月3日 优先权日2001年8月3日
发明者陈杰, 李莉, 范志强 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1