CN104598330B - 基于双备份的数据保存和校验方法 - Google Patents
基于双备份的数据保存和校验方法 Download PDFInfo
- Publication number
- CN104598330B CN104598330B CN201310526859.1A CN201310526859A CN104598330B CN 104598330 B CN104598330 B CN 104598330B CN 201310526859 A CN201310526859 A CN 201310526859A CN 104598330 B CN104598330 B CN 104598330B
- Authority
- CN
- China
- Prior art keywords
- data
- byte
- backup
- backup data
- initial
- 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
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种基于双备份的数据保存和校验方法,该方法包括以下步骤:1)数据备份:根据所要保存的原始数据产生备份数据,并分别进行保存;备份数据包括第一备份数据以及第二备份数据;第一备份数据和第二备份数据的编码方式是不同的;2)数据恢复:分别读取第一备份数据和第二备份数据,并进行正确性校验;若校验成功,则第一备份数据就是恢复出的正确的原始数据;若校验失败,则判定存储的数据出错,原始数据无法恢复。本发明提供了一种可显著提高发现错误的能力、可保证重要数据使用的正确性和安全性的基于双备份的数据保存和校验方法。
Description
技术领域
本发明属于计算机控制领域,涉及一种基于双备份的数据保存和校验方法,尤其涉及一种对实时控制系统中重要数据进行双备份保存和正确性校验的方法。
背景技术
在基于微处理器的实时控制系统中,经常需要把一些重要数据保存在FLASH或EEPROM等非易失性存储器中。由于器件的瞬时或永久性失效以及各种外部环境的干扰,存储的数据有可能出错。为此,通常采用对重要数据进行“双备份”的方法,以检验数据是否出现了错误。具体方法是,将需要保存的数据分别存放在两个地方,读出使用时先比较两处的数据是否一致,若不一致就表明出现了错误。由于备份数据之间的最小“汉明距离”(互异的二进制位数)只有2,所以这种方法的检错能力实际上很有限。如果两个备份数据中各有一个二进制位发生了翻转(0变1、1变0)、而位置又恰好相同,则差错就不可能被发现,从而导致将错误数据当成正确数据来使用,给控制系统的可靠性和安全性带来隐患。
发明内容
为了解决背景技术中存在的上述技术问题,本发明提供了一种可显著提高发现错误的能力、可保证重要数据使用的正确性和安全性的基于双备份的数据保存和校验方法。
本发明的技术解决方案是:本发明提供了一种基于双备份的数据保存和校验方法,其特殊之处在于:所述方法包括以下步骤:
1)数据备份:根据所要保存的原始数据产生备份数据,并分别进行保存;所述备份数据包括第一备份数据以及第二备份数据;所述第一备份数据和第二备份数据的编码方式是不同的;
2)数据恢复:分别读取第一备份数据和第二备份数据,并进行正确性校验;若校验成功,则所述第一备份数据就是恢复出的正确的原始数据;若校验失败,则判定存储的数据出错,原始数据无法恢复。
上述步骤1)中产生第一备份数据的具体实现方式是:
1.1.1)获取需要保存的原始数据;
1.1.2)将所述原始数据进行拷贝,直接将拷贝数据作为第一备份数据。
上述步骤1)中产生第二备份数据的具体实现方式是:
1.2.1)获取需要保存的原始数据;
1.2.2)对所述原始数据以字节为单位,根据各原始数据字节中所含1的个数的奇偶性,依次产生第二备份数据的各个字节。
上述步骤1.2.2)中产生各第二备份数据字节的具体实现方式是:
1.2.2.1)确定所述原始数据字节中所含1的个数是奇数还是偶数;
1.2.2.2)若所述原始数据字节中所含1的个数是奇数,则将所述原始数据字节本身作为第二备份数据的对应字节;若所述原始数据字节中所含1的个数是偶数,则将所述原始数据字节逐位变反,形成反码字节,并将所述反码字节作为第二备份数据的对应字节。
上述步骤2)中数据校验和恢复的具体实现方式是:
2.1)以字节为单位,分别读取第一备份数据和第二备份数据的各个字节;
2.2)对每一对所述第一备份数据字节和第二备份数据字节,分别进行正确性校验;
2.3)若所述每一对备份数据字节全都校验成功,则所述第一备份数据就是恢复出的正确的原始数据;若至少有一对备份数据字节校验失败,则表明存储的数据出错,原始数据无法恢复。
上述步骤2.2)中对各对备份数据字节校验的具体实现方式是:
2.2.1)确定所述第一备份数据字节中所含1的个数的奇偶性;
2.2.2)若所述第一备份数据字节中所含1的个数是奇数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节:是则校验成功,否则校验失败;若所述第一备份数据字节中所含1的个数是偶数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节的反码,是则校验成功;否则校验失败。
上述基于双备份的数据保存和校验方法在步骤2)之后还可包括:
3)输出数据是否成功恢复的标志,当成功恢复时给出恢复后的原始数据,当数据出错时或者给出警示信息、或者给出默认的安全值。
上述基于双备份的数据保存和校验方法中,需要保存的原始数据可以是单个字节或多个字节。
本发明的优点是:
本发明提供了一种基于双备份的数据保存和校验方法,该方法明通过改变传统双备份方法中的第二个备份,即将原来无条件取数据原码改为仅在原字节中“1”的位数为奇数时才取原码、偶数时取其反码,在不明显增加处理复杂度的情况下,增大了备份码字之间的汉明距离,从而可提高对数据差错的检测能力。这对于计算资源有限而可靠性要求又很高的嵌入式实时控制系统来说,具有很大的实用价值。
具体实施方式
本发明提供了一种基于双备份的数据保存和校验方法,该方法包括以下步骤:
1)数据备份:根据所要保存的原始数据产生备份数据,并分别进行保存;所述备份数据包括第一备份数据以及第二备份数据;所述第一备份数据和第二备份数据的编码方式是不同的;所述的要保存的原始数据可以是单个字节或多个字节。
其中:
产生第一备份数据的具体实现方式是:
1.1.1)获取需要保存的原始数据;
1.1.2)将所述原始数据进行拷贝,直接将拷贝数据作为第一备份数据。
产生第二备份数据的具体实现方式是:
1.2.1)获取需要保存的原始数据;
1.2.2)对所述原始数据以字节为单位,根据各原始数据字节中所含1的个数的奇偶性,依次产生第二备份数据的各个字节。
上述步骤1.2.2)中产生各第二备份数据字节的具体实现方式是:
1.2.2.1)确定所述原始数据字节中所含1的个数是奇数还是偶数;
1.2.2.2)若所述原始数据字节中所含1的个数是奇数,则将所述原始数据字节本身作为第二备份数据的对应字节;若所述原始数据字节中所含1的个数是偶数,则将所述原始数据字节逐位变反,形成反码字节,并将所述反码字节作为第二备份数据的对应字节。
2)数据恢复:分别读取第一备份数据和第二备份数据,并进行正确性校验;若校验成功,则所述第一备份数据就是正确的原始数据,否则判定存储的数据出错。
其具体实现方式是:
2.1)以字节为单位,分别读取第一备份数据和第二备份数据的各个字节;
2.2)对每一对所述第一备份数据字节和第二备份数据字节,分别进行校验。
上述步骤2.2)中对各对备份数据字节校验的具体实现方式是:
2.2.1)确定所述第一备份数据字节中所含1的个数的奇偶性;
2.2.2)若所述第一备份数据字节中所含1的个数是奇数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节:是则校验成功,否则校验失败;若所述第一备份数据字节中所含1的个数是偶数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节的反码,是则校验成功;否则校验失败。
2.3)若所述每一对备份数据字节全都校验成功,则所述第一备份数据就是恢复出的正确的原始数据;若至少有一对备份数据字节校验失败,则表明存储的数据出错,原始数据无法恢复。
3)输出数据是否成功恢复的标志,当成功恢复时给出恢复后的原始数据,当数据出错时或者给出警示信息、或者给出默认的安全值。
本发明与传统方法不同,本发明中两个备份数据的编码方式是不同的,其第二个备份数据不是对原数据的简单拷贝,而是根据各字节中二进制“1”的个数的奇偶性取其原码或反码。
现假设有两个不同的数据字节a和b,二者之间的汉明距离记为k(k=1..8)。在传统的双备份方法中,这两个字节对应的16位备份码字(aa,bb)之间的汉明距离将是2k,当k=1时取得最小值2。在本发明的双备份方法中,当k为偶数(2、4、6、8)时,对应的两个备份码字之间的汉明距离仍是2k;而当k为奇数(1、3、5、7)时,备份码字之间的汉明距离则恒为8。因此,新方法中的汉明距离只有4、8、12、16等四种数值,最小值在k=2时取得,其值为4。
表1和表2分别给出了传统双备份方法和本发明的双备份方法中备份码字的一些示例(H表示十六进制,B表示二进制)
表1传统的双备份方法
原数据字节(H) | 第一备份(B) | 第二备份(B) |
00 | 00000000 | 00000000 |
01 | 00000001 | 00000001 |
02 | 00000010 | 00000010 |
03 | 00000011 | 00000011 |
.. | ... | ... |
FC | 11111100 | 11111100 |
FD | 11111101 | 11111101 |
FE | 11111110 | 11111110 |
FF | 11111111 | 11111111 |
表2本发明的双备份方法
原数据字节(H) | 第一备份(B) | 第二备份(B) |
00 | 00000000 | 11111111 |
01 | 00000001 | 00000001 |
02 | 00000010 | 00000010 |
03 | 00000011 | 11111100 |
.. | ... | ... |
FC | 11111100 | 00000011 |
FD | 11111101 | 11111101 |
FE | 11111110 | 11111110 |
FF | 11111111 | 00000000 |
不难看出,在传统双备份方法中,数据字节00H与01H、01H与03H、...、FEH与FFH等,其两个备份字节构成的16位二进制码字之间,均只有两位二进制数字不同。这样,如果那两位同时发生翻转,就会变成对方的“合法的”备份码字,错误将无法被发现。比如,若00H的两个备份字节的最低位均由0变成1,则由于两个备份相同而误认为未发生错误,并将01H当成“正确”的数据。而在本发明的双备份方法中,任何两个数据字节的16位备份码字之间,至少会有4位二进制数字不同。于是,只要16位备份码字中出错的位数不足4(3位或3位以下),就总能被发现。
下面通过两种具体实施方式,对本发明作进一步的详细说明。
实施例1-利用MCS-51系列单片机汇编语言来实现
MCS-51系列单片机是一种流行的8位微处理器,在控制领域中有着非常广泛的应用。该处理器设有专门的“奇偶标志位(程序状态字PSW的第0位)”,并有“根据状态位跳转指令(JB)”以及“按位取反指令(CPL)”。利用这些功能特点,可以很方便地实施本发明的技术方案。
数据备份时
假设待保存数据的一个字节已经放在累加器A中,则可采用如下汇编代码,在寄存器R1和R2中分别得到其第一、第二备份字节:
MOV R1,A;
JB PSW.0,skip1;
CPL A;
skip1:MOV R2,A;
数据恢复时
假设一对备份字节已分别存放在R1和R2中(R1为第一备份字节,R2为第二备份字节),则可采用如下汇编代码,在累加器A中得到恢复后的原始数据字节;
MOV A,R1;
JB PSW.0,skip2;
CPL A;
skip2:CJNE A,R2,<异常处理程序的入口地址>;
MOV A,R1;
实施例2-利用C语言通过查表来实现
如果所用的处理器没有专门的奇偶标志,则可通过简单的查表方法来实施本发明的技术方案。首先,定义一个具有256个元素的数组,其中按次序存放0,1,2,...,255所对应的第二备份字节:
unsigned char copy2[256]={255,1,2,252,4,250,249,7,8,246,245,11,243,13,14,240,16,238,237,19,235,21,22,232,231,25,26,228,28,226,225,31,32,222,221,35,219,37,38,216,215,41,42,212,44,210,209,47,207,49,50,204,52,202,201,55,56,198,197,59,195,61,62,192,64,190,189,67,187,69,70,184,183,73,74,180,76,178,177,79,175,81,82,172,84,170,169,87,88,166,165,91,163,93,94,160,159,97,98,156,100,154,153,103,104,150,149,107,147,109,110,144,112,142,141,115,139,117,118,136,135,121,122,132,124,130,129,127,128,126,125,131,123,133,134,120,119,137,138,116,140,114,113,143,111,145,146,108,148,106,105,151,152,102,101,155,99,157,158,96,95,161,162,92,164,90,89,167,168,86,85,171,83,173,174,80,176,78,77,179,75,181,182,72,71,185,186,68,188,66,65,191,63,193,194,60,196,58,57,199,200,54,53,203,51,205,206,48,208,46,45,211,43,213,214,40,39,217,218,36,220,34,33,223,224,30,29,227,27,229,230,24,23,233,234,20,236,18,17,239,15,241,242,12,244,10,9,247,248,6,5,251,3,253,254,0}。
数据备份时
假设data_byte为要保存的数据字节,则可按照如下的C代码,在copy_byte1和copy_byte2中得到其第一、第二备份字节:
copy_byte1=data_byte;
copy_byte2=copy2[data_byte];
数据恢复时
假设两个备份字节已分别赋给变量copy_byte1和copy_byte2,则可按照如下的C代码来恢复原数据字节data_byte:
if(copy_byte2==copy2[copy_byte1])
{
data_byte=copy_byte1;
}
else<异常处理>;
可以看出,上述两种实施方式都十分简单,时间花费都很小,非常适合计算资源有限的嵌入式实时控制系统。
Claims (3)
1.一种基于双备份的数据保存和校验方法,其特征在于:所述方法包括以下步骤:
1)数据备份:根据所要保存的原始数据产生备份数据,并分别进行保存;所述备份数据包括第一备份数据以及第二备份数据;所述第一备份数据和第二备份数据的编码方式是不同的;
2)数据恢复:分别读取第一备份数据和第二备份数据,并进行正确性校验;若校验成功,则所述第一备份数据就是正确的原始数据;若校验失败,则判定存储的数据出错,原始数据无法恢复;
所述步骤1)中产生第一备份数据的具体实现方式是:
1.1.1)获取需要保存的原始数据;
1.1.2)将所述原始数据进行拷贝,直接将拷贝数据作为第一备份数据;
所述步骤1)中产生第二备份数据的具体实现方式是:
1.2.1)获取需要保存的原始数据;
1.2.2)对所述原始数据以字节为单位,根据各原始数据字节中所含1的个数的奇偶性,依次产生第二备份数据的各个字节;
所述步骤1.2.2)中产生各第二备份数据字节的具体实现方式是:
1.2.2.1)确定所述原始数据字节中所含1的个数是奇数还是偶数;
1.2.2.2)若所述原始数据字节中所含1的个数是奇数,则将所述原始数据字节本身作为第二备份数据的对应字节;若所述原始数据字节中所含1的个数是偶数,则将所述原始数据字节逐位变反,形成反码字节,并将所述反码字节作为第二备份数据的对应字节;
所述步骤2)中数据校验和恢复的具体实现方式是:
2.1)以字节为单位,分别读取第一备份数据和第二备份数据的各个字节;
2.2)对每一对所述第一备份数据字节和第二备份数据字节,分别进行校验;
2.3)若所述每一对备份数据字节全都校验成功,则所述第一备份数据就是恢复出的正确的原始数据;若至少有一对备份数据字节校验失败,则表明存储的数据出错,原始数据无法恢复;
所述步骤2.2)中对各对备份数据字节校验的具体实现方式是:
2.2.1)确定所述第一备份数据字节中所含1的个数的奇偶性;
2.2.2)若所述第一备份数据字节中所含1的个数是奇数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节:是则校验成功,否则校验失败;若所述第一备份数据字节中所含1的个数是偶数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节的反码,是则校验成功;否则校验失败。
2.根据权利要求1所述的基于双备份的数据保存和校验方法,其特征在于:所述基于双备份的数据保存和校验方法在步骤2)之后还包括:
3)输出数据是否成功恢复的标志,当成功恢复时给出恢复后的原始数据,当数据出错时或者给出警示信息、或者给出默认的安全值。
3.根据权利要求1或2所述的基于双备份的数据保存和校验方法,其特征在于:所述需要保存的原始数据是单个字节或多个字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310526859.1A CN104598330B (zh) | 2013-10-30 | 2013-10-30 | 基于双备份的数据保存和校验方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310526859.1A CN104598330B (zh) | 2013-10-30 | 2013-10-30 | 基于双备份的数据保存和校验方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104598330A CN104598330A (zh) | 2015-05-06 |
CN104598330B true CN104598330B (zh) | 2017-10-20 |
Family
ID=53124144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310526859.1A Active CN104598330B (zh) | 2013-10-30 | 2013-10-30 | 基于双备份的数据保存和校验方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104598330B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843022A (zh) * | 2015-12-03 | 2017-06-13 | 中国航空工业集团公司雷华电子技术研究所 | 一种提高嵌入式控制系统输出可靠性的方法 |
CN105808390A (zh) * | 2016-04-29 | 2016-07-27 | 合肥美的电冰箱有限公司 | 一种家电信息自检验自恢复的方法、系统和家电 |
CN109979503B (zh) * | 2019-03-22 | 2021-04-30 | 安徽大学 | 一种在内存中实现汉明距离计算的静态随机存储器电路结构 |
CN112181713B (zh) * | 2020-10-10 | 2021-06-04 | 上海威固信息技术股份有限公司 | 一种计算机存储系统的数据恢复方法及恢复系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101625653A (zh) * | 2009-08-13 | 2010-01-13 | 青岛海信电器股份有限公司 | 一种多媒体产品本地数据处理校验方法 |
CN101999148A (zh) * | 2007-12-27 | 2011-03-30 | 韩商英得联股份有限公司 | 快闪存储器和平衡磨损率的闪存编程方法 |
CN102929743A (zh) * | 2012-11-28 | 2013-02-13 | 中国人民解放军国防科学技术大学 | 具有软错误容错功能的一级缓存数据存储方法及装置 |
CN103294573A (zh) * | 2013-05-23 | 2013-09-11 | 青岛海信移动通信技术股份有限公司 | 一种智能终端及其数据备份方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030135798A1 (en) * | 2001-12-13 | 2003-07-17 | Yukari Katayama | Optical disk device and data randomizing method for optical disk device |
-
2013
- 2013-10-30 CN CN201310526859.1A patent/CN104598330B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101999148A (zh) * | 2007-12-27 | 2011-03-30 | 韩商英得联股份有限公司 | 快闪存储器和平衡磨损率的闪存编程方法 |
CN101625653A (zh) * | 2009-08-13 | 2010-01-13 | 青岛海信电器股份有限公司 | 一种多媒体产品本地数据处理校验方法 |
CN102929743A (zh) * | 2012-11-28 | 2013-02-13 | 中国人民解放军国防科学技术大学 | 具有软错误容错功能的一级缓存数据存储方法及装置 |
CN103294573A (zh) * | 2013-05-23 | 2013-09-11 | 青岛海信移动通信技术股份有限公司 | 一种智能终端及其数据备份方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104598330A (zh) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10127074B2 (en) | Transaction identification synchronization | |
US9778861B2 (en) | Systems and methods to improve the reliability and lifespan of flash memory | |
US20060282751A1 (en) | Fault tolerant memory system | |
US10841039B2 (en) | System and method for transferring data and a data check field | |
CN108874576B (zh) | 一种基于纠错编码的数据存储系统 | |
CN103703447B (zh) | Mram场的干扰检测和恢复 | |
CN104598330B (zh) | 基于双备份的数据保存和校验方法 | |
JP2003507985A (ja) | 2ビット・エラーを検出し、構成要素の障害によるエラーを訂正するためのシステムおよび方法 | |
US8949694B2 (en) | Address error detection | |
CN100445963C (zh) | 一种实现高可靠性空闲链表的方法及装置 | |
CN103594120A (zh) | 以读代写的存储器纠错方法 | |
CN112214346A (zh) | 用于存储器子系统中的数据修改期间的错误检测的方法及装置 | |
CN117413252A (zh) | 具有内置错误纠正和检测的存储器的错误率 | |
WO2016122515A1 (en) | Erasure multi-checksum error correction code | |
CN100468367C (zh) | 固态存储器的安全存储系统及方法 | |
KR101512927B1 (ko) | 비휘발성 메모리의 페이지 관리 방법 및 장치 | |
CN109726030A (zh) | 包括用于误差校正电路的响应管理器的存储器架构 | |
US7240272B2 (en) | Method and system for correcting errors in a memory device | |
CN105138412B (zh) | 嵌入式微处理器高速缓存的混合纠错装置与方法 | |
CN101128802B (zh) | 数据保护用的方法和用于其实施的设备 | |
US8028221B2 (en) | Error correction and error detection method for reading of stored information data and a storage control unit for the same | |
US20030081468A1 (en) | Method and device for backing up data in a memory module and memory module | |
CN115904797B (zh) | 基于现场可编程门阵列的cpu内存诊断方法、系统和设备 | |
US11809272B2 (en) | Error correction code offload for a serially-attached memory device | |
CN105406940B (zh) | 一种基于关键变量的冗余纠错码防护方法 |
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 |