CN105260270B - 一种Flash存储空间的动态恢复方法及装置 - Google Patents

一种Flash存储空间的动态恢复方法及装置 Download PDF

Info

Publication number
CN105260270B
CN105260270B CN201510767561.9A CN201510767561A CN105260270B CN 105260270 B CN105260270 B CN 105260270B CN 201510767561 A CN201510767561 A CN 201510767561A CN 105260270 B CN105260270 B CN 105260270B
Authority
CN
China
Prior art keywords
data
page
address
backup
backup area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510767561.9A
Other languages
English (en)
Other versions
CN105260270A (zh
Inventor
雷俊
底明辉
于建云
都伟伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hengbao Co Ltd
Original Assignee
Hengbao Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hengbao Co Ltd filed Critical Hengbao Co Ltd
Priority to CN201510767561.9A priority Critical patent/CN105260270B/zh
Publication of CN105260270A publication Critical patent/CN105260270A/zh
Application granted granted Critical
Publication of CN105260270B publication Critical patent/CN105260270B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种Flash储存空间的动态恢复方法及其装置,所述方法包括:步骤1,判断是否需要更新非易失性存储器的数据区;步骤2:写备份区的标志页面中的标志位;步骤3:将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;步骤4:将数据区中的原有数据备份到备份区;步骤5:将原有地址存储到备份区中的地址页面中;步骤6:更新数据区,如果发生异常,则将备份区数据页面中存放的备份数据恢复到原有地址;步骤7:更改标志页面中的标志位。

Description

一种Flash存储空间的动态恢复方法及装置
技术领域
本发明涉及数据储存***与方法,特别有关于智能卡芯片中Flash储存空间的动态恢复方法及其装置。
背景技术
随着移动技术的快速发展,智能卡深入到生活的各个领域,非易失性存储器在智能卡中用于存储代码和数据。非易失性存储器指掉电后在相当长时间内依然能有效保存数据的存储器,如EEPROM,EPROM,Flash等。闪存区别于其它存储介质的特性主要有以下几个:
⑴Flash存储器的使用寿命是有限的。具体来说,其使用寿命是由擦写块的最大可擦写次数来决定的。超过了最大可擦写次数,这个擦写块就成为坏块了。因此为了避免某个擦写块被过度擦写,以至于它先于其他的擦写块达到最大可擦写次数,我们应该在尽量小的影响性能的前提下,使擦写操作均匀的分布在每个擦写块上,减少由擦写给块带来的摩损;
⑵在对卡片的非易失性存储器进行操作时,如果发生异常,例如卡突然掉电、电压异常或者写异常等,都可能会导致对卡片中的非易失性存储器更新不成功,并且丢失原有数据。
现有技术中实现利用Flash存储器进行数据操作时突然掉电的数据保存方法一般有两种对策:一是用后备电源维持单片机持续工作,称为硬保护;另一种是在电源完全失效前保护现场数据,上电后再恢复工作,称为软保护。现有技术中的硬保护电路较为烦琐,电路设计复杂,且不易集成。而现有技术中已有的软保护方法:目前运行在闪存上文件***要改写一个块设备的扇区时,通常是将这个扇区所在的擦写块的数据读到内存中,放在缓存中,然后将缓存中与这个扇区对应的内容用新的内容替换掉,再对该擦写块执行擦写操作,最后将缓冲中的数据写回该擦写块。这种实现方式的缺点是很明显的:效率低,对一个扇区的更新要重写整个擦写块上的数据,也造成内存空间很大的浪费;没有提供磨损平衡,那些被频繁更新的数据所在擦写块将首先变成坏块。
发明内容
为了解决在对智能卡的非易失性存储器进行操作时,发生异常而导致的非易失性存储器更新不成功,并且丢失非易失性存储器原有数据的技术问题,同时兼顾了由于对非易失性存储器的频繁操作而导致的磨损问题。本申请公开了一种Flash储存空间的动态恢复方法,所述方法包括:
步骤1,判断是否需要更新非易失性存储器的数据区,如果需要继续步骤2,否则继续监测;
步骤2:写备份区中标志页面中的标志位;
步骤3:将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;
步骤4:将数据区中的原有数据备份到备份区;
步骤5:将原有地址存储到备份区中的地址页面中;
步骤6:更新数据区,如果发生异常,则将备份区数据页面中存放的备份数据恢复到原有地址;
步骤7:更改标志页面中的标志位。
在本申请一具体实施例中,在步骤1之前包括:将所述Flash存储空间分成了三个区域:代码区、数据区和备份区;
其中数据区中存储有地址链表,可用于找到将要操作的数据;
备份区用来存储备份数据,备份区中包含标志页面、地址页面和备份区数据页面。
在另一实施例中,本申请又公开了一种Flash储存空间的动态恢复方法,所述方法包括:
步骤1,判断是否需要更新非易失性存储器的数据区,如果需要继续步骤2,否则继续监测;
步骤2,动态划分备份区;
步骤3,写备份区中标志页面中的标志位;
步骤4,将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;
步骤5,将数据区中的原有数据备份到备份区,并记录该备份数据所在的地址,记为备份地址;
步骤6,将备份地址存储到数据区的地址链表中;
步骤7,更新数据区,如果发生异常,则读取数据区的地址链表中存储的备份地址和原有地址,将备份区数据页面中存放的备份数据恢复到原有地址;
步骤8,将标志页中的标志更改为无备份数据。
在本申请一具体实施例中,所述步骤1具体为:当监测到对数据区有写操作请求时,就可以判断需要更新非易失性存储器的数据区2;所述写操作请求中包含待更新数据包、待更新的目的地址以及待更新数据包的大小。
在本申请一具体实施例中,所述动态划分备份区具体为:计算所述Flash存储空间的剩余存储空间,并根据所述写操作请求中待更新数据包的大小来在所述剩余存储空间中预留所述更新操作所需要的存储空间,将所述剩余存储空间中未预留给所述更新操作的存储空间作为备份区。
在本申请一具体实施例中,所述标志页面包含有标志位,用于标记备份区中有无备份数据。
同时,本申请公开一种Flash储存空间的动态恢复装置,其特征在于,所述装置包括三个区域:
代码区,存储Flash运行时所必须的代码;
数据区,其中存储地址链表,用于找到将要操作的数据;
备份区,用来存储备份数据;
所述备份区中包含:
标志页面,包含标志位,用于标记备份区中是否有备份数据;
地址页面,其中记录将要操作的数据的地址;
备份区数据页面,用于存储备份的将要操作的数据,当发生异常时,将所述备份的数据恢复至所述将要操作的数据的地址。
在本申请一具体实施例中,所述代码区、数据区和备份区是固定的,当需要更新非易失性存储器的数据区时,写备份区中标志页面中的标志位;将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;将数据区中的原有数据备份到备份区;将原有地址存储到备份区中的地址页面中;更新数据区,如果发生异常,则将备份区数据页面中存放的备份数据恢复到原有地址;更改标志页面中的标志位。
在本申请一具体实施例中,所述代码区、数据区是固定的,所述备份区是动态划分的;当接收到对所述数据区的写操作请求时,则判定为需要更新所述数据区时;动态划分备份区;写备份区中标志页面中的标志位;将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;将数据区中的原有数据备份到备份区,并记录该备份数据所在的地址,记为备份地址;将备份地址存储到数据区的地址链表中;更新数据区,如果发生异常,则读取数据区的地址链表中存储的备份地址和原有地址,将备份区数据页面中存放的备份数据恢复到原有地址;将标志页中的标志更改为无备份数据。
在本申请一具体实施例中,所述写操作请求包含待更新数据包、待更新的目的地址以及待更新数据包的大小;所述动态划分备份区为,计算所述Flash存储空间的剩余存储空间,并根据所述写操作请求中待更新数据包的大小来在所述剩余存储空间中预留所述更新操作所需要的存储空间,将所述剩余存储空间中未预留给所述更新操作的存储空间作为备份区。
本申请中提供的Flash存储空间的动态恢复方法及其装置,增强了非易失性存储器的鲁棒性,即使对非易失性存储器的更新没有成功,原始数据仍可恢复的技术效果,以及通过备份区的动态设置而带来的延长非易失性存储器的使用寿命的技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请中实施例一中Flash存储空间的划分示意图;
图2是本申请中实施例一中备份区中标志页面结构示意图;
图3是本申请中实施例二中Flash存储空间的划分示意图;
图4是本申请中实施例二中数据区中标志页面结构示意图;
图5是本申请中实施例二中数据区中数据链表结构示意图。
具体实施方式
本申请中公开一种Flash存储空间的动态恢复方法,其在对Flash进行写操作之前,先找到将要操作的数据,标记为原有数据;并将非易失性存储器的原有数据复制到备份区,然后再对非易失性存储器进行操作。
本申请还公开了一种Flash存储空间的动态恢复装置,其中包括:代码区,存储Flash运行时所必须的代码;数据区,其中存储地址链表,用于找到将要操作的数据;备份区,用来存储备份数据;所述备份区中包含:标志页面,包含标志位,用于标记备份区中是否有备份数据;地址页面,其中记录将要操作的数据的地址;备份区数据页面,用于存储备份的将要操作的数据,当发生异常时,将所述备份的数据恢复至所述将要操作的数据的地址。
当然,实施本申请的任一技术方案必不一定需要同时达到以上的所有优点。
为了使本领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。
下面结合本申请附图进一步说明本申请具体实现。
本申请提供了一种Flash存储空间的动态恢复方法,其用于动态恢复Flash中的存储的数据。
根据图1,将非易失性存储器分成了三个固定区域:代码区1、数据区2和备份区3(也可以称为:防拔区)。数据区2中存储有地址链表,可用于找到将要操作的数据。备份区3用来存储备份数据的地方。备份区3中可以包含:一个或者若干个标志页面,如:两个标志页面31-32;地址页面33和备份区数据页面34。
在对非易失性存储器(如:Flash)进行操作之前,根据数据区2所存储的地址链表,找到将要操作的数据,标记为原有数据。将非易失性存储器的原有数据复制到备份区,然后再对非易失性存储器进行操作,这样即使在对非易失性存储器进行操作时***突然掉电,也可以从备份区读取原有数据,将其恢复到数据区的指定区域。具体步骤为:
步骤1,判断是否需要更新非易失性存储器的数据区2,如果需要继续步骤2,否则继续监测。
当监测到对数据区2有写操作请求时,就可以判断需要更新非易失性存储器的数据区2,跳转至步骤2;若没有监测到对数据区2的写请求则持续监测。
步骤2:写备份区3的标志页面的标志位。
标志页面31或标志页面32中包含标志位,标志位用于标志备份区3中的备份区数据页面34中是否保存有备份数据。
在本申请的优先实施例中,每一次备份流程,会在标志页面31或32中分配一组标志位,例如:一组标志位可以为4/8字节。如果有多个标志页面,则可以在多个标志页面顺序分配标志位。如图1所示,标志位先在标志页面31中记录,当标志页面31满时,再记录在标志页面32中。标志位在每个页面内顺序存储,从页首开始分配。标志页面都已经分配完毕,并且所有分配的标志位都已经标记为完成备份,则认为标志页面满。当所有标志页面写满后,会全部擦除。
如图2所示,标志页面与数据备份页面在逻辑上是相邻的,每一组标志位中包括有页面指针,指向对应的数据备份页面。可以通过页面指针来调节备份区数据页面的损耗平衡。例如:可以在备份区数据页面中统一设置一张页面更新表,记录每个备份区数据页面被最后更新的时间和/或至今写操作的次数,在每次重新开启备份时,分配各组标志位中的页面指针时,通过查询选取最早被更新或写次数最少的页面。还可以,每次重新开启备份时,页面指针加一,即:初始为0,则指向第一个数据备份页面,下一次重新开启时,页面指针为1,则指向第2个数据备份页面,以此类推。
为了避免写冲突,一次备份,使用一组标志位,此组标志未更新为完成备份状态,不会分配下一组标志。一组标志位中,至少包括:备份状态标记,分为:开启标志和结束标志。当备份区数据页面备份开启时,写开启标志,备份结束时,写备份结束标志。检查时,根据备份标志组的内容,可以确定备份状态。一组标志位中可以使用两个标志位,一个表示开始备份、另一个标志位表示结束备份。当然,如果芯片特定允许,例如:Flash允许重复写,一个标志的两个状态也可以实现上述功能。
通过上述标志位的分配和管理方式,可以有效地避免对于同一组标志位和同一数据备份页面反复多次重复写,造成标志页面的损耗不平衡,避免坏页的出现,提高了芯片的使用寿命。
步骤3:根据数据区2中所存储的地址链表,找到将要操作的数据的地址,记为原有地址,根据该原有地址的信息找到需要操作的数据,记为原有数据。
根据步骤1中监测到的写请求,提取该写请求中携带的写操作目的地址,所获取的目的地址为逻辑地址,再根据数据区2中所存储的地址链表,查询到该目的地址所对应的物理地址,并记为原有地址。根据原有地址,找到即将被写操作覆盖的数据,并将上述数据记为原有数据,用于后续备份。
步骤4:将数据区中的原有数据备份到备份区,记为备份数据。
开始备份时,分配一个标志组中,将标志组中的对应标志位置为开始备份,并通过查询找到当前链接的备份区数据页面,将标志组中的页面指针指向第一个进行备份的数据页面,并记录该备份区数据页面的最新写时间以及写次数;如果一个页面不足以存储该备份数据,则再次通过查询,找到更新时间最久和/或写次数最少的备份区页面继续备份,更新该备份区数据页面的写时间和写次数,依次往复,直至备份完所有原有数据。
同样,备份区中的备份区数据页面也可以采用顺序链接的方式。
步骤5:将原有地址存储到备份区3中的地址页面33中。
在备份区中还包括地址页面,用于备份原有数据的原有地址,地址页面中记录的每个原有地址与标志页面中的一组标志组中的地址指针链接,用于指示该组标志中对应的数据区内的原有地址以及备份的该原有数据存储对应数据备份的页面。
步骤6:更新数据区,如果发生异常,则根据备份区3的地址页面33获得原有地址,将备份区数据页面中存放的备份数据恢复到原有地址。
如果在更新数据区时发生异常,找到当前未标志为备份结束的一组标志位后,则根据该标志组中的地址指针和页面指针,读取备份区中地址页面中存储的原有地址,将其对应的数据页面中存储放的备份数据恢复到原有地址中。
为保证数据的完整性,一次开启备份后,可以多次执行数据更新操作,然后结束备份,如果某一次数据更新操作失败,则所有已经更新的数据,都需要做恢复操作。
步骤7:将标志页面中的标志位更改为无备份数据。
所有更新结束后,置位备份结束标志,表明此次备份完成,后续再有写操作,需要开启下一次备份。
为了更好地可避免由于备份区的固定而导致的非易失性存储器的磨损问题。如图3所示,本申请还可以将非易失性存储器分成三个区域:二个固定的区域,代码区11和数据区22;一个动态划分的区域,备份区数据页面区34(也称防拔区)。其中数据区2中除了存储芯片内的各种数据外,还存储地址链表221和标志页面222,标志页面222可以存在一个或者多个,其中所述地址链表中221存储有将要操作的目的地址和将要操作的数据备份地址指针,可用于找到将要操作的数据,所述标志页面222中存储有若干组标志位,用于标识数据备份页面的状态;备份区数据页面区34用来存储需要备份的数据。
在对非易失性存储器进行写操作之前,计算非易失性存储器剩余的存储空间,在为更新操作留够足够空间的基础上,根据剩余的存储空间动态划分出此次备份所需要的数据备份页面。并在数据区的地址链表中,记录此次写操作的目的地址(也可称为原有地址),以及记录页面指针,该页面指针指向动态划分的备份区数据页面的首页。如果此次数据备份需要若干备份区数据页面,那么其他数据备份页面和首页通过指针顺序链接。根据数据区所存储的地址链表,找到将要操作的数据,记为原有数据,将非易失性存储器的原有数据复制到备份区,并且将该原有地址也保存到备份区中的地址页面中,然后再对非易失性存储器进行操作。具体步骤为:
步骤1,判断是否需要更新非易失性存储器的数据区,如果需要继续步骤2,否则继续监测。
当监测到对数据区2有写操作请求时,就可以判断需要更新非易失性存储器的数据区2,跳转至步骤2;若没有监测到对数据区2的写请求则持续监测。
监测到所述写请求中包含有此次更新数据包、待更新的目的地址以及所述更新数据的大小。
步骤2,计算非易失性存储器剩余的存储空间,并预估上述更新操作所需要的存储空间,在剩余的存储空间中动态划分此次更新操作所需要的数据备份页。
动态划分数据页面,在获取写请求后,预先评估芯片中剩余存储空间容量,评估时可以考虑芯片中现有的剩余存储空间、所获取的写请求中所需要更新数据大小等,此处仅为示例,不作为具体限定。动态划分方式可以在确定剩余存储空间容量后,使用私有指令将标志页面、地址链表的相关信息写入数据区中的指定位置,***上电时,先读取相关信息,再使用备份机制。
具体地说,可以根据所监测到的读请求中的数据包大小,动态划分出此次更新所需要的一页或者若干页备份区数据页面,其中各个备份区数据页面通过页面指针顺序相连,并记录此次动态划分的备份区数据页面的首页面地址。
步骤3:写数据区中的标志页面,标志页面中保存标志位,标志位用于标志备份区的备份区数据页面中是否保存有备份数据。
动态划分备份区数据页面区,也需要设置标志页面,表明备份流程的开启和结束;标志页面需要随备份流程更新。
标志页面中包含标志位,标志位用于标志备份区数据页面区34中的备份区数据页面中是否保存有备份数据。
在本申请的优选实施例中,每一次备份流程,会在标志页面中分配一组标志位,例如:一组标志位可以为4/8字节。如果有多个标志页面,则可以在多个标志页面顺序分配标志位。标志位在每个页面内顺序存储的,从页首开始分配。标志页面都已经分配完毕,并且所有分配的标志位都已经标记为完成备份,则认为标志页面满。当所有标志页面写满后,会全部擦除。
为了避免写冲突,一次备份,使用一组标志位,此组标志未更新为完成备份状态,不会分配下一组标志。一组标志位中,至少包括:备份状态标记,分为:开启标志和结束标志。当备份区数据页面备份开启时,写开启标志,备份结束时,写备份结束标志。检查时,根据备份标志组的内容,可以确定备份状态。一组标志位中可以使用两个标志位,一个表示开始备份、另一个标志位表示结束备份。当然,如果芯片特定允许,例如:Flash允许重复写,一个标志的两个状态也可以实现上述功能。
通过上述标志位的分配和管理方式,可以有效地避免对于同一组标志位和同一数据备份页面反复多次重复写,造成标志页面的损耗不平衡,避免坏页的出现,提高了芯片的使用寿命。
步骤4:根据数据区所存储的地址链表,找到将要操作的数据的地址,记为原有地址,根据该原有地址的信息找到需要操作的数据,记为原有数据。
根据监测到的写请求,提取该写请求中携带的写操作目的地址,并存储在数据区中的地址链表中。根据数据区2中所存储的地址链表,查询到该目的地址,并记为原有地址。根据原有地址,找到即将被写操作覆盖的数据,并将上述数据记为原有数据,用于后续备份。
步骤5:将数据区中的原有数据备份到动态划分的备份区数据页面中,记为备份数据;并在数据链表中将该备份数据所在的备份区数据页面的首页地址记为备份地址。
步骤6:更新数据区,如果发生异常,则读取地址链表区中存储的原有地址,将备份区数据页面中存放的备份数据恢复到原有地址。
如果在更新数据区时发生异常,找到当前未标志为备份结束的一组标志位后,则读取数据区中地址页面中存储的原有地址和备份区数据页面的首页指针,将其对应的数据页面中存储放的备份数据恢复到原有地址中。
为保证数据的完整性,一次开启备份后,可以多次执行数据更新操作,然后结束备份,如果某一次数据更新操作失败,则所有已经更新的数据,都需要做恢复操作。
步骤7:将标志页中的标志更改为无备份数据。
所有更新结束后,置位备份结束标志,表明此次备份完成,后续再有写操作,需要开启下一次备份。
本申请还公开一种Flash储存空间的动态恢复装置,其余上述Flash存储空间的动态恢复装置的方法是一一对应的,其中相同的技术细节将不再赘述。
该Flash储存空间的动态恢复装置,可以包括三个区域:代码区,存储Flash运行时所必须的代码;数据区,其中存储了芯片中所用的数据;备份区,用来存储备份数据;
所述代码区、数据区和备份区可以是固定的,当所述备份区是固定的时,所述备份区中包含:地址页面,其中记录将要操作的数据的地址;备份区数据页面,用于存储备份的将要操作的数据,当发生异常时,将所述备份的数据恢复至所述将要操作的数据的地址;标志页面,包含标志位、地址指针和页面指针,所述用于标记备份区中是否有备份数据,所述地址指针用于指向将要操作的数据的地址的地址页面,所述页面指针用于指向备份数据的备份区数据页面。
当需要更新非易失性存储器的数据区时,写备份区中标志页面中的标志位;将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;将数据区中的原有数据备份到备份区;将原有地址存储到备份区中的地址页面中;更新数据区,如果发生异常,则将备份区数据页面中存放的备份数据恢复到原有地址;更改标志页面中的标志位。
也可以为:所述代码区、数据区是固定的,所述备份区是动态划分的;其中数据区中除了存储芯片内的各种数据外,还存储地址链表和标志页面,标志页面可以存在一个或者多个,其中所述地址链表中存储有将要操作的目的地址和将要操作的数据备份地址指针,可用于找到将要操作的数据,所述标志页面中存储有若干组标志位,用于标识数据备份页面的状态;备份区用来存储需要备份的数据。
在对非易失性存储器进行写操作之前,计算非易失性存储器剩余的存储空间,在为更新操作留够足够空间的基础上,根据剩余的存储空间动态划分出此次备份所需要的数据备份页面。并在数据区的地址链表中,记录此次写操作的目的地址(也可称为原有地址),以及记录页面指针,该页面指针指向动态划分的备份区数据页面的首页。如果此次数据备份需要若干备份区数据页面,那么其他数据备份页面和首页通过指针顺序链接。根据数据区所存储的地址链表,找到将要操作的数据,记为原有数据,将非易失性存储器的原有数据复制到备份区,并且将该原有地址也保存到备份区中的地址页面中,然后再对非易失性存储器进行操作。
当接收到对所述数据区的写操作请求时,则判定为需要更新所述数据区时;动态划分备份区数据页面;写数据区中标志页面中的标志位;将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;根据数据区所存储的地址链表,找到将要操作的数据的地址,记为原有地址,根据该原有地址的信息找到需要操作的数据,记为原有数据;将数据区中的原有数据备份到动态划分的备份区数据页面中,记为备份数据;并在数据链表中将该备份数据所在的备份区数据页面的首页地址记为备份地址更新数据区,如果发生异常,则读取地址链表中存储的原有地址,将备份区数据页面中存放的备份数据恢复到原有地址;将标志页中的标志更改为无备份数据。
所述写操作请求包含待更新数据包、待更新的目的地址以及待更新数据包的大小;动态划分备份区数据页面具体为:在获取写请求后,根据芯片中剩余存储空间容量、所获取的写请求中所需要更新数据大小来划分所需的备份区数据页面。
本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (9)

1.一种Flash储存空间的动态恢复方法,所述方法包括:
步骤1,判断是否需要更新非易失性存储器的数据区,如果需要继续步骤2,否则继续监测;
步骤2:写备份区中标志页面中的标志位;
步骤3:将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;
步骤4:将数据区中的原有数据备份到备份区;
步骤5:将原有地址存储到备份区中的地址页面中;
步骤6:更新数据区,如果发生异常,则将备份区数据页面中存放的备份数据恢复到原有地址;
步骤7:更改标志页面中的标志位;
将所述Flash存储空间分成了三个区域:代码区、数据区和备份区;
其中备份区用来存储备份数据,备份区中包含标志页面、地址页面和备份区数据页面;
所述地址页面中记录的每个原有地址与标志页面中的一组标志组中的地址指针链接;
所述标志位在每个页面内顺序存储,从页首开始分配;
所述标志页面中的标志位包括页面指针,页面指针的初始值为0,每次开启备份时,页面指针加一;
一次备份,使用一组标志位,此组标志未更新为完成备份状态,不会分配下一组标志。
2.一种Flash储存空间的动态恢复方法,所述方法包括:
步骤1,判断是否需要更新非易失性存储器的数据区,如果需要继续步骤2,否则继续监测;
步骤2,动态划分备份区;
步骤3,写数据区中标志页面中的标志位;
步骤4,根据数据区所存储的地址链表,找到将要操作的数据的地址,记为原有地址,根据该原有地址的信息找到需要操作的数据,记为原有数据;
地址页面中记录的每个原有地址与标志页面中的一组标志组中的地址指针链接;
步骤5,将数据区中的原有数据备份到动态划分的备份区数据页面中,记为备份数据;并在数据链表中将该备份数据所在的备份区数据页面的首页地址记为备份地址;
步骤6,更新数据区,如果发生异常,则读取地址链表区中存储的原有地址,将备份区数据页面中存放的备份数据恢复到原有地址;
步骤7,将标志页中的标志更改为无备份数据;
所述标志位在每个页面内顺序存储,从页首开始分配;
一次备份,使用一组标志位,此组标志未更新为完成备份状态,不会分配下一组标志。
3.根据权利要求2所述的方法,其特征在于,所述步骤1具体为:当监测到对数据区有写操作请求时,就可以判断需要更新非易失性存储器的数据区;所述写操作请求中包含待更新数据包、待更新的目的地址以及待更新数据包的大小。
4.根据权利要求3所述的方法,其特征在于,所述动态划分备份区具体为:计算所述Flash存储空间的剩余存储空间,并根据所述写操作请求中待更新数据包的大小来在所述剩余存储空间中动态划分所述写操作所需要的备份区数据页面。
5.根据权利要求1或2所述的方法,其特征在于,所述标志页面包含有标志位,用于标记所述备份区中有无备份数据。
6.一种Flash储存空间的动态恢复装置,其特征在于,所述装置包括三个区域:
代码区,存储Flash运行时所必须的代码;
数据区,其中存储了芯片中所用的数据;
备份区,用来存储备份数据;
所述代码区、数据区和备份区是固定的,
当所述备份区是固定的时,所述备份区中包含:
地址页面,其中记录将要操作的数据的地址;
备份区数据页面,用于存储备份的将要操作的数据,当发生异常时,将所述备份的数据恢复至所述将要操作的数据的地址;
标志页面,包含标志位、地址指针和页面指针,所述标志位用于标记备份区中是否有备份数据,所述地址指针用于指向将要操作的数据的地址的地址页面,所述页面指针用于指向备份数据的备份区数据页面;
所述地址页面中记录的每个原有地址与标志页面中的一组标志组中的地址指针链接;
所述标志位在每个页面内顺序存储,从页首开始分配;
所述页面指针的初始值为0,每次开启备份时,页面指针加一;
一次备份,使用一组标志位,此组标志未更新为完成备份状态,不会分配下一组标志。
7.根据权利要求6所述的装置,其特征在于,当需要更新非易失性存储器的数据区时,写备份区中标志页面中的标志位;将要操作的数据的地址,记为原有地址,将需要操作的数据,记为原有数据;将数据区中的原有数据备份到备份区;将原有地址存储到备份区中的地址页面中;更新数据区,如果发生异常,则将备份区数据页面中存放的备份数据恢复到原有地址;更改标志页面中的标志位。
8.一种Flash储存空间的动态恢复装置,其特征在于,所述装置包括三个区域:
代码区,存储Flash运行时所必须的代码;
数据区,其中存储了芯片中所用的数据;
备份区,用来存储备份数据;
所述代码区、数据区是固定的,所述备份区是动态划分的;
其中:
数据区中除了存储芯片内的各种数据外,还存储地址链表和标志页面;所述地址链表中存储有将要操作的目的地址和将要操作的数据备份地址指针,可用于找到将要操作的数据,所述标志页面可以存在一个或者多个,所述标志页面中存储有若干组标志位,用于标识备份区中备份区数据页面的状态;
所述备份区包含动态划分的一个或者若干个备份区数据页面,用于存储需要备份的数据;
所述地址页面中记录的每个原有地址与标志页面中的一组标志组中的地址指针链接;
所述标志位在每个页面内顺序存储,从页首开始分配;
一次备份,使用一组标志位,此组标志未更新为完成备份状态,不会分配下一组标志。
9.根据权利要求8所述的装置,其特征在于,
当接收到对所述数据区的写操作请求时,则判定为需要更新所述数据区时,动态划分备份区数据页面;所述写操作请求包含待更新数据包、待更新的目的地址以及待更新数据包的大小;写数据区中标志页面中的标志位;根据数据区所存储的地址链表,找到将要操作的数据的地址,记为原有地址,根据该原有地址的信息找到需要操作的数据,记为原有数据;将数据区中的原有数据备份到动态划分的备份区数据页面中,记为备份数据;并在数据链表中将该备份数据所在的备份区数据页面的首页地址记为备份地址;更新数据区,如果发生异常,则读取地址链表区中存储的原有地址,将备份区数据页面中存放的备份数据恢复到原有地址;将标志页中的标志更改为无备份数据。
CN201510767561.9A 2015-11-11 2015-11-11 一种Flash存储空间的动态恢复方法及装置 Active CN105260270B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510767561.9A CN105260270B (zh) 2015-11-11 2015-11-11 一种Flash存储空间的动态恢复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510767561.9A CN105260270B (zh) 2015-11-11 2015-11-11 一种Flash存储空间的动态恢复方法及装置

Publications (2)

Publication Number Publication Date
CN105260270A CN105260270A (zh) 2016-01-20
CN105260270B true CN105260270B (zh) 2018-12-11

Family

ID=55099970

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510767561.9A Active CN105260270B (zh) 2015-11-11 2015-11-11 一种Flash存储空间的动态恢复方法及装置

Country Status (1)

Country Link
CN (1) CN105260270B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI639112B (zh) * 2016-03-14 2018-10-21 慧榮科技股份有限公司 儲存裝置及其控制單元、可用於儲存裝置的資料儲存方法
CN105843695A (zh) * 2016-03-15 2016-08-10 深圳市凯立德科技股份有限公司 一种数据存储异常的处理方法、装置及设备
CN106569748B (zh) * 2016-10-27 2019-04-09 南方电网科学研究院有限责任公司 Flash文件***的数据处理方法和装置
CN107329697A (zh) * 2017-06-27 2017-11-07 湖南威胜信息技术有限公司 用于嵌入式***的用电信息数据存取方法及其电能表
CN108664355B (zh) * 2018-03-30 2022-03-08 斑马网络技术有限公司 备份***及其备份方法
CN108958978A (zh) * 2018-07-12 2018-12-07 深圳芯邦科技股份有限公司 一种mcu数据恢复方法和***
CN109271100A (zh) * 2018-08-28 2019-01-25 深圳智芯数据服务有限公司 一种Flash存储器数据存储方法和读取方法
CN109685190B (zh) * 2018-12-28 2022-04-12 江苏恒宝智能***技术有限公司 一种ic卡掉电保护方法及装置
CN110489236A (zh) * 2019-08-21 2019-11-22 恒宝股份有限公司 一种物联网卡及其实现flash负载均衡的方法
CN111367717B (zh) * 2020-02-20 2022-08-16 广州安凯微电子股份有限公司 一种电子设备的恢复方法、装置及***
CN112181725B (zh) * 2020-09-25 2023-07-25 江苏恒宝智能***技术有限公司 一种嵌入式***的片内外数据掉电防拔备份方法及***
CN113538754B (zh) * 2021-06-08 2023-04-07 福建新大陆通信科技股份有限公司 一种ctid智能门锁授权数据管理方法及***
CN113380308B (zh) * 2021-06-22 2023-10-27 力高(山东)新能源技术有限公司 一种使用pflash软件模拟eeprom的数据存储方法
CN114265559B (zh) * 2021-12-24 2024-02-09 ***数智科技有限公司 一种存储管理方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183337A (zh) * 2007-12-12 2008-05-21 中兴通讯股份有限公司 基于nand flash移动终端存储介质的空间管理方法
CN101539891A (zh) * 2008-03-17 2009-09-23 凤凰微电子(中国)有限公司 一种嵌入式快闪存储器、存储***及其数据掉电保护方法
CN101876927A (zh) * 2009-11-30 2010-11-03 北京握奇数据***有限公司 实现fat32文件***的断电保护方法和装置
EP2299364A1 (en) * 2009-09-18 2011-03-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
CN103531234A (zh) * 2012-07-06 2014-01-22 河南思维自动化设备股份有限公司 一种NandFlash存储器写操作过程掉电防护方法
CN103914393A (zh) * 2014-04-11 2014-07-09 四川华拓光通信股份有限公司 一种基于mcu的flash不丢失更新存储方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183337A (zh) * 2007-12-12 2008-05-21 中兴通讯股份有限公司 基于nand flash移动终端存储介质的空间管理方法
CN101539891A (zh) * 2008-03-17 2009-09-23 凤凰微电子(中国)有限公司 一种嵌入式快闪存储器、存储***及其数据掉电保护方法
EP2299364A1 (en) * 2009-09-18 2011-03-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
CN101876927A (zh) * 2009-11-30 2010-11-03 北京握奇数据***有限公司 实现fat32文件***的断电保护方法和装置
CN103531234A (zh) * 2012-07-06 2014-01-22 河南思维自动化设备股份有限公司 一种NandFlash存储器写操作过程掉电防护方法
CN103914393A (zh) * 2014-04-11 2014-07-09 四川华拓光通信股份有限公司 一种基于mcu的flash不丢失更新存储方法

Also Published As

Publication number Publication date
CN105260270A (zh) 2016-01-20

Similar Documents

Publication Publication Date Title
CN105260270B (zh) 一种Flash存储空间的动态恢复方法及装置
US9645894B2 (en) Data storage device and flash memory control method
US9817588B2 (en) Memory device and operating method of same
CN101903866B (zh) 非易失存储介质中的数据存储的方法和***
CN102667740B (zh) 将数据存储装置分区与物理数据扇区的边界对齐
US8805902B2 (en) Managing snapshot storage pools
CN110175001A (zh) 一种nor-flash数据存储方法、计算机设备及存储介质
CN102999431A (zh) 用于非易失性存储器***的编织序列计数器
JP2005242897A (ja) フラッシュディスク装置
CN104536847B (zh) 一种提高数据写入完整性的方法
US11995318B2 (en) Deallocated block determination
TW201734808A (zh) 管理邏輯至實體轉譯資訊的備份以控制開機時間以及寫入放大
CN101231604A (zh) 用于集群服务器数据的卷级恢复的设备、***及方法
CN103377130A (zh) 数据存储设备以及相应的数据存储方法
CN104317671A (zh) 一种提升非易失存储使用寿命的掉电数据保存恢复算法
CN108604207A (zh) 用于独立于硬件的存储器存储的***及方法
CN102981970A (zh) 闪存管理方法和***
CN109669889A (zh) 一种轻量型Nor Flash闪存控制方法和装置
JP2009205689A (ja) フラッシュディスク装置
CN102981977A (zh) 一种可延长flash使用寿命的数据存储方法
CN105404468B (zh) 绿能与非固态硬盘应用及其驱动器
KR101548452B1 (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치
CN103699681B (zh) 数据回滚的处理方法和装置
CN103729301B (zh) 数据处理方法和装置
CN101887750A (zh) 一种利用Flash存储器进行动态数据存储的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant