一种利用Flash存储器进行动态数据存储的方法技术

技术编号:3870223 阅读:214 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种利用Flash存储器进行动态数据存储的方法,其将所述Flash存储器的至少一个区块设为动态数据存储区,将所述动态数据存储区划分为一基础信息区和一日志记录区,所述基础信息区用于存储对数据修改前的数据,所述日志记录区用于记录对数据进行的修改操作日志,所述操作日志记录了对数据内容的修改信息。本发明专利技术的方法能提高Flash存储器使用寿命、工作稳定性及安全性。

【技术实现步骤摘要】

本专利技术涉及一种数据存储方法,特别是涉及。
技术介绍
Flash和E2PR0M是嵌入式设备最常用的断电时的信息存储器。由于驱动电路简 单,在嵌入式系统中所使用的Flash基本上都是NOR型Flash。NOR Flash有着容量较大 (2M-64M)的优点,但也存在着使用寿命较短(可擦写10万次)、擦写速度慢(擦写速度大 约2s/64K)及要写入数据必须先进行擦除等缺点。而E2PR0M有着使用寿命长(可擦写100 万次),擦写速度快(几十毫秒级别)的优点,但有着容量较小(几K到几十K),单位容量 价格相对比较高的缺点。由于Flash和E2PR0M物理特性有着很大差异,两者所使用的领域是不同的,Flash 一般用来存储程序代码,和不需要频繁擦除更新的数据(如系统基本配置信息等);而 E2PR0M则用来存储需要频繁擦除的动态数据,如记录用户每次操作时节目各状态信息。在 嵌入式系统中为了简化电路设计,降低硬件成本,常用Flash替代E2PR0M来存储动态数据。现有技术用替代E2PR0M存储动态数据时,常用的方法如下从Flash的某区块(Block)中开辟一个空间(一般为4-16K)来做动态数据存储 区,并建立相应大小的内存作为动态数据存储区的内存映像;在设备初始化过程把动态数据存储区的数据读出到内存映像中;建立一个后台任务来进行动态数据存储区的擦和写操作。当需用操作修改动态数据存储区的某位置内容时,先修改内存映像中相应位置的 内容;再发出消息让后台任务把动态数据存储区所在的Flash某区数据全部擦除,再把内 存映像中全部内容重新写入到动态数据存储区;当需要读动态数据存储区的数据时,直接读内存映像相应位置数据就可以。利用后台擦写,现有技术比较好解决了 Flash替代E2PR0M来存储动态数据时的操 作速度问题。然而,现有技术有着以下缺陷1.大大降低了 Flash的使用寿命。要把某比特位” 1”改写为” 0”时可以直接写, 但要把某比特位” 0”改写为” 1”就必须进行先擦再写的操作,而Flash的擦除是以区块 (block)为单位的,Flash的寿命也是取决于擦除次数。频繁的进行Flash擦除,显然大大 降低了设备的使用寿命。2.大大降低了设备工作稳定性和安全性。由于在修改信息时必须先擦除再写,而 擦除过程是最主要的耗时过程,占了整个信息修改过程的95%左右时间。擦一个64K的 Block需要大约1. 5秒,而写一个64K的Block不到50毫秒。这样在修改信息过程中如果 突然断电,很大的可能就是还处于擦除过程中,断电后内存映像的信息全部丢失,在Flash 中也由于擦除过程丢失了全部信息。这样导致了所有动态数据存储区中的信息丢失而且无法恢复,使得设置无法正常进行工作。除此之外,由于Flash的擦除过程需要CPU发出大量 相应的驱动时序来进行,频繁的擦除过程大大占用了 CPU资源进而可能会影响其它系统工 作,降低了整个系统的运行效率和安全性。
技术实现思路
本专利技术的目的是提供,其能提高 Flash存储器使用寿命、工作稳定性及安全性。为解决本专利技术的技术问题,本专利技术公开一种利用Flash存储器进行动态数据存 储的方法,其将所述Flash存储器的至少一个区块设为动态数据存储区,将所述动态数据 存储区划分为一基础信息区和一日志记录区,所述基础信息区用于存储对数据修改前的数 据,所述日志记录区用于记录对数据进行的修改操作,所述操作日志记录了对数据内容的 修改信息。作为上述方法的一种改进,所述Flash存储区设有两动态数据存储区,所述两动 态数据存储区互为镜像。相较于现有技术,本专利技术的方法通过一次擦除,多次写入,使得擦除一次后可进行 成百上千次的写入操作,大大提高了 Flash的使用寿命;而且每次修改信息时,只需要写 入,速度快,降低了 CPU的占用率,提高了整个系统性能;同时,采用了双动态数据存储区 建立数据镜像的办法来实现恢复因断电丢失的数据的功能,提高了重建过程中的数据安全 性。附图说明图1是系统开机建立基础信息区以及数据检测恢复的流程图。图2是建立基础信息区和日志记录区的流程图。图3是系统修改动态数据存储区的程序流程图。具体实施例方式分析Flash工作原理可知,在对block擦除过程实际是一个对该Block存储空间 所有位内容置为“ 1 ”的过程。擦除完成后所有位都为“ 1 ”,这时可以象操作内存一样直接把 任意位置内容置为“0”;在实际应用中,Flash —个区块的大小一般为64K,而所需用来存储 动态数据的空间的大小一般不超过32K ;每次需要修改的数据内容的大小也就是几个到几 十个字节。这样就可以把每次修改操作象记日志一样记录下来,每次记录的只是需要修改 的内容。本专利技术中,利用Flash替代E2PR0M(假设大小为32K)进行动态数据存储的方法 为先确定Flash中2个大小为64K的区块分别为主动态数据存储区和从动态数据存储区, 每个动态数据存储器划分前32K为动态数据存储区的基础信息区,而后32K为动态数据存 储区的操作日志记录区。基础信息区用于存储对数据进行操作前的原始数据,而操作日志 记录区则用于记录对此原始数据进行的修改操作日志,即被修改的改的内容,是以日志的 形式记录在日志区。该日志格式包括位置偏移、数据长度及数据内容及数据日志动作版本。 在下一次初始化时,系统可根据基础信息区的原始数据及日志记录区的操作日志计算出当前的数据。 请参阅图1,系统开机建立基础信息区及数据检测恢复的流程为先建立32K的内 存映像区;读取主动态数据存储区的最前标志位和最后标志位并判断该最前标志位和最后 标志位是否是有效状态,从而判断主动态数据存储区的数据是否有效;若主动态数据存储 区的数据无效,则继续读取从动态数据存储区的相应标志位进行判断,若判断的结果为否, 则说明该系统从未使用过,按默认系统设置初始化内存映像区,若判断的结果为是,则把从 动态数据存储区的内容复制到主动态数据存储区,进行下一步操作;若主动态数据存储区 的数据有效,则将主动态数据存储区中基础信息区的内容复制到内存映像区,并遍历整个 日志记录区,按照时间先后顺序根据操作日志信息在内存映像中依此操作修改数据已得到 最后状态的数据内容;最后调用基础信息区和日志记录区建立流程,并将内存映像中得到 的最后状态的数据内容写入基础信息区。请参阅图2,基础信息区和日志记录区的建立流程为擦除动态数据存储区的整 个区;写入动态数据存储区最前标志位,以标识动态数据存储区的起始位置;把内存映像 区中的数据写入到基础信息区;写入动态数据存储区最后标志位;设置日志记录区当前可 写入位置为日志记录区的起始位置。如此设置完成后,即可建立动态数据存储区的建立基 础信息区及日志记录区。请参阅图3,系统对动态存储区的数据进行修改的过程为先修改内存映像区相 应位置的内容;获得所修改内容的位置偏移、数据长度及数据内容等信息;根据所修改内 容的位置偏移、数据长度及数据内容等信息生成一个操作日志信息;获得日志记录区当前 可写入位置和剩余空间大小等信息并据此判断日志记录区是否有足够的空间来写入该操 作日志信息;若是,则向日志记录区写入该操作日志信息;若否,则调用基础信息区和日志 记录区建立流程,本文档来自技高网
...

【技术保护点】
一种利用Flash存储器进行动态数据存储的方法,其特征在于,将所述Flash存储器的至少一个区块设为动态数据存储区,将所述动态数据存储区划分为一基础信息区和一日志记录区,所述基础信息区用于存储对数据修改前的数据,所述日志记录区用于记录对数据进行的操作日志,所述操作日志记录了对数据内容的修改信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:彭文剑
申请(专利权)人:康佳集团股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利