一种存储数据的恢复方法

文档序号:6629719阅读:306来源:国知局
一种存储数据的恢复方法
【专利摘要】本发明公开了一种存储数据的恢复方法。所述方法包括:将设定的存储数据写入原存储单元,将所述存储数据的两备份数据分别写入预先分配的两个备份单元,所述原存储单元、所述两个备份单元三者地址不连续;读取所述存储数据时,检测所述原存储单元、所述两个备份单元的三个数据是否一致;若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正。通过本发明的技术方案,能够在存储数据被破坏后的下一次读取时自动进行恢复。
【专利说明】一种存储数据的恢复方法

【技术领域】
[0001]本发明涉及数据存储领域,尤其涉及一种存储数据的恢复方法。

【背景技术】
[0002]在2.4G/5G蓝牙等电子设备中,配对的ID以及一些配置信息会使用EEPR0M、FLASH等存储设备进行保存,从而使得用户在后续使用设备时,不用再重新输入配对新或者其他配置信息。
[0003]目前市场上的同类外设产品中,相关配置信息都存储在产品芯片内部的可重复擦写的存储空间单元或芯片外部的可重复擦写的存储器中,存储方式相对简单,如果程序运行错误很容易对存储空间单元中的数据进行改写或者破坏,并且此类数据破坏是无法恢复的,严重时可能给用户造成极大的负面影响,使得用户认为产品质量不良,退换货情况频繁发生。


【发明内容】

[0004]本发明的目的在于提出一种存储数据的恢复方法,能够在存储数据被破坏后的下一次读取时进行修正恢复。
[0005]为达此目的,本发明采用以下技术方案:
[0006]一种存储数据的恢复方法,包括:
[0007]将设定的存储数据写入原存储单元,将所述存储数据的两备份数据分别写入预先分配的两个备份单元,所述原存储单元、所述两个备份单元三者地址不连续;
[0008]读取所述存储数据时,检测所述原存储单元、所述两个备份单元的三个数据是否一致;
[0009]若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正。
[0010]其中,所述检测所述原存储单元、所述两个备份单元的三个数据是否一致,包括:
[0011]读取所述原存储单元、所述两个备份单元的三个存储数据并分别保存到预设的三个缓存空间;
[0012]对比所述三个缓存空间的三个缓存数据是否一致;
[0013]所述若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正,包括:
[0014]若所述三个缓存空间的三个缓存数据不一致,且其中有两个缓存空间的缓存数据相同,则用两个相同的缓存数据对另一个缓存数据进行修正;
[0015]将修正后的缓存数据写入对应的原存储单元或备份单元,以替换对应的存储数据。
[0016]其中,所述读取所述原存储单元、所述两个备份单元的三个存储数据并分别保存到预设的三个缓存空间之前,还包括:
[0017]获取所述存储数据的长度,创建三个与所述存储数据的长度对应的缓存空间。
[0018]其中,所述将修正后的缓存数据写入对应的原存储单元或备份单元之后,还包括:
[0019]释放所述三个缓存空间。
[0020]其中,所述将所述存储数据的两备份数据分别写入预先分配的两个备份单元之前,还包括:
[0021]获取所述存储数据的长度和存储格式,从存储空间中分配出两个与所述存储数据的长度和存储格式对应的备份单元。
[0022]其中,所述原存储单元、所述两个备份单元三者的大小相同。
[0023]其中,所述从存储空间中分配出两个与所述存储数据的长度和存储格式对应的备份单元之前,还包括:
[0024]确定存储空间的可用空间大小大于2倍所述存储数据的长度。
[0025]实施本发明实施例,具有如下有益效果:
[0026]本发明实施例通过将设定的存储数据写入原存储单元,将所述存储数据的两备份数据分别写入预先分配的两个备份单元,所述原存储单元、所述两个备份单元三者地址不连续;读取所述存储数据时,检测所述原存储单元、所述两个备份单元的三个数据是否一致;若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正。由于所述存储数据的原存储单元、两个备份单元三者地址不连续,异常情况下通常只是破坏其中一个存储空间的数据,因此在下一次读取数据时,可通过备份存储空间的数据对破坏的数据进行修正,有效保证了设定的存储数据的准确性。

【专利附图】

【附图说明】
[0027]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0028]图1是本发明实施例的一种存储数据的恢复方法的流程示意图。
[0029]图2是本发明实施例中写入存储数据的具体流程示意图。
[0030]图3是本发明实施例中恢复存储数据的具体流程示意图。

【具体实施方式】
[0031]下面结合本发明的附图对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032]结合图1对本发明的第一实施例进行说明。
[0033]图1是本发明第一实施例的一种存储数据的恢复方法流程图,详述如下:
[0034]步骤S101,将设定的存储数据写入原存储单元,将所述存储数据的两备份数据分别写入预先分配的两个备份单元。在本实施例中,所述存储数据的原存储单元、所述两个备份单元三者地址不连续。
[0035]在本实施例中,预先设定需要进行恢复的数据为少量的重要存储数据,例如蓝牙相关外设的配对ID信息和其他用户配置信息。获取该存储数据,额外为这些存储数据分配另外两个相同长度、并且地址不在同一连续范围的存储单元。这时需确定存储空间中剩余空闲存储空间大小,确定存储空间中剩余空闲存储空间大小满足大于2倍所述数据长度。基于此,首次写入规划的重要数据时,先将该数据先后写入对应的原存储单元,在将该数据的两备份数据写入其他两个存储单元(即备份单元),以对该数据进行两份备份。
[0036]较佳的,本实施例中所述存储数据对应的原存储单元和两个用于备份单元的大小相同,数据存储的格式也相同。
[0037]步骤S102,读取所述存储数据时,检测所述原存储单元、所述两个备份单元的三个数据是否一致。
[0038]本实施例中,读出所述存储数据时,先分配三段缓存空间,读取所述原存储单元、所述两个备份单元的数据并分别保存到这三个缓存空间,对比检测这三个缓存空间的数据是否一致。
[0039]需要说明的是,本实施例中需注意缓存空间的分配和释放,以保证缓存空间的利用率。
[0040]步骤S103,若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正。
[0041]本实施例中,若所述三个缓存空间的三个缓存数据不一致,且其中有两个缓存空间的缓存数据相同,另一个缓存空间的数据不同,则用两个相同的缓存数据对另一个缓存数据进行修正,然后将修正后的缓冲数据写入对应的原存储单元或备份单元。当存储数据有被破坏或者丢失时,通过该方法可以对被破坏的存储数据进行修正恢复。
[0042]需要说明的是,如果所述三个存储单元的数据一致,则确定为数据未被破坏或者丢失,不做修正。本实施例通过在读取规划好的存储数据时,通过与该存储数据的备份数据进行对比校验,如果一致则不做修正,否则对存储数据损坏或丢失部分的进行修正。
[0043]如图2所示,本实施例中备份存储数据的具体流程如下:
[0044]步骤S201,获取需要写入存储空间的数据。
[0045]这里的数据可能既包括设定的需要恢复的存储数据,如产品的配对ID信息以及相关用户配置信息,还可以包括其他不重要的数据。
[0046]步骤S202,将该数据写入对应的原存储单元。
[0047]本实施例中,将配对ID信息以及相关用户配置信息写入到存储单元AO中,其他数据存储在AO之外的其他存储单元。
[0048]步骤S203,获取AO中的存储数据。
[0049]步骤S204,获取AO中的存储数据的长度和存储格式,确定当前存储空间的可用空间大小为大于2倍所述存储数据的长度。
[0050]步骤S205,分配两个与AO中的存储数据的长度和存储格式对应的备份单元Al、A2。
[0051]本实施例中,需先获取AO中的存储数据的长度和存储格式,检测存储空间的空闲可用空间大小是否大于2*所述存储数据的长度。若是,这为该存储数据再分配两个与AO相同大小的备份单元A1、A2,并且,A0、A1、A2的数据存储格式相同,且在存储空间中的地址不连续。
[0052]步骤S206,将所述存储数据写入两备份单元A1、A2。
[0053]本实施例中,先将AO中的存储数据写入Al,再将AO中的存储数据写入A2 ;当然,也可以先写入A2,再写入Al,或者同时写入A1、A2。
[0054]对设定的存储数据备份存储之后,如图3所示,再次读取该存储数据时,检测及恢复过程如下:
[0055]步骤S301,创建与欲读取的存储数据的长度对应的缓存空间B0、B1、B2。
[0056]本实施例中,即确定出的AO中数据的长度,临时创建三个与AO中数据的长度对应的缓存空间B0、B1、B2。
[0057]需要说明的是,缓存空间BO、B1、B2的大小可以与AO、A1、A2不相同。
[0058]步骤S302,读取A0、A1、A2中的存储数据并分别保存到B0、B1、B2。
[0059]本实施例中,读取所述原存储单元A0、两个备份单元Al、A2的三个存储数据。将AO中的数据保存到缓存空间BO JfAl中的数据保存到缓存空间BI,将A2中的数据保存到缓存空间B2。
[0060]步骤S303,对比校验B0、B1、B2的三个缓存数据是否一致,若一致,转入步骤S305。
[0061]步骤S304,若不一致,且其中有两个缓存数据相同,则用两个相同的缓存数据对另一个缓存数据进行修正,并对对存储数据进行修正。转入步骤S306。
[0062]本实施例中,若(B0,B1)相等,(B0,B2)不相等,则将B0_>B2,并将B2中修改后的缓存数据重新写入A2,以对A2中的存储数据进行覆盖恢复;
[0063]若(B0,BI)不相等,(B0,B2)相等,则将并将BI中修改后的缓存数据重新写入Al,以对Al中的存储数据进行覆盖恢复;
[0064]若(ΒΟ,ΒΙ)不相等,(Β0,Β2)不相等,(Β1,Β2)相等,则将Β1_>Β0,并将BO中修改后的缓存数据重新写入Α0,以对AO中的存储数据进行覆盖恢复。
[0065]步骤S305,若一致,则不做修正,转入步骤S306。
[0066]本实施例中,若(Β0,BI)相等,(Β0,Β2)相等,则确定为数据未被破坏,不做修正。
[0067]步骤S306,释放缓存空间Β0、Β1、Β2。
[0068]本实施例中,即释放缓存空间Β0、Β1、Β2,及时清除系统垃圾,提高缓存利用率。
[0069]通过本发明实施例,通过将所述存储数据的两备份数据分别写入预先分配的两个备份单元,所述存储数据的原存储单元、所述两个备份单元三者地址不连续;读取所述存储数据时,检测所述原存储单元、所述两个备份单元的三个数据是否一致;若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正。由于所述存储数据的原存储单元、两个备份单元三者地址不连续,通常情况只是破坏其中一个存储空间的数据,因此在下一次读取数据时,可通过其它存储空间的数据对破坏的数据进行修正,有效保证了设定的存储数据的准确性。
[0070]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利要求范围,因此,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,仍属本发明所涵盖的范围。
【权利要求】
1.一种存储数据的恢复方法,其特征在于,包括: 将设定的存储数据写入原存储单元,将所述存储数据的两备份数据分别写入预先分配的两个备份单元,所述原存储单元、所述两个备份单元三者地址不连续; 读取所述存储数据时,检测所述原存储单元、所述两个备份单元的三个数据是否一致; 若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正。
2.根据权利要求1所述的存储数据的恢复方法,其特征在于,所述检测所述原存储单元、所述两个备份单元的三个数据是否一致,包括: 读取所述原存储单元、所述两个备份单元的三个存储数据并分别保存到预设的三个缓存空间; 对比所述三个缓存空间的三个缓存数据是否一致; 所述若所述三个数据不一致,且其中有两个数据相同,则根据两个相同的数据对另一个数据进行修正,包括: 若所述三个缓存空间的三个缓存数据不一致,且其中有两个缓存空间的缓存数据相同,则用两个相同的缓存数据对另一个缓存数据进行修正; 将修正后的缓存数据写入对应的原存储单元或备份单元,以替换对应的存储数据。
3.根据权利要求2所述的存储数据的恢复方法,其特征在于,所述读取所述原存储单元、所述两个备份单元的三个存储数据并分别保存到预设的三个缓存空间之前,还包括: 获取所述存储数据的长度,创建三个与所述存储数据的长度对应的缓存空间。
4.根据权利要求3所述的存储数据的恢复方法,其特征在于,所述将修正后的缓存数据写入对应的原存储单元或备份单元之后,还包括: 释放所述三个缓存空间。
5.根据权利要求1所述的存储数据的恢复方法,其特征在于,所述将所述存储数据的两备份数据分别写入预先分配的两个备份单元之前,还包括: 获取所述存储数据的长度和存储格式,从存储空间中分配出两个与所述存储数据的长度和存储格式对应的备份单元。
6.根据权利要求5所述的存储数据的恢复方法,其特征在于,所述原存储单元、所述两个备份单元三者的大小相同。
7.根据权利要求5所述的存储数据的恢复方法,其特征在于,所述从存储空间中分配出两个与所述存储数据的长度和存储格式对应的备份单元之前,还包括: 确定存储空间的可用空间大小大于2倍所述存储数据的长度。
【文档编号】G06F12/02GK104268035SQ201410530833
【公开日】2015年1月7日 申请日期:2014年10月10日 优先权日:2014年10月10日
【发明者】何俊宏 申请人:深圳雷柏科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1