本发明专利技术公开了一种可延长FLASH使用寿命的数据存储方法,所述数据存储方法是利用FLASH、FRAM及SDRAM三部分组合成的数据存储系统完成的,该方法主要包括系统初始化、数据添加、数据转移及数据恢复四个步骤。采用本发明专利技术所述的技术方案优点在于:采用数据转移操作,不仅提高了数据的保存速度,更重要的是大大降低了对FLASH的擦除次数,从而尽可能地延长了FLASH的使用寿命;同时,数据转移操作采用先转储,再转移的步骤,保证了在数据转移操作过程中,即使系统发生异常故障,也能保证系统恢复到数据转移操作前的状态,达到了数据安全可靠操作的目的。
【技术实现步骤摘要】
本专利技术涉及数据存储方法
,尤其涉及一种可延长FLASH使用寿命的数据存储方法。
技术介绍
嵌入式系统具有功耗低、便携等特点,常常用于各种工业产品及民用产品中,如各种工业生产、消防和安防系统中都用到嵌入式系统。嵌入式系统通常脱离个人电脑或工业主机(如工控机),自成独立系统。由于尺寸要求等原因,嵌入式系统的存储空间往往有限,又因为嵌入式系统常常应用于各种安全性要求比较高的场合,因此该系统的数据操作可靠性变得十分重要。以嵌入式考勤系统或门禁系统为例,当用户考勤时,如果考勤成功,则系统产生考勤成功记录,并把考勤记录存储于FLASH等非易失性存储器中,方便日后查询和考核。另一个例子是工业安防系统,如分布式光纤振动测量系统,系统在线监测时,当振动事件发生后,系统通过模式识别算法判断,如果判定事件为某一类特定事件,则产生报警记录,并把报警记录保存于FLASH等非易失性存储器中,便于将来查询。上述两个嵌入式系统代表了此类系统的应用特性,即它们都频繁产生记录数据,并且记录数据都需要保存于FLASH等非易失性存储器中,而且需要保存相当长一段时间(比如3个月)。尽管单个记录数据量小(只有几个到几十个字节),但由于长时间保存,因此累积的数据量也比较大。FLASH存储器是一种容量大且价格低廉的非易失性存储器,因此,嵌入式系统中通常采用FLASH存储器来保存数据,用来存储数据库、特征数据、操作系统程序及系统产生的各种实时记录等需要掉电保存的数据。FLASH—般都分为很多个SECTOR,每个SECTOR包括一定数量的存储单元。对于大容量的FLASH,还分为不同的BANK,每个BANK还包括一定数目的SECTOR。FLASH的擦除操作一般都是以SECT0R、BANK或者是整片FLASH为单位的。在对FLASH进行写操作的时候,每个B工T可以通过编程由I编为0,但不可以由O修改为I。为了保证写操作的正确性,在执行写操作前,都要执行擦除操作。擦除操作会把FLASH的一个SECTOR、一个BANK或者是整片FLASH的值都修改为OxFF。这样写操作才可以正确完成。但是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,用来作为数据转储(数据备份)区,以进行数据转储(数据备份)操作;进一步的,预留出能满足系统设计指标中的记录保存时间的η个SECTOR作为记录数据保存区,编号从j+Ι开始到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 (I < i < Y)、FLASH 的 SECTOR 编号为 k(j+l 彡 k 彡 j+n);第二步,设置FRAM中的数据转储标记A = 0,设置FLASH中SECTOR编号=k ;第三步,擦除FLASH中用于数据备份的SECTOR ;第四步,读取FLASH中编号为k的SECTOR中的全部数据到SDRAM的数据暂存区,然后把这部分数据写入FLASH中用于数据备份的SECTOR中,并做校验,这一步叫做转储;第五步,如果转储成功,则设置FRAM中的转储标记A = 1,如果系统发生异常,则FRAM中的转储标记不会改变仍为A = O;第六步,设置FRAM中的数据转移操作标记B = O;第七步,擦除FLASH中编号为k的SECTOR ; 第八步,把FRAM中的记录数据块读出,并添加到SDRAM中由上述第四步得到的数据块的尾部,然后把这个数据块写回编号为k的SECTOR中,并作校验;第九步,如果第八步写入成功,设置FRAM中的数据转移操作标记B = I ;第十步,经过第九步之后,再根据第一步得到的i判断编号为k的SECTOR是否写满;如果尚未写满,则修改FRAM中数据转移操作标记的记录数据块编号为i+Ι,而SECTOR编号不变仍为k;如果已经写满,则记录数据块编号改为I (即下次从第一个数据块开始写),而设置SECTOR编号=k+Ι (即下次从下一个SECTOR写入);如果(k+Ι)超出FLASH的记录数据区(即k+1 > j+n),则设置SECTOR编号=j+Ι (即循环回到记录数据区起始位置);第十一步,清空FRAM中的记录数据暂存区,新的记录又可以从头写入这个空间;步骤四数据恢复若系统在上述步骤三中的第四步或第八步操本文档来自技高网...
【技术保护点】
一种可延长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中。...
【技术特征摘要】
【专利技术属性】
技术研发人员:黄正,
申请(专利权)人:上海华魏光纤传感技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。