CN104598330A - 基于双备份的数据保存和校验方法 - Google Patents

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

Info

Publication number
CN104598330A
CN104598330A CN201310526859.1A CN201310526859A CN104598330A CN 104598330 A CN104598330 A CN 104598330A CN 201310526859 A CN201310526859 A CN 201310526859A CN 104598330 A CN104598330 A CN 104598330A
Authority
CN
China
Prior art keywords
data
byte
backup
backup data
raw data
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.)
Granted
Application number
CN201310526859.1A
Other languages
English (en)
Other versions
CN104598330B (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.)
AVIC No 631 Research Institute
Original Assignee
AVIC No 631 Research Institute
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 AVIC No 631 Research Institute filed Critical AVIC No 631 Research Institute
Priority to CN201310526859.1A priority Critical patent/CN104598330B/zh
Publication of CN104598330A publication Critical patent/CN104598330A/zh
Application granted granted Critical
Publication of CN104598330B publication Critical patent/CN104598330B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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 (8)

1.一种基于双备份的数据保存和校验方法,其特征在于:所述方法包括以下步骤:
1)数据备份:根据所要保存的原始数据产生备份数据,并分别进行保存;所述备份数据包括第一备份数据以及第二备份数据;所述第一备份数据和第二备份数据的编码方式是不同的;
2)数据恢复:分别读取第一备份数据和第二备份数据,并进行正确性校验;若校验成功,则所述第一备份数据就是正确的原始数据;若校验失败,则判定存储的数据出错,原始数据无法恢复。
2.根据权利要求1所述的基于双备份的数据保存和校验方法,其特征在于:所述步骤1)中产生第一备份数据的具体实现方式是:
1.1.1)获取需要保存的原始数据;
1.1.2)将所述原始数据进行拷贝,直接将拷贝数据作为第一备份数据。
3.根据权利要求1所述的基于双备份的数据保存和校验方法,其特征在于:所述步骤1)中产生第二备份数据的具体实现方式是:
1.2.1)获取需要保存的原始数据;
1.2.2)对所述原始数据以字节为单位,根据各原始数据字节中所含1的个数的奇偶性,依次产生第二备份数据的各个字节。
4.根据权利要求3所述的基于双备份的数据保存和校验方法,其特征在于:所述步骤1.2.2)中产生各第二备份数据字节的具体实现方式是:
1.2.2.1)确定所述原始数据字节中所含1的个数是奇数还是偶数;
1.2.2.2)若所述原始数据字节中所含1的个数是奇数,则将所述原始数据字节本身作为第二备份数据的对应字节;若所述原始数据字节中所含1的个数是偶数,则将所述原始数据字节逐位变反,形成反码字节,并将所述反码字节作为第二备份数据的对应字节。
5.根据权利要求1所述的基于双备份的数据保存和校验方法,其特征在于:所述步骤2)中数据校验和恢复的具体实现方式是:
2.1)以字节为单位,分别读取第一备份数据和第二备份数据的各个字节;
2.2)对每一对所述第一备份数据字节和第二备份数据字节,分别进行校验;
2.3)若所述每一对备份数据字节全都校验成功,则所述第一备份数据就是恢复出的正确的原始数据;若至少有一对备份数据字节校验失败,则表明存储的数据出错,原始数据无法恢复。
6.根据权利要求5所述的基于双备份的数据保存和校验方法,其特征在于:所述步骤2.2)中对各对备份数据字节校验的具体实现方式是:
2.2.1)确定所述第一备份数据字节中所含1的个数的奇偶性;
2.2.2)若所述第一备份数据字节中所含1的个数是奇数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节:是则校验成功,否则校验失败;若所述第一备份数据字节中所含1的个数是偶数,则判断对应的第二备份数据字节是否等于所述第一备份数据字节的反码,是则校验成功;否则校验失败。
7.根据权利要求1-6任一权利要求所述的基于双备份的数据保存和校验方法,其特征在于:所述基于双备份的数据保存和校验方法在步骤2)之后还包括:
3)输出数据是否成功恢复的标志,当成功恢复时给出恢复后的原始数据,当数据出错时或者给出警示信息、或者给出默认的安全值。
8.根据权利要求7所述的基于双备份的数据保存和校验方法,其特征在于:所述需要保存的原始数据是单个字节或多个字节。
CN201310526859.1A 2013-10-30 2013-10-30 基于双备份的数据保存和校验方法 Active CN104598330B (zh)

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 true CN104598330A (zh) 2015-05-06
CN104598330B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808390A (zh) * 2016-04-29 2016-07-27 合肥美的电冰箱有限公司 一种家电信息自检验自恢复的方法、系统和家电
CN106843022A (zh) * 2015-12-03 2017-06-13 中国航空工业集团公司雷华电子技术研究所 一种提高嵌入式控制系统输出可靠性的方法
CN109979503A (zh) * 2019-03-22 2019-07-05 安徽大学 一种在内存中实现汉明距离计算的静态随机存储器电路结构
CN112181713A (zh) * 2020-10-10 2021-01-05 上海威固信息技术股份有限公司 一种计算机存储系统的数据恢复方法及恢复系统

Citations (5)

* Cited by examiner, † Cited by third party
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
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 青岛海信移动通信技术股份有限公司 一种智能终端及其数据备份方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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
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 青岛海信移动通信技术股份有限公司 一种智能终端及其数据备份方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843022A (zh) * 2015-12-03 2017-06-13 中国航空工业集团公司雷华电子技术研究所 一种提高嵌入式控制系统输出可靠性的方法
CN105808390A (zh) * 2016-04-29 2016-07-27 合肥美的电冰箱有限公司 一种家电信息自检验自恢复的方法、系统和家电
CN109979503A (zh) * 2019-03-22 2019-07-05 安徽大学 一种在内存中实现汉明距离计算的静态随机存储器电路结构
CN112181713A (zh) * 2020-10-10 2021-01-05 上海威固信息技术股份有限公司 一种计算机存储系统的数据恢复方法及恢复系统
CN112181713B (zh) * 2020-10-10 2021-06-04 上海威固信息技术股份有限公司 一种计算机存储系统的数据恢复方法及恢复系统

Also Published As

Publication number Publication date
CN104598330B (zh) 2017-10-20

Similar Documents

Publication Publication Date Title
US9772900B2 (en) Tiered ECC single-chip and double-chip Chipkill scheme
US20060282751A1 (en) Fault tolerant memory system
US9778861B2 (en) Systems and methods to improve the reliability and lifespan of flash memory
CN102804146A (zh) 跟踪存储器件内的错误数据的系统和方法
CA2588858A1 (en) System and method for efficient uncorrectable error detection in flash memory
TW201331946A (zh) 使用錯誤校正碼編碼以驗證錯誤校正碼解碼操作
WO2010080257A3 (en) Data error recovery in non-volatile memory
CN103703447B (zh) Mram场的干扰检测和恢复
US20160124803A1 (en) Storage Device Data Access Method and Storage Device
CN104598330B (zh) 基于双备份的数据保存和校验方法
CN110795269B (zh) 一种数据恢复验证方法、装置及设备
CN101477481A (zh) 一种自动纠错系统及方法
CN102017425A (zh) 用于执行级联纠错的方法和系统
CN103594120A (zh) 以读代写的存储器纠错方法
CN102546095B (zh) 用于检测编码二进制字中的错误的设备和方法
CN100468367C (zh) 固态存储器的安全存储系统及方法
CN108511027A (zh) 一种用于自动校正访问存储装置数据的装置及方法
WO2016122515A1 (en) Erasure multi-checksum error correction code
US20230214295A1 (en) Error rates for memory with built in error correction and detection
CN104597807A (zh) 一种星载综合电子cpu翻转加固系统及方法
CN111428280A (zh) SoC安全芯片密钥信息完整性存储及错误自修复方法
CN109726030A (zh) 包括用于误差校正电路的响应管理器的存储器架构
WO2019148792A1 (zh) 智能型存储器装置中固件自我修复方法
WO2019140888A1 (zh) 纠错码生成与校验矩阵的保护方法及矩阵存储/产生装置
US11809272B2 (en) Error correction code offload for a serially-attached memory device

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