书签 分享 收藏 举报 版权申诉 / 10

一种可延长FLASH使用寿命的数据存储方法.pdf

  • 上传人:e2
  • 文档编号:1498273
  • 上传时间:2018-06-18
  • 格式:PDF
  • 页数:10
  • 大小:396.33KB
  • 摘要
    申请专利号:

    CN201110259657.6

    申请日:

    2011.09.05

    公开号:

    CN102981977A

    公开日:

    2013.03.20

    当前法律状态:

    公开

    有效性:

    审中

    法律详情:

    发明专利申请公开后的视为撤回IPC(主分类):G06F12/08申请公开日:20130320|||公开

    IPC分类号:

    G06F12/08; G06F11/14

    主分类号:

    G06F12/08

    申请人:

    上海华魏光纤传感技术有限公司

    发明人:

    黄正

    地址:

    201700 上海市青浦区白鹤镇赵中路31弄2号云峰大楼701室B

    优先权:

    专利代理机构:

    代理人:

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种可延长FLASH使用寿命的数据存储方法,所述数据存储方法是利用FLASH、FRAM及SDRAM三部分组合成的数据存储系统完成的,该方法主要包括系统初始化、数据添加、数据转移及数据恢复四个步骤。采用本发明所述的技术方案优点在于:采用数据转移操作,不仅提高了数据的保存速度,更重要的是大大降低了对FLASH的擦除次数,从而尽可能地延长了FLASH的使用寿命;同时,数据转移操作采用先转储,再转移的步骤,保证了在数据转移操作过程中,即使系统发生异常故障,也能保证系统恢复到数据转移操作前的状态,达到了数据安全可靠操作的目的。

    权利要求书

    权利要求书一种可延长FLASH使用寿命的数据存储方法,所述数据存储方法是利用FLASH、FRAM及SDRAM三部分组合成的数据存储系统完成的,其特征在于:该方法包括以下四个步骤:
    步骤一:系统初始化
    在系统设计时,把FLASH划分成如特征数据区、记录数据区、操作系统区、数据库区等多个空间,每个区包括至少一个SECTOR;
    进一步的,对FLASH所有的SECTOR进行编号,特别地,保留一个SECTOR,用来作为数据转储(数据备份)区,以进行数据转储(数据备份)操作;
    进一步的,预留出能满足系统设计指标中的记录保存时间的n个SECTOR作为记录数据保存区,编号从j+1开始到j+n结束;
    进一步的,把记录数据区的每个SECTOR都划分为Y个记录数据块,依次编号为1,2,...,Y‑1,Y;
    在FRAM中开辟一个记录数据暂存区,一个数据转储操作的标记区及一个数据转移操作的标记区;
    进一步的,FRAM中记录数据暂存区的空间大小为记录数据区的一个SECTOR中的一个记录数据块的大小;
    进一步的,数据转储操作的标记区存放数据转储标记A及发生转储操作的FLASH的SECTOR编号两个字节型的数据;
    进一步的,数据转移操作的标记区存放数据转移标记B、记录数据块的编号及发生转移操作的FLASH的SECTOR编号三个字节型数据;
    步骤二:数据添加
    系统把新记录写入到FRAM的记录数据暂存区的尾部,形成旧记录在前新记录在后的顺序,把记录逐条保存起来,直至将FRAM中的记录数据暂存区写满;
    步骤三:数据转移
    当FRAM中的记录数据暂存区写满之后,就需要做数据转移操作,把FRAM中的记录数据转移到FLASH中,具体操作步骤细化如下:
    第一步,读取FRAM中的数据转移操作的标记B、记录数据块编号i(1≤i≤Y)、FLASH的SECTOR编号为k(j+1≤k≤j+n);
    第二步,设置FRAM中的数据转储标记A=0,设置FLASH中SECTOR编号=k;
    第三步,擦除FLASH中用于数据备份的SECTOR;
    第四步,读取FLASH中编号为k的SECTOR中的全部数据到SDRAM的数据暂存区,然后把这部分数据写入FLASH中用于数据备份的SECTOR中,并做校验,这一步叫做转储;
    第五步,如果转储成功,则设置FRAM中的转储标记A=i,如果系统发生异常,则FRAM中的转储标记不会改变仍为A=0;
    第六步,设置FRAM中的数据转移操作标记B=0;
    第七步,擦除FLASH中编号为k的SECTOR;
    第八步,把FRAM中的记录数据块读出,并添加到SDRAM中由上述第四步得到的数据块的尾部,然后把这个数据块写回编号为k的SECTOR中,并作校验;
    第九步,如果第八步写入成功,设置FRAM中的数据转移操作标记B=1;
    第十步,经过第九步之后,再根据第一步得到的i判断编号为k的SECTOR是否写满;如果尚未写满,则修改FRAM中数据转移操作标记的记录数据块编号为i+1,而SECTOR编号不变仍为k;如果已经写满,则记录数据块编号改为1(即下次从第一个数据块开始写),而设置SECTOR编号=k+1(即下次从下一个SECTOR写入);如果(k+1)超出FLASH的记录数据区(即k+1>j+n),则设置SECTOR编号=j+1(即循环回到记录数据区起始位置);
    第十一步,清空FRAM中的记录数据暂存区,新的记录又可以从头写入这个空间;
    步骤四:数据恢复
    若系统在上述步骤三中的第四步或第八步操作时发生异常故障,导致数据丢失,则数据恢复步骤如下:
    第一步,读取备份SECTOR中的数据到SDRAM中,获得备份数据,此时FRAM中的转储标记没有改变,即A=1,SECTOR编号=k,但B=0,表明数据转移没有成功;
    第二步,擦除FLASH中编号为k的SECTOR;
    第三步,把SDRAM中第一步获取的备份数据写入FLASH中编号为k的SECTOR中,并做校验;
    第四步,如果第三步写入成功,则设置FRAM中的转移标记,即B=1,转到第五步,如果系统发生异常,则FRAM中的标记A=1,B=0,SECTOR编号=k,不会改变;
    第五步,按数据转移操作方法把FRAM中的记录数据转移到FASLH中。

    说明书

    说明书一种可延长FLASH使用寿命的数据存储方法
    技术领域
    本发明涉及数据存储方法技术领域,尤其涉及一种可延长FLASH使用寿命的数据存储方法。
    背景技术
    嵌入式系统具有功耗低、便携等特点,常常用于各种工业产品及民用产品中,如各种工业生产、消防和安防系统中都用到嵌入式系统。嵌入式系统通常脱离个人电脑或工业主机(如工控机),自成独立系统。由于尺寸要求等原因,嵌入式系统的存储空间往往有限,又因为嵌入式系统常常应用于各种安全性要求比较高的场合,因此该系统的数据操作可靠性变得十分重要。
    以嵌入式考勤系统或门禁系统为例,当用户考勤时,如果考勤成功,则系统产生考勤成功记录,并把考勤记录存储于FLASH等非易失性存储器中,方便日后查询和考核。另一个例子是工业安防系统,如分布式光纤振动测量系统,系统在线监测时,当振动事件发生后,系统通过模式识别算法判断,如果判定事件为某一类特定事件,则产生报警记录,并把报警记录保存于FLASH等非易失性存储器中,便于将来查询。
    上述两个嵌入式系统代表了此类系统的应用特性,即它们都频繁产生记录数据,并且记录数据都需要保存于FLASH等非易失性存储器中,而且需要保存相当长一段时间(比如3个月)。尽管单个记录数据量小(只有几个到几十个字节),但由于长时间保存,因此累积的数据量也比较大。
    FLASH存储器是一种容量大且价格低廉的非易失性存储器,因此,嵌入式系统中通常采用FLASH存储器来保存数据,用来存储数据库、特征数据、操作系统程序及系统产生的各种实时记录等需要掉电保存的数据。FLASH一般都分为很多个SECTOR,每个SECTOR包括一定数量的存储单元。对于大容量的FLASH,还分为不同的BANK,每个BANK还包括一定数目的SECTOR。FLASH的擦除操作一般都是以SECTOR、BANK或者是整片FLASH为单位的。在对FLASH进行写操作的时候,每个B工T可以通过编程由1编为0,但不可以由0修改为1。为了保证写操作的正确性,在执行写操作前,都要执行擦除操作。擦除操作会把FLASH的一个SECTOR、一个BANK或者是整片FLASH的值都修改为0xFF。这样写操作才可以正确完成。
    但是FLASH有其自身缺陷,一是FLASH有擦除次数(即寿命)限制,一般是10万次擦除操作,所以不宜对FLASH进行频繁写操作。二是FLASH写操作速度很慢,因为写操作前必须先擦除,然后再写,最后验证,整个过程速度很慢,因此对于频繁产生的实时数据,实时将之保存于FLASH也不太适合。
    FRAM是一种比FLASH更加可靠的存储器,它的读写速度很快,而且几乎没有擦除次数限制。但是其容量比较小,因而只适合存储一些数据量比较小的数据,比如几K的数据量。当系统必须频繁或者快速地写入数据时,上述这些优点对于写操作密集型应用的系统来说非常适合,如考勤或报警记录的保存正属于这种应用。
    SDRAM(或者DDR)是一种大容量高速度的存储器,适合用来运行操作系统、算法处理等需要高速运行的操作,但SDRAM(或者DDR)是易失性存储器,即系统掉电后其内部数据丢失无法恢复。因此,一般系统上电后,先把操作系统由FLASH自动导入到SDRAM中,然后自动运行操作系统。
    一般的记录保存方法是:系统产生一条记录后,把这条记录写入FLASH(添加记录)中。但是,如前所述,每写一次FLASH,都需要先把要写入的SECTOR擦除后方可写入。这种方法的缺陷是FLASH频繁被擦除,其使用寿命必然大大缩短;而且,擦除操作使得SECTOR里面的旧的数据有被丢失的危险。
    发明内容
    为了解决现有技术中存在的问题,本发明提供一种可延长FLASH使用寿命的数据存储方法,既能实时存储记录数据,又可长期保存大量记录数据,同时又可大大延长FLASH的使用寿命。
    为了达到上述目的,本发明采用一种可延长FLASH使用寿命的数据存储方法,所述数据存储方法是利用FLASH、FRAM及SDRAM三部分组合成的数据存储系统完成的,该方法包括以下步骤:
    步骤一:系统初始化
    在系统设计时,把FLASH划分成如特征数据区、记录数据区、操作系统区、数据库区等多个空间,每个区包括至少一个SECTOR;
    进一步的,对FLASH所有的SECTOR进行编号,特别地,保留一个SECTOR,用来作为数据转储(数据备份)区,以进行数据转储(数据备份)操作;
    进一步的,预留出能满足系统设计指标中的记录保存时间的n个SECTOR作为记录数据保存区,编号从j+1开始到j+n结束;
    进一步的,把记录数据区的每个SECTOR都划分为Y个记录数据块,依次编号为1,2,...,Y‑1,Y;
    在FRAM中开辟一个记录数据暂存区,一个数据转储操作的标记区及一个数据转移操作的标记区;
    进一步的,FRAM中记录数据暂存区的空间大小为记录数据区的一个SECTOR中的一个记录数据块的大小;
    进一步的,数据转储操作的标记区存放数据转储标记A及发生转储操作的FLASH的SECTOR编号两个字节型的数据;
    进一步的,数据转移操作的标记区存放数据转移标记B、记录数据块的编号及发生转移操作的FLASH的SECTOR编号三个字节型数据;
    步骤二:数据添加
    系统把新记录写入到FRAM的记录数据暂存区的尾部,形成旧记录在前新记录在后的顺序,把记录逐条保存起来,直至将FRAM中的记录数据暂存区写满;
    步骤三:数据转移
    当FRAM中的记录数据暂存区写满之后,就需要做数据转移操作,把FRAM中的记录数据转移到FLASH中,具体操作步骤细化如下:
    第一步,读取FRAM中的数据转移操作的标记B、记录数据块编号i(1≤i≤Y)、FLASH的SECTOR编号为k(j+1≤k≤j+n);
    第二步,设置FRAM中的数据转储标记A=0,设置FLASH中SECTOR编号=k;
    第三步,擦除FLASH中用于数据备份的SECTOR;
    第四步,读取FLASH中编号为k的SECTOR中的全部数据到SDRAM的数据暂存区,然后把这部分数据写入FLASH中用于数据备份的SECTOR中,并做校验,这一步叫做转储;
    第五步,如果转储成功,则设置FRAM中的转储标记A=1,如果系统发生异常,则FRAM中的转储标记不会改变仍为A=0;
    第六步,设置FRAM中的数据转移操作标记B=0;
    第七步,擦除FLASH中编号为k的SECTOR;
    第八步,把FRAM中的记录数据块读出,并添加到SDRAM中由上述第四步得到的数据块的尾部,然后把这个数据块写回编号为k的SECTOR中,并作校验;
    第九步,如果第八步写入成功,设置FRAM中的数据转移操作标记B=1;
    第十步,经过第九步之后,再根据第一步得到的i判断编号为k的SECTOR是否写满;如果尚未写满,则修改FRAM中数据转移操作标记的记录数据块编号为i+1,而SECTOR编号不变仍为k;如果已经写满,则记录数据块编号改为1(即下次从第一个数据块开始写),而设置SECTOR编号=k+1(即下次从下一个SECTOR写入);如果(k+1)超出FLASH的记录数据区(即k+1>j+n),则设置SECTOR编号=j+1(即循环回到记录数据区起始位置);
    第十一步,清空FRAM中的记录数据暂存区,新的记录又可以从头写入这个空间;
    步骤四:数据恢复
    若系统在上述步骤三中的第四步或第八步操作时发生异常故障,导致数据丢失,则数据恢复步骤如下:
    第一步,读取备份SECTOR中的数据到SDRAM中,获得备份数据,此时FRAM中的转储标记没有改变,即A=1,SECTOR编号=k,但B=0,表明数据转移没有成功;
    第二步,擦除FLASH中编号为k的SECTOR;
    第三步,把SDRAM中第一步获取的备份数据写入FLASH中编号为k的SECTOR中,并做校验;
    第四步,如果第三步写入成功,则设置FRAM中的转移标记,即B=1,转到第五步,如果系统发生异常,则FRAM中的标记A=1,B=0,SECTOR编号=k,不会改变;
    第五步,按数据转移操作方法把FRAM中的记录数据转移到FASLH中。
    采用本发明所述的技术方案优点在于:采用数据转移操作,由于实时产生的记录保存在FRAM记录数据暂存区,只有暂存区记录满时,才把记录转移到FLASH中,这样操作不仅提高了数据的保存速度,更重要的是大大降低了对FLASH的写操作次数,也是减少了对FLASH的擦除次数,从而尽可能地延长了FLASH的使用寿命;同时,数据转移操作采用先转储,再转移的步骤,保证了在数据转移操作过程中,即使系统发生异常故障,也能保证系统恢复到数据转移操作前的状态,达到了数据安全可靠操作的目的。
    附图说明
    图1为本发明工作原理示意图。
    具体实施式
    下面结合附图进一步说明本发明的具体实施步骤。
    为了便于更加清晰描述所述方法,本发明以对嵌入式系统中记录数据操作为例。记录数据指的是考勤记录或报警记录,或相类似的数据,记录数据是系统在使用过程中实时产生的。例如考勤记录是在考勤过程中产生的,当考勤成功时,产生考勤成功记录,通常包括考勤人姓名(或流水号或工号)和考勤时间;而报警记录,通常是系统在使用过程中,发生事件引发报警(如火警,振动事件等),此时产生报警信息,通常包括发生事件的类型,发生时间和发生地点位置等。记录数据的特点是实时产生,有时频繁发生,数据量小(通常为几个字到几十个字节);但通常要求系统能保存一段时间的记录数据(考勤数据或报警信息),例如3个月等,方便日后考核或查询。尽管每条记录数据的数据量小,但由于要求系统能长时间保存,因此总的记录数据量有时候会很大。由于记录数据产生频繁,产生次数多等特点,因此需要频繁向存储器写入记录数据。
    如上所述,FLASH容量大但擦除次数有限,故不宜频繁写入(需要擦除),而FRAM没有擦除次数限制,可以频繁写入,但其容量小,不能存放大量数据。因此,利用FRAM读写速度快、没有擦除次数限制且可靠性高的特点以及FLASH容量大且价格低廉的特点,将二者组合成一个非易失性存储器系统。另外,采用SDRAM作为系统常规内存,用来运行操作系统,算法处理等需要高速运行的操作。本方法取三种存储器的优点,互相补充。
    一种可延长FLASH使用寿命的数据存储方法,所述数据存储方法是利用FLASH、FRAM及SDRAM三部分组合成的数据存储系统完成的,该方法包括以下步骤:
    步骤一:系统初始化
    在系统设计时,把FLASH空间划分成多个区,比如有特征数据区,记录数据区,操作系统区,数据库区等等,每个区包括至少一个SECTOR;进一步地,对FLASH所有的SECTOR进行编号,如FLASH一共有M个SECTOR,那么其SECTOR依次编号1,2...M;特别地,保留一个SECTOR,用来作为数据转储(数据备份)操作。所谓数据转储操作就是把数据从FLASH的一个SECTOR转存到另一个用于备份的SECTOR。转储操作是所述数据可靠操作方法的一个重要步骤。
    预留的FLASH记录数据空间,应该能满足不同应用场合下系统设计指标中的记录保存时间。如附图1所示,假设系统保留了n个SECTOR作为记录数据保存区,编号从j+1开始到j+n结束。
    在FRAM中开辟一个记录数据暂存区,其存储空间大小应合理设计(主要在系统设计时考虑)。假设此空间大小为T个字节(如T=1K),而FLASH每个SECTOR的大小为X个字节(如X=64K),假设Y=X/T,对Y取整数。那么把FLASH的记录数据空间的每个SECTOR都划分为Y个记录数据块,依次编号为1,2,...,Y‑1,Y。
    在FRAM中开辟一个区作为数据转储操作的标记,在此区内存放两个字节型的数据,即数据转储标记A和发生转储操作的FLASH的SECTOR编号。所谓数据转储,是指把数据从一个SECTOR搬移到另一个SECTOR,通常做数据备份用。
    在FRAM中再开辟一个区作为数据转移操作的标记,在此区内存放三个字节型数据,即数据转移标记B、记录数据块编号和发生转移操作的FLASH的SECTOR编号。所谓数据转移指的是当FRAM记录数据暂存区存满数据时,需要把这个记录数据块转移到FLASH中。转移操作是指把FRAM中的记录数据添加到FLASH中的记录数据区,添加是按顺序添加到记录数据区的尾部,也就是旧的记录数据在前新的记录数据在后,依次添加。那么系统必须记住,当前记录数据已经添加到了哪一个SECTOR中的哪一个记录数据块,因此需要知道当前SECTOR的编号和当前要写入的记录数据块在SECTOR中的编号。
    步骤二:数据添加
    数据添加是指当系统产生新的记录时,需要把新记录保存起来,并保留一段时间。具体做法是,系统把新记录写入到FRAM的记录数据暂存区的尾部,这样形成了旧记录在前新记录在后的顺序,把记录逐条保存起来,直至将FRAM中的记录数据暂存区写满。
    因为FRAM是非易失性存储器,即便系统掉电或发生其他异常后,记录依然能保存在FRAM存储器中。由于单条记录数据量小,而且产生频繁,故不宜直接把记录写入FLASH中,而是暂存在记录数据暂存区。
    步骤三:数据转移
    当FRAM中的记录数据暂存区写满之后,就需要做数据转移操作,把FRAM中的记录数据转移到FLASH中。具体操作步骤细化如下:
    第一步,读取FRAM中的数据转移操作的标记B,假设此时记录数据块编号为i(1≤i≤Y),FLASH的SECTOR编号为k(j+1≤k≤j+n);
    第二步,设置FRAM中的转储标记,其中设置A=0,设置FLASH中SECTOR编号=k;
    第三步,擦除FLASH中用于数据备份的SECTOR;
    第四步,读取FLASH中编号为k的SECTOR中的全部数据到SDRAM的数据暂存区,然后把这部分数据写入FLASH中用于数据备份的SECTOR中,并做校验,这一步叫做转储;
    第五步,如果转储成功,则设置FRAM中的转储标记A=1;如果系统发生异常,则FRAM中的转储标记不会改变仍为A=0;
    第六步,设置FRAM中的数据转移操作的标记B=0;
    第七步,擦除FLASH中编号为k的SECTOR;
    第八步,把FRAM中的记录数据块读出,并添加到SDRAM中由第四步得到的数据块(一个SECTOR大小)的尾部(即旧记录数据块在前,新的记录数据块在后,依次添加到FLASH中),然后把这个数据块(一个SECTOR大小)写回编号为k的SECTOR中,并作校验;
    第九步,如果第八步写入成功,设置FRAM中的数据转移操作的标记B=1;
    第十步,经过第九步之后,再根据第一步得到的i判断编号为k的SECTOR是否写满;如果尚未写满,则修改FRAM中数据转移操作标记的记录数据块编号为i+1,而SECTOR编号不变仍为k;如果已经写满,则记录数据块编号改为1(即下次从第一个数据块开始写),而设置SECTOR编号=k+1(即下次从下一个SECTOR写入);如果(k+1)超出FLASH的记录数据区(即k+1>j+n),则设置SECTOR编号=j+1(即循环回到记录数据区起始位置);
    第十一步,清空FRAM中的记录数据暂存区,新的记录又可以从头写入这个空间;
    第十步实现了记录数据的循环存储,即当FLASH记录数据区存满记录时,下一次记录数据转移操作会把FRAM中的记录数据块写入到FLASH中记录数据区的最开始的位置,把最老的记录覆盖掉,这样,FLASH中始终保存了最新的记录数据。
    当用户查询记录时,系统把FLASH中的所有记录以及FRAM中的记录都都读入内存中,供系统查询算法调用。
    所述步骤三由于把记录数据暂时存储在FRAM中,只有等到FRAM中的记录数据区写满之后再把整个记录数据块转移到FLASH中,因此大大降低了对FLASH的写操作(同时也是减少了对FLASH的擦除),从而提高了FLASH的使用寿命。
    步骤四:数据恢复
    所述方法采用数据转储操作,实现了数据可靠存储,不会出现由于数据转移时擦除FLASH而导致旧的记录丢失。例如,当数据转移第四步操作时系统发生异常故障,导致记录数据备份不成功,此时系统复位或重新上电后,读取FRAM中的转储标记,得到的结果是A=0,表明数据备份不成功,而此时编号为k的SECTOR尚未被擦除,FRAM中的旧记录数据也尚未被清空,所以旧的记录数据是安全的。如果所述数据转移操作第八步做数据转移操作时系统发生异常故障,这将导致编号为k的SECTOR内的数据丢失,但是由于在这之前数据已经备份过了,系统复位或重新上电后,就可以从备份的SECTOR读出数据,恢复系统做转移操作前的状态。数据恢复步骤如下:
    第一步,读取备份SECTOR的数据到SDRAM中,获得备份数据。此时FRAM中的转储标记没有改变,即A=1,SECTOR编号=k。但B=0,表明数据转移不成功。
    第二步,擦除FLASH中编号为k的SECTOR。
    第三步,把SDRAM中第一步获取的备份数据写入FLASH中编号为k的SECTOR中,并做校验。
    第四步,如果第三步写入成功,则设置FRAM中的转移标记,即B=1,转到第五步。如果系统发生异常,则FRAM中的标记A=1,B=0,SECTOR编号=k,不会改变。
    第五步,按数据转移操作把FRAM中的记录数据转移到FASLH中。
    所述数据转移操作,由于实时产生的记录保存在FRAM记录数据暂存区,只有暂存区记录满时,才把记录转移到FLASH中,这样操作不仅提高了记录的保存的速度,更重要的是大大减少了FLASH擦除的次数,从而尽可能地延长了FLASH的使用寿命;同时,数据转移操作采用先转储,再转移的步骤,保证了在数据转移操作过程中,即使系统发生异常故障,也能保证系统能恢复到数据转移操作前的状态,达到了数据安全可靠操作的目的。

    关 键  词:
    一种 可延长 FLASH 使用寿命 数据 存储 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种可延长FLASH使用寿命的数据存储方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1498273.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1