发明名称 一种可延长FLASH使用寿命的数据存储方法
摘要 本发明公开了一种可延长FLASH使用寿命的数据存储方法,所述数据存储方法是利用FLASH、FRAM及SDRAM三部分组合成的数据存储系统完成的,该方法主要包括系统初始化、数据添加、数据转移及数据恢复四个步骤。采用本发明所述的技术方案优点在于:采用数据转移操作,不仅提高了数据的保存速度,更重要的是大大降低了对FLASH的擦除次数,从而尽可能地延长了FLASH的使用寿命;同时,数据转移操作采用先转储,再转移的步骤,保证了在数据转移操作过程中,即使系统发生异常故障,也能保证系统恢复到数据转移操作前的状态,达到了数据安全可靠操作的目的。
申请公布号 CN102981977A 申请公布日期 2013.03.20
申请号 CN201110259657.6 申请日期 2011.09.05
申请人 上海华魏光纤传感技术有限公司 发明人 黄正
分类号 G06F12/08(2006.01)I;G06F11/14(2006.01)I 主分类号 G06F12/08(2006.01)I
代理机构 代理人
主权项 一种可延长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中。
地址 201700 上海市青浦区白鹤镇赵中路31弄2号云峰大楼701室B