一种掉电保护方法及装置制造方法

文档序号:6523487阅读:158来源:国知局
一种掉电保护方法及装置制造方法
【专利摘要】本申请公开了掉电保护方法及装置,所述掉电保护方法包括:根据指定规则初始化全局变量,包括指定备份区的起始页位置;根据所述起始页位置将备份项写入所述备份区;从标识页区选择一页作为当前有效标识页,依据标识页格式将备份项的相关信息写入所述当前有效标识页的数据体部分;依据所述当前有效标识页和所述备份项进行数据恢复。本申请针对NVM介质,充分考虑NOR?FLASH的特性,保障防掉电功能正确的同时尽量提高性能。
【专利说明】—种掉电保护方法及装置
【技术领域】
[0001 ] 本申请涉及数据存储领域,具体涉及一种掉电保护方法及装置。
【背景技术】
[0002]税控加密盘是一种USB接口的税控加密存储介质,保证网络发票电子信息正确生成、可靠存储、查询验证、安全唯一。
[0003]税控加密盘由硬件系统和软件系统组成,硬件系统包括主控MCU芯片模块、税控存储器模块、状态指示电路模块和接口电路模块;软件系统包括USB通信管理模块、命令解析模块、应用管理模块、WTCOS模块、文件系统、中央处理器驱动程序模块、CDROM模块、加密存储区模块、密钥模块和算法程序模块,其中WTCOS模块由存储模块、掉电保护模块、FTL模块、安全操作模块和文件操作模块组成。
[0004]COS中创建文件、更新文件等过程中存在对非易失性存储器(Non-volatilememory,NVM)存储介质的更新操作,更新过程中可能出现掉电,导致更新操作未能完成。现有的防掉电设计,如果在更新过程中出现掉电现象,那么重新上电后,经过掉电恢复等操作后再检查更新结果,只能是更新前的旧值或者更新后的新值二者之一,不能出现部分新值、部分旧值或者乱值。所谓乱值,既不是新值,也不是旧值。
[0005]现有的防掉电设计中,硬件层备份页为专门指定的一页区域。备份区有3?5个指定的备份项地址。备份数据大小不为一页或者备份数据写入的目标地址不为起始页偏移时,现有的备份机制操作流程为:
[0006]1,把外部需要写入的数据备份到指定备份区;
[0007]2,恢复数据时,需要从备份区中读取已备份数据,由于备份数据大小小于页大小,需要从目标地址中获取填充数据,进行填充;对填充好的数据写入到第二个备份区中,即硬件层备份页,该硬件层备份页固定为一页大小;
[0008]3,擦除目标地址,从硬件层备份页中获取数据,写入到目标地址中。
[0009]从上述过程可以看出,现有的备份流程中,要在备份区备份一次数据,如果备份数据不满一页,恢复时需要在硬件层备份页再次写入一次。每添加一个备份项,恢复数据时都要对硬件层页备份进行一次擦写操作。
[0010]在创建备份文件过程中,会涉及到连续添加多个备份项的操作,每个备份项数据实际目标地址都在同一页内的情况下:恢复数据过程中,每次都要先把备份区中的数据和目标地址中的数据进行组装,写入到硬件层备份页中,然后再擦除目标页地址,从硬件层读取数据写入到目标页地址中。由于该目标地址在同一页内,该目标页会多次进行擦写,造成Flash页擦写的浪费,减少该Flash页的寿命。
[0011]综上,硬件层页备份使用过度频繁,会过早导致该页损坏;创建文件时,个别目标页会使用过度频繁,会过早导致该页损坏。

【发明内容】
[0012]本申请所要解决的技术问题在于提供一种掉电保护方法及装置,避免数据备份时对硬件层的过度擦写,延长硬件的使用寿命。
[0013]为了解决上述问题,本申请揭示了一种掉电保护方法,包括:根据指定规则初始化全局变量,包括指定备份区的起始页位置;根据所述起始页位置将备份项写入所述备份区;从标识页区选择一页作为当前有效标识页,依据标识页格式将备份项的相关信息写入所述当前有效标识页的数据体部分;依据所述当前有效标识页和所述备份项进行数据恢复。
[0014]进一步地,依据所述当前有效标识页和所述备份项进行数据恢复,包括:从标识页区获取标识页区域最大顺序号页为当前有效标识页,从所述当前有效标识页内读取备份项的相关信息,依据该备份项的相关信息把备份项从备份区写入到数据恢复后需要放入的目标地址。
[0015]进一步地,所述从标识页区选择一页作为当前有效标识页,还包括:在当前有效标识页中添加置位标识,以通过所述置位标识标明备份项添加成功。
[0016]进一步地,所述从标识页区选择一页作为当前有效标识页,包括:在标识页区内,依次读取标识页地址;如果当前标识页未使用,则当前标识页为当前有效标识页;否则继续查找标识页区域内第一个未使用页作为当前有效标识页;若标识页区中所有标识页都已被使用,则查找标识页区域内顺序号最大页,该最大页的下一页地址作为当前有效标识页。
[0017]进一步地,依据所述当前有效标识页和所述备份项进行数据恢复,还包括:若标识页中记录的目标地址有重叠部分,只恢复最新一次记录该目标地址所对应的备份项。
[0018]进一步地,根据所述起始页位置将备份项写入所述备份区,包括:当待备份数据待写入的目标地址非起始页地址时,或者,当待备份数据的长度大小不是页大小的整数倍时,对所述待备份数据进行填充。
[0019]进一步地,当待备份数据待写入的目标地址非起始页地址时对所述待备份数据进行填充包括:以待写入目标地址的起始页地址为第一目标地址,读取该第一目标地址所在页的所有数据;以待写入目标地址的页内偏移为第二目标地址,拷贝待备份数据,数据长度为外界输入;将所述第一目标地址所在页的所有数据与所述第二目标地址的待备份数据组装为备份项;根据所述备份区起始页位置和填充后得到的所述备份项的长度,将所述备份项依次写入备份区。
[0020]进一步地,当待备份数据的长度大小不是页大小的整数倍时,对所述待备份数据进行填充包括:以第一目标地址的下页地址为第三目标地址,读取该第三目标地址所在页的所有数据;以待写入目标地址的页内偏移为第四目标地址,拷贝剩余待备份数据;将所述第三目标地址所在页的所有数据与所述第四目标地址的剩余待备份数据组装为备份项;根据所述备份区起始页位置和填充后得到的所述备份项的长度,将所述备份项依次写入备份区。
[0021]进一步地,该方法还包括:若需要继续添加新的备份项,返回指定备份区的起始页位置、结束页位置的步骤继续添加。
[0022]为了解决上述问题,本申请揭示了一种掉电保护装置,包括:初始化模块,用于根据指定规则初始化全局变量,包括指定备份区的起始页位置;写入模块,用于根据所述起始页位置将备份项写入所述备份区;标识页选择模块,用于在所述备份项写入备份区后,从标识页区选择一页作为当前有效标识页,依据标识页格式将备份项的相关信息写入所述当前有效标识页的数据体部分;恢复模块,用于依据所述当前有效标识页和所述备份项进行数据恢复。
[0023]与现有技术相比,本申请可以获得包括以下技术效果:
[0024]本申请针对NVM介质,充分考虑NOR FLASH的特性,保障防掉电功能正确的同时尽
量提高性能。
[0025]与之前设计的不同之处,一是优化Flash硬件层页更新操作,预防页的频繁使用,避免将页过早写坏,导致整个产品的不能使用,缩短该产品生命周期的问题;二是恢复数据时,若出现多次恢复到相同目标页的数据操作,即,出现目标地址重叠现象,优化掉可避免的擦写操作,减少目标页地址的使用次数,保证了产品生命周期。
[0026]此外,本发明实施例由原来的双备份机制改为单备份机制,缩短了文件数据的存储时间,提升了产品的响应效率。
[0027]当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
【专利附图】

【附图说明】
[0028]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0029]图1是本申请实施例的方法流程图;
[0030]图2是本申请方法实施例的第一实施例的流程图;
[0031 ] 图3是图2示例中从标识页区选择当前有效标识页的流程图;
[0032]图4a是本申请方法实施例的第二实施例的流程图;
[0033]图4b是本申请方法实施例的第二实施例的另一流程图;
[0034]图5是本申请方法实施例的第三实施例的流程图;
[0035]图6是本申请装置实施例的结构示意图;
[0036]图7是本申请装置实施例的又一装置结构示意图;
[0037]图8是本申请装置实施例的又一装置结构示意图;
[0038]图9是本申请装置实施例的又一装置结构示意图。
【具体实施方式】
[0039]以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
[0040]本串请实施例涉及的概念:
[0041]指定规则:从备份区的指定区域的第一页开始使用,依照页码递增顺序使用,若已达备份区的末尾页,下次使用时返回备份区的第一页继续循环使用。
[0042]备份区:由N (N>1)页组成的连续区域,根据指定规则选择其中一页作为起始页,用来备份写入的数据,即写入备份项。
[0043]标识页区:由N (N>1)页组成的连续区域,根据指定规则选择其中一页作为有效页,用来记录当前备份项的有效信息。
[0044]标识页格式:备份项添加是否成功标识+当如标识页是否有效标识+顺序号+备份区使用起始页(TLV) +备份区剩余大小(TLV) +数据体,其中,填充后的目标地址对应的每页逻辑地址偏移,与备份区起始页一一对应,即,每一个记录的逻辑地址对应一个从指定起始页位置开始的备份区地址数据。TLV是指数据结构,其中,T:tag,一种数据标识;L:长度:数据值。T表示数据类型;L决定所要的数据长度,V是需要的实际数据。
[0045]数据填充要求:目标地址为起始页地址,数据长度为页大小倍数。
[0046]本申请的丰要思想是:
[0047]按照指定规则使用备份区,同时设置标识页,对掉电时的数据备份进行标记,在数据恢复时,按照标识页的记载恢复数据,避免了盲目的恢复数据对硬件反复擦写,延长了硬件的使用寿命。
[0048]如图1所示,该方法包括:
[0049]步骤101:当有外部数据输入时,要对外部数据进行备份,即添加备份项;如果添加成功,则执行步骤102 ;否则,执行步骤106 ;
[0050]步骤102:判断是否需要继续添加备份项,如果是,返回步骤101,否则,执行步骤103 ;
[0051]步骤103:置位标识页,即添加备份项置位标识,当前标识页为当前有效标识页;如果置位成功,执行步骤104,否则执行步骤106 ;
[0052]步骤104:恢复数据,即把备份项从备份区到写入数据恢复后需要放入的目标地址;如果写入成功,执行步骤105,否则,执行步骤106 ;
[0053]步骤105:将当前有效标识页内有效页标识位清位,使该页变成无效页,结束;
[0054]步骤106:返回错误,结束流程。
[0055]下面以三种实施例对本申请方法的实现作进一步说明。
[0056]I)第一实施例:
[0057]如图2所示,包括:
[0058]步骤210:外部有数据输入,则要对外部数据进行备份,即,添加备份项。按照指定规则初始化相关全局变量,包括指定备份区的起始页位置。
[0059]本实施例中,对于备份区的起始页位置的指定规则是指:从备份区的指定区域的第一页开始使用,依照页码递增顺序使用,若已达备份区的末尾页,下次使用时返回备份区的第一页继续循环使用。
[0060]上述相关全局变量是指:备份区的起始页地址、可使用备份区的页数、备份区的结束页地址。前两个全局变量在置位时(SetFlag)都会写到相对应的标识页的头信息里。在恢复数据时会用到相关全局变量。备份区的结束页地址可以防止将备份项写入所述备份区时发生数据溢出。
[0061]步骤220:根据所述起始页位置将备份项写入所述备份区;
[0062]上述步骤210至步骤220,是对步骤101的细化操作。
[0063]步骤230:备份项成功写入备份区后,从标识页区选择一页作为当前有效标识页,依据标识页格式将备份项的相关信息写入所述当前有效标识页的数据体部分。
[0064]本实施例中,对于标识页区使用指定规则是指:对标识页区页数为N (N>0),从第一页到第N页依次循环使用。例如:标识页区有3页,第一次使用时,用第I页,顺序号I写入该标识页头信息内;第2次使用时,用第2页,顺序号2写入该标识页头信息内,第3次使用时用第3页,顺序号3写入该标识页数据头部分;第4次使用时,从标识页区内查找一个顺序号最大那一页,即第3页,该页的下一页作为当前备份信息的当前有效标识页,即用第I页,顺序号4写入该标识页头信息内;依次类推,相当于一个循环链表的概念。
[0065]所述从标识页区成功选择一页作为当前有效标识页后,在当前有效标识页中添加置位标识,以通过置位标识标明备份项添加成功。上述步骤230是对步骤103的细化操作。
[0066]从标识页区选择当前有效标识页的流程,包括:
[0067]在标识页区内,依次读取标识页地址;
[0068]如果当前标识页未使用,则当前标识页为当前有效标识页;否则继续查找下一个未使用页作为当前有效标识页;
[0069]若标识页区中所有标识页都已被使用,则标识页区内顺序号最大页的下一页为当前有效标识页。
[0070]具体地,如图3所示,包括:
[0071]步骤301:获取标识页区的首地址;
[0072]步骤302:读取第M (L>M>0,L是标识页区的总页数)标识页头信息,获取顺序号值N;
[0073]步骤303:获取最大顺序号值N,并记录R=N ;
[0074]步骤304:判断R=Oxffffffff是否成立,Oxffffffff是擦除Flash页后的原始值,可根据需要设定;如果是,执行步骤306,否则,执行步骤305 ;
[0075]步骤305:获取下一标识页地址,M=M+1,若M=L,返回步骤309,否则,返回步骤302 ;
[0076]步骤306:获取上一标识页地址,并获取该标识页数据,判断该标识页是否处于未使用状态,即判断该标识页数据是否都为OxFF,如果是,执行步骤307,否则,执行步骤308 ;
[0077]步骤307:表明是第一次使用该标识页,返回标识页区首页地址,结束。
[0078]步骤308:返回第M标识页地址,结束;
[0079]步骤309:若标识页区域扫描完毕,返回顺序号最大页下一页地址。
[0080]步骤240:依据所述当前有效标识页和所述备份项进行数据恢复。
[0081]具体来说,恢复数据时,从标识页区获取所述当前有效标识页,从所述当前有效标识页内读取备份项的相关信息,依据该备份项的相关信息把备份项从备份区写入到数据恢复后需要放入的目标地址。上述步骤240是对步骤104的细化操作。
[0082]通常,根据写入标识页数据体的位置,最靠前的逻辑地址偏移是最早写入的。在现有技术里面,对多个目标地址重复时,就会机械地对这些目标地址反复进行恢复。而本实施例在恢复数据时,若标识页中记录的目标地址有重叠部分,只恢复最新一次记录该目标地址所对应的备份区页数据,以减少不必要的Flash擦写。
[0083]步骤250:恢复数据成功后,把当前有效标识页标记为无效状态。上述步骤250是对步骤105的细化操作。
[0084]2)第二实施例:
[0085]如果待备份数据的长度大小不是标识页大小的整数倍,如图4a所示,步骤220还进一步包括:
[0086]步骤2201:当待备份数据的长度大小不是页大小的整数倍时,对所述待备份数据进行填充,使填充后的待备份数据长度大小是页大小的整数倍:[0087]以写入目标地址的起始页地址为第一目标地址,读出该页数据;
[0088]以待写入目标地址的页内偏移为第二目标地址,拷贝待备份数据,数据长度为外界输入;
[0089]将第一目标地址所在页的所有数据与第二目标地址的待备份数据组装为备份项;
[0090]若仍不符合“数据填充要求”,则以第一目标地址的下页地址为目标地址,即第三目标地址,则继续进行组装为符合“数据填充要求”的备份项:
[0091]读取该第三目标地址所在页的所有数据;
[0092]以待写入目标地址的页内偏移为第四目标地址,拷贝剩余待备份数据;
[0093]将所述第三目标地址所在页的所有数据与所述第四目标地址的剩余待备份数据组装为备份项。
[0094]步骤2203:根据所述起始页位置和填充后得到的所述备份项的长度,将所述备份项写入备份区。
[0095]或者,如果待备份数据待写入的目标地址非起始页地址,如图4b所示,步骤220还进一步包括:
[0096]步骤2202:当待备份数据待写入的目标地址非起始页地址时,对待备份数据填充,
[0097]以写入目标地址的起始页地址为第一目标地址,读出该页数据;
[0098]以待写入目标地址的页内偏移为第二目标地址,拷贝待备份数据,数据长度为外界输入;
[0099]将第一目标地址所在页的所有数据与第二目标地址的待备份数据组装为备份项;将组装后的符合“数据填充要求”的所述待备份数据作为备份项;
[0100]步骤2204:根据所述起始页位置和填充后得到的所述备份项的长度,将所述备份项写入备份区。
[0101]举例来说,备份区主要采用Flash介质,根据现有技术,Flash的擦写的一般规则是:写之数据前必须把该页擦除,擦除以页或块为单位。例如:页大小:100Byte,页起始位置:00,页结束位置:100。外部有数据要写入地址:10,写入过程:首先,擦除该页,从00?100的位置都要擦除。那么该页所有原先数据都会消失;其次,写入该页内起始地址为10的数据。
[0102]但是,擦除的过程可能会丢失重要数据,为了避免这种情况,本实施例的设计为:在擦除之前,把该页的数据全部读取出来,与待写入的数据进行前后组装成新的一页数据,作为备份项写入备份区。向备份区写入备份项成功后,擦除目标地址:10,即擦除该页数据。恢复时,从备份区中去读已备份数据,写入到目标地址中。
[0103]例如:页大小0x100,目标地址:0xl050,该页起始页地址:0xl000。外部有数据写入目标地址,长度为0x10,根据要求需要先对该数据进行填充:
[0104]从起始页开始,读取该页数据,放在缓冲区P1,
[0105]把外部输入数据复制到Pl区域的0x50处(相对位置偏移),长度为0x10,即只修改需要修改的部分;
[0106]然后将填充后的数据作为备份项写入备份区。[0107]这防止了 0x1050?0x1000和0x1060?0x1100区域之间的数据的丢失。
[0108]再举一个例子,对于单个备份项单页的情况,填充数据的方式:
[0109]外部有数据要写入目标地址0x0012 (目标地址起始页地址为0x0000),长度为0x10。按照现有技术,首先擦除目标地址所在的页,所述擦除即以0x0000为起始地址,以页大小(例如256)为长度的区域都擦除为OxFF。假如此时断电,该页的数据信息会全部掉失,造成系统故障。本实施例中,首先把目标地址所在页的数据与待写入的数据进行组装,即,0x0012之前的数据+待写入数据(长度0x10)+ (0x0012+0x10)偏移之后的数据组装,在步骤220中,把该组装好的数据作为备份项写入备份区,在步骤240中,恢复数据时,把备份到备份区的数据(即前述备份项)从备份区写入到数据恢复后需要放入的目标地址。
[0110]对于单个备份项多页的情况,填充数据的方式:
[0111]外部有数据要写入目标地址OxOOR)(目标地址起始页地址为0x0000),长度为0x20。按照现有技术,首先擦除目标地址所在的页,所述擦除即以0x0000为起始地址,以页大小(例如256)为长度的区域都擦除为OxFF。假如此时断电,该页的数据信息会全部掉失,造成系统故障。本实施例中,首先把目标地址所在页的数据与待写入的数据进行组装,即,OxOOFO之前的数据+待写入数据(长度0x20 ) + (0x00F0+0x20 )偏移之后的数据组装,此时组装后的数据长度不符合“数据填充要求”,则应继续进行填充,即以该目标地址的下页起始地址(0x0100 ) +页内偏移(0x00F0+0x20 )%0xl00 )为目标地址,读取页内剩余数据组装成备份项。在步骤220中,把该组装好的数据作为备份项写入备份区,在步骤240中,恢复数据时,把备份到备份区的数据(即前述备份项)从备份区写入到数据恢复后需要放入的目标地址。
[0112]多个备份项的情况下,还要考虑填充数据的来源。填充的数据来源包括:
[0113]I)目标地址的数据,添加的新备份项的目标地址与备份区中已存在的有效备份的目标地址没有重叠,即物理地址页不再同一页内。
[0114]2)备份区的数据,添加的新备份项的目标地址与备份区中已存在的有效备份的目标地址在同一页内。
[0115]例如:目标地址起始页地址为0x0000,页大小为256,长度为0x10。外部数据要写入目标地址0x0012,把目标地址所在的页数据与要写入的数据进行组装,S卩,0x0012之前的数据+待写入数据(长度0x10) + (0x0012+0x10)偏移之后的数据组装,把该组装好的数据作为备份项写入备份区,然后把该页的目标地址写入当前有效标识页的数据体部分。外界第二次有数据要写入目标地址0x30,长度为0x10。此时填充数据就要考虑到数据的来源问题,首先检查已经备份的备份项的目标地址偏移与要添加的备份项的目标地址是否在同一页内,如果是,则从已备份的备份项中取得数据进行组装,否则,从目标地址所在的页内取得数据进行组装。很明显,此次新添加备份项的目标地址与已备份的备份项的逻辑地址偏移在同一页内,则从已备份的备份项中取得数据进行组装,即填充数据来源于备份区。在恢复数据时,若当前有效标识页内记录的逻辑地址信息有重叠部分,只恢复最后一次写入的逻辑地址。
[0116]3)第三实施例:
[0117]步骤220与步骤230之间,如图5所示,还包括:
[0118]步骤221:若继续添加新的备份项,执行步骤210,否则进入步骤230。[0119]添加新的备份项,即连续有多次外界数据进行备份,统一进行标识页置位,统一恢复数据。例如:第一次有数据要写入的目标地址0x10,长度为0x02,组装数据写入备份区第n页;第二次有数据要写入0x20,长度为0x02,组装数据写入备份区写入n+1页,依次类推;然后进行标识页置位,最后进行恢复数据。
[0120]当然,对是否新加备份项的判断,只要在置位有效标识页操作之前,都可以进行本步骤。上述步骤221是对步骤102的细化操作。
[0121]本发明实施例还提供了相应的装置,如图6所示,包括:
[0122]初始化模块410,用于根据指定规则初始化全局变量,包括指定备份区的起始页位置;
[0123]写入模块420,用于根据所述起始页位置将备份项写入所述备份区;
[0124]标识页选择模块430,用于在所述备份项写入备份区后,从标识页区选择一页作为当前有效标识页,依据标识页格式将备份项的相关信息写入所述当前有效标识页的数据体部分;
[0125]恢复模块440,用于依据所述当前有效标识页和所述备份项进行数据恢复,恢复时当前有效标识页为标识页区域最大顺序号页。
[0126]上述装置中:
[0127]恢复模块440,进一步用于从标识页区获取所述当前有效标识页,从所述当前有效标识页内读取备份项的相关信息,依据该备份项的相关信息把备份项从备份区写入到数据恢复后需要放入的目标地址。
[0128]所述恢复模块440,还用于恢复数据成功后,把当前有效标识页标记为无效状态。
[0129]所述标识页选择模块430,还用于在当前有效标识页中添加置位标识,以通过所述置位标识标明备份项添加成功。
[0130]在另一实施例中,如图7所示,上述装置还包括:填充模块450,用于当待备份数据待写入的目标地址格非起始页地址时或者,当待备份数据的长度大小不是页大小的整数倍时,对所述待备份数据进行填充:
[0131]首先,以待写入目标地址的起始页地址为第一目标地址,读取该第一目标地址所在页的所有数据;其次,以待写入目标地址的页内偏移为第二目标地址,拷贝待备份数据,数据长度为外界输入;最终,将所述第一目标地址所在页的所有数据与所述第二目标地址的待备份数据组装为备份项;若仍不符合“数据填充要求”,则以第一目标地址的下页地址为目标地址,即第三目标地址,则继续进行组装为符合“数据填充要求”的备份项:读取该第三目标地址所在页的所有数据;以待写入目标地址的页内偏移为第四目标地址,拷贝剩余待备份数据;将所述第三目标地址所在页的所有数据与所述第四目标地址的剩余待备份数据组装为备份项;根据所述备份区起始页位置和填充后得到的所述备份项的长度,将所述备份项依次写入备份区;
[0132]所述写入模块420,进一步用于根据所述起始页位置和填充后得到的所述备份项的长度,将所述备份项写入备份区。
[0133]所述标识页选择模块430,从标识页区选择一页作为当前有效标识页时,进一步用于在标识页区内,依次读取标识页地址;如果当前标识页未使用,则当前标识页为当前有效标识页;否则继续查找下一个未使用页作为当前有效标识页;若标识页区中所有标识页都已被使用,则查找标识页区内顺序号最大一页的下一页作为当前有效标识页。
[0134]具体包括:获取标识页区的首地址;
[0135]读取第M (M>0)标识页头信息,获取顺序号值N ;[0136]获取最大顺序号值N,并记录R=N ;
[0137]R=Oxffffffff时,Oxffffffff是擦除Flash页后的原始值,获取下一标识页地址,M=M+1,返回读取第M (M>0)标识页头信息;
[0138]R为OxFFFFFFFF,获取上一标识页地址,并获取该标识页数据,判断该标识页是否处于未使用状态,如果是,返回标识页区首页地址,结束;否则,返回该标识页地址,结束。
[0139]R不为OxFFFFFFFF,则查找该标识页区内顺序号最大一页,把该页下一页地址返回。
[0140]在另一实施例中,如图8所示,上述装置还包括:判断模块460,用于判断是否新加备份项,当需要新加备份项时,触发所述初始化模块启动410。
[0141]在另一实施例中,如图9所示,上述装置还同时包括:填充模块450和判断模块460。填充模块450如图7所示的实施例结构功能相同,判断模块460如图8所示的实施例结构功能相同。
[0142]所述装置与前述的方法流程描述对应,不足之处参考上述方法流程的叙述,不再
--赘述。
[0143]上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。
【权利要求】
1.一种掉电保护方法,其特征在于,该方法包括: 根据指定规则初始化全局变量,包括指定备份区的起始页位置; 根据所述起始页位置将备份项写入所述备份区; 从标识页区选择一页作为当前有效标识页,依据标识页格式将备份项的相关信息写入所述当前有效标识页的数据体部分; 依据所述当前有效标识页和所述备份项进行数据恢复。
2.如权利要求1所述的方法,其特征在于,依据所述当前有效标识页和所述备份项进行数据恢复,进一步包括: 从标识页区获取标识页区域最大顺序号页为当前有效标识页,从所述当前有效标识页内读取备份项的相关信息,依据该备份项的相关信息把备份项从备份区写入到数据恢复后需要放入的目标地址。
3.如权利要求1所述的方法,其特征在于,所述从标识页区选择一页作为当前有效标识页,还包括: 在当前有效标识页中添加置位标识,以通过所述置位标识标明备份项添加成功。
4.如权利要求1所述的方法,其特征在于,所述从标识页区选择一页作为当前有效标识页,进一步包括: 在标识页区内,依次读取标识页地址; 如果当前标识页未使用,则当前标识页为当前有效标识页;否则继续查找标识页区域内第一个未使用页作为当前有效标识页; 若标识页区中所有标识页都已被使用,则查找标识页区域内顺序号最大页,该最大页的下一页地址作为当前有效标识页。
5.如权利要求1所述的方法,其特征在于,依据所述当前有效标识页和所述备份项进行数据恢复,还包括: 若标识页中记录的目标地址有重叠部分,只恢复最新一次记录该目标地址所对应的备份项。
6.如权利要求1所述的方法,其特征在于,根据所述起始页位置将备份项写入所述备份区,进一步包括: 当待备份数据待写入的目标地址非起始页地址时,或者,当待备份数据的长度大小不是页大小的整数倍时,对所述待备份数据进行填充。
7.根据权利要求6所述的方法,其特征在于,当待备份数据待写入的目标地址非起始页地址时对所述待备份数据进行填充包括: 以待写入目标地址的起始页地址为第一目标地址,读取该第一目标地址所在页的所有数据; 以待写入目标地址的页内偏移为第二目标地址,拷贝待备份数据,数据长度为外界输A ; 将所述第一目标地址所在页的所有数据与所述第二目标地址的待备份数据组装为备份项; 根据所述备份区起始页位置和填充后得到的所述备份项的长度,将所述备份项依次写入备份区。
8.根据权利要求7所述的方法,其特征在于,当待备份数据的长度大小不是页大小的整数倍时,对所述待备份数据进行填充包括: 以第一目标地址的下页地址为第三目标地址,读取该第三目标地址所在页的所有数据; 以待写入目标地址的页内偏移为第四目标地址,拷贝剩余待备份数据; 将所述第三目标地址所在页的所有数据与所述第四目标地址的剩余待备份数据组装为备份项; 根据所述备份区起始页位置和填充后得到的所述备份项的长度,将所述备份项依次写入备份区。
9.如权利要求1所述的方法,其特征在于,该方法还包括: 若需要继续添加新的备份项,返回指定备份区的起始页位置、结束页位置的步骤继续添加。
10.一种掉电保护装置,其特征在于,该装置包括: 初始化模块,用于根据指定规则初始化全局变量,包括指定备份区的起始页位置; 写入模块,用于根据所述起始页位置将备份项写入所述备份区; 标识页选择模块,用于在所述备份项写入备份区后,从标识页区选择一页作为当前有效标识页,依据标识页格式将备份项的相关信息写入所述当前有效标识页的数据体部分;恢复模块,用于依据所述当 前有效标识页和所述备份项进行数据恢复。
【文档编号】G06F11/14GK103617101SQ201310680713
【公开日】2014年3月5日 申请日期:2013年12月12日 优先权日:2013年12月12日
【发明者】林建良, 吴海亮, 刘海蛟, 肖洋, 林琳 申请人:北京旋极信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1