基于双备份的数据保存和校验方法

文档序号:8282153阅读:735来源:国知局
基于双备份的数据保存和校验方法
【技术领域】
[0001] 本发明属于计算机控制领域,涉及一种基于双备份的数据保存和校验方法,尤其 涉及一种对实时控制系统中重要数据进行双备份保存和正确性校验的方法。
【背景技术】
[0002] 在基于微处理器的实时控制系统中,经常需要把一些重要数据保存在FLASH或 EEPROM等非易失性存储器中。由于器件的瞬时或永久性失效以及各种外部环境的干扰,存 储的数据有可能出错。为此,通常采用对重要数据进行"双备份"的方法,以检验数据是否 出现了错误。具体方法是,将需要保存的数据分别存放在两个地方,读出使用时先比较两处 的数据是否一致,若不一致就表明出现了错误。由于备份数据之间的最小"汉明距离"(互 异的二进制位数)只有2,所以这种方法的检错能力实际上很有限。如果两个备份数据中各 有一个二进制位发生了翻转(〇变1、1变〇)、而位置又恰好相同,则差错就不可能被发现,从 而导致将错误数据当成正确数据来使用,给控制系统的可靠性和安全性带来隐患。

【发明内容】

[0003] 为了解决【背景技术】中存在的上述技术问题,本发明提供了一种可显著提高发现错 误的能力、可保证重要数据使用的正确性和安全性的基于双备份的数据保存和校验方法。
[0004] 本发明的技术解决方案是:本发明提供了一种基于双备份的数据保存和校验方 法,其特殊之处在于:所述方法包括以下步骤:
[0005] 1)数据备份:根据所要保存的原始数据产生备份数据,并分别进行保存;所述备 份数据包括第一备份数据以及第二备份数据;所述第一备份数据和第二备份数据的编码方 式是不同的;
[0006] 2)数据恢复:分别读取第一备份数据和第二备份数据,并进行正确性校验;若校 验成功,则所述第一备份数据就是恢复出的正确的原始数据;若校验失败,则判定存储的数 据出错,原始数据无法恢复。
[0007] 上述步骤1)中产生第一备份数据的具体实现方式是:
[0008] 1. 1. 1)获取需要保存的原始数据;
[0009] I. 1. 2)将所述原始数据进行拷贝,直接将拷贝数据作为第一备份数据。
[0010] 上述步骤1)中产生第二备份数据的具体实现方式是:
[0011] 1. 2. 1)获取需要保存的原始数据;
[0012] 1. 2. 2)对所述原始数据以字节为单位,根据各原始数据字节中所含1的个数的奇 偶性,依次产生第二备份数据的各个字节。
[0013] 上述步骤1. 2. 2)中产生各第二备份数据字节的具体实现方式是:
[0014] 1. 2. 2. 1)确定所述原始数据字节中所含1的个数是奇数还是偶数;
[0015] 1. 2. 2. 2)若所述原始数据字节中所含1的个数是奇数,则将所述原始数据字节本 身作为第二备份数据的对应字节;若所述原始数据字节中所含1的个数是偶数,则将所述 原始数据字节逐位变反,形成反码字节,并将所述反码字节作为第二备份数据的对应字节。
[0016] 上述步骤2)中数据校验和恢复的具体实现方式是:
[0017] 2. 1)以字节为单位,分别读取第一备份数据和第二备份数据的各个字节;
[0018] 2. 2)对每一对所述第一备份数据字节和第二备份数据字节,分别进行正确性校 验;
[0019] 2. 3)若所述每一对备份数据字节全都校验成功,则所述第一备份数据就是恢复出 的正确的原始数据;若至少有一对备份数据字节校验失败,则表明存储的数据出错,原始数 据无法恢复。
[0020] 上述步骤2. 2)中对各对备份数据字节校验的具体实现方式是:
[0021] 2. 2. 1)确定所述第一备份数据字节中所含1的个数的奇偶性;
[0022] 2. 2. 2)若所述第一备份数据字节中所含1的个数是奇数,则判断对应的第二备份 数据字节是否等于所述第一备份数据字节:是则校验成功,否则校验失败;若所述第一备 份数据字节中所含1的个数是偶数,则判断对应的第二备份数据字节是否等于所述第一备 份数据字节的反码,是则校验成功;否则校验失败。
[0023] 上述基于双备份的数据保存和校验方法在步骤2)之后还可包括:
[0024] 3)输出数据是否成功恢复的标志,当成功恢复时给出恢复后的原始数据,当数据 出错时或者给出警示信息、或者给出默认的安全值。
[0025] 上述基于双备份的数据保存和校验方法中,需要保存的原始数据可以是单个字节 或多个字节。
[0026] 本发明的优点是:
[0027] 本发明提供了一种基于双备份的数据保存和校验方法,该方法明通过改变传统双 备份方法中的第二个备份,即将原来无条件取数据原码改为仅在原字节中"1"的位数为奇 数时才取原码、偶数时取其反码,在不明显增加处理复杂度的情况下,增大了备份码字之间 的汉明距离,从而可提高对数据差错的检测能力。这对于计算资源有限而可靠性要求又很 高的嵌入式实时控制系统来说,具有很大的实用价值。
【具体实施方式】
[0028] 本发明提供了一种基于双备份的数据保存和校验方法,该方法包括以下步骤:
[0029] 1)数据备份:根据所要保存的原始数据产生备份数据,并分别进行保存;所述备 份数据包括第一备份数据以及第二备份数据;所述第一备份数据和第二备份数据的编码方 式是不同的;所述的要保存的原始数据可以是单个字节或多个字节。
[0030] 其中:
[0031] 产生第一备份数据的具体实现方式是:
[0032] 1. 1. 1)获取需要保存的原始数据;
[0033] I. 1. 2)将所述原始数据进行拷贝,直接将拷贝数据作为第一备份数据。
[0034] 产生第二备份数据的具体实现方式是:
[0035] I. 2. 1)获取需要保存的原始数据;
[0036] 1. 2. 2)对所述原始数据以字节为单位,根据各原始数据字节中所含1的个数的奇 偶性,依次产生第二备份数据的各个字节。
[0037] 上述步骤I. 2. 2)中产生各第二备份数据字节的具体实现方式是:
[0038] 1. 2. 2. 1)确定所述原始数据字节中所含1的个数是奇数还是偶数;
[0039] 1. 2. 2. 2)若所述原始数据字节中所含1的个数是奇数,则将所述原始数据字节本 身作为第二备份数据的对应字节;若所述原始数据字节中所含1的个数是偶数,则将所述 原始数据字节逐位变反,形成反码字节,并将所述反码字节作为第二备份数据的对应字节。
[0040] 2)数据恢复:分别读取第一备份数据和第
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1