CN111352754A - 一种数据存储检错纠错方法及数据存储装置 - Google Patents

一种数据存储检错纠错方法及数据存储装置 Download PDF

Info

Publication number
CN111352754A
CN111352754A CN201811569776.XA CN201811569776A CN111352754A CN 111352754 A CN111352754 A CN 111352754A CN 201811569776 A CN201811569776 A CN 201811569776A CN 111352754 A CN111352754 A CN 111352754A
Authority
CN
China
Prior art keywords
data
storage
bits
original
storage unit
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
CN201811569776.XA
Other languages
English (en)
Other versions
CN111352754B (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.)
China National Petroleum Corp
Aerospace Science and Industry Inertia Technology Co Ltd
CNPC Chuanqing Drilling Engineering Co Ltd
Original Assignee
Aerospace Science and Industry Inertia Technology Co Ltd
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 Aerospace Science and Industry Inertia Technology Co Ltd filed Critical Aerospace Science and Industry Inertia Technology Co Ltd
Priority to CN201811569776.XA priority Critical patent/CN111352754B/zh
Publication of CN111352754A publication Critical patent/CN111352754A/zh
Application granted granted Critical
Publication of CN111352754B publication Critical patent/CN111352754B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy

Abstract

本发明提供了一种数据存储检错纠错方法及数据存储装置,方法包括:获取原始存储数据,并根据所述原始存储数据生成第一校验数据和第二校验数据;将所述原始存储数据、第一校验数据和第二校验数据分别存储至第一存储单元、第二存储单元和第三存储单元;检测是否接收到数据读取指令;如果是,则分别从所述第一存储单元、第二存储单元和第三存储单元读取第一数据、第二数据和第三数据;将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据;该方法计算简单,只需要简单的与、或、移位计算,即可对存储数据进行检错和纠错,特别适用于系统中单片机主频低、无法做大量运算的情况。

Description

一种数据存储检错纠错方法及数据存储装置
技术领域
本发明涉及数据存储领域,尤其涉及一种数据存储检错纠错方法及数据存储装置。
背景技术
在电子产品中,常使用EEPROM存储系统运行中的参数,这些参数往往需要掉电不丢失。但是硬件设计不够完善,工作环境电磁干扰强,系统供电异常,软件跑飞等因素会影响到数据存储的正确性,使数据丢失或被改写。
目前的防止数据存储错误的方法既有硬件处理,也有软件处理。硬件处理主要包括:选用宽压的EEPROM;做好写保护处理;做好电源滤波;做好复位电路等等。软件处理主要包括:软件跑飞处理;数据双备份甚至多备份;EEPROM读写驱动程序优化。
以上方法对解决EEPROM数据存储异常有很好的效果,但是考虑到设计的容错性和健壮性,软件上依然需要做数据存储的检错纠错以应对无法预测的干扰。目前已经存在的检错纠错方法是Cyclic Redundancy Check,即循环冗余检错,但是此方法计算繁琐,尤其是纠错更是复杂,甚至需要做大量的预处理,其算法复杂度不适合使用低速单片机的电子系统。
发明内容
本发明的目的在于针对上述现有技术中的数据存储检错和纠错复杂的问题,提出一种数据存储检错纠错方法及数据存储装置,复杂性较低,适用于低速单片机。
一种数据存储检错纠错方法,包括:
获取原始存储数据,并根据所述原始存储数据生成第一校验数据和第二校验数据;
将所述原始存储数据、第一校验数据和第二校验数据分别存储至第一存储单元、第二存储单元和第三存储单元;
检测是否接收到数据读取指令;
如果是,则分别从所述第一存储单元、第二存储单元和第三存储单元读取第一数据、第二数据和第三数据;
将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据。
进一步地,所述第一校验数据由所述原始存储数据的低四位数据和位“1”的个数构成。
进一步地,所述第二校验数据由所述原始存储数据的高四位数据和位“1”的个数构成。
进一步地,将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据,包括:
如果所述第一数据的低四位数据与所述第二数据的低四位数据相同,且第一数据的高四位数据与所述第三数据的高四位数据相同,则确定所述第一数据为所述原始存储数据。
进一步地,如果所述第一数据的低四位数据与所述第二数据的低四位数据不同,和/或,第一数据的高四位数据与所述第三数据的高四位数据不同,则判断所述第二数据中所示的原始存储数据位“1”的个数和所述第三数据中所示的原始存储数据位“1”的个数是否相同,如果个数不相同,则确定所述第一数据为原始存储数据。
进一步地,如果所述第二数据中所示的原始存储数据位“1”的个数和所述第三数据中所示的原始存储数据位“1”的个数相同,则将所述第二数据和第三数据进行与操作和或操作,形成构造数据。
进一步地,形成构造数据之后,计算所述第一数据中位“1”的个数以及所述构造数据中位“1”的个数;
如果所述第一数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,则所述第一数据为原始存储数据;
如果所述构造数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,则所述构造数据为原始存储数据。
一种数据存储装置,包括单片机和存储区域,所述存储区域内设置有多个存储单元,所述单片机用于执行:
获取原始存储数据,并根据所述原始存储数据生成第一校验数据和第二校验数据;
将所述原始存储数据、第一校验数据和第二校验数据分别存储至第一存储单元、第二存储单元和第三存储单元;
检测是否接收到数据读取指令;
如果是,则分别从所述第一存储单元、第二存储单元和第三存储单元读取第一数据、第二数据和第三数据;
将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据。
本发明提供的数据存储检错纠错方法及数据存储装置,计算简单,只需要简单的与、或、移位计算,即可对存储数据进行检错和纠错,特别适用于系统中单片机主频低、无法做大量运算的情况。
附图说明
图1为本发明提供的数据存储检错纠错方法一种实施例的步骤图。
图2为本发明提供的数据存储检错纠错方法一种实施例的流程图。
图3为本发明提供的数据存储装置一种实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例一
参考图1和图2,本实施例提供一种数据存储检错纠错方法,包括:
步骤S101,获取原始存储数据,并根据所述原始存储数据生成第一校验数据和第二校验数据;
步骤S102,将所述原始存储数据、第一校验数据和第二校验数据分别存储至第一存储单元、第二存储单元和第三存储单元;
步骤S103,检测是否接收到数据读取指令;
步骤S104,如果是,则分别从所述第一存储单元、第二存储单元和第三存储单元读取第一数据、第二数据和第三数据;
步骤S105,将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据。
进一步地,步骤S101中,假设原始存储数据为A,第一校验数据为B、第二校验数据为C,第一校验数据B由原始存储数据A的低四位数据和位“1”的个数构成,第二校验数据C由原始存储数据A的高四位数据和位“1”的个数构成。
第一校验数据B和第二校验数据C通过以下方法计算:
X=A&0xOF;
Y=A&0xFO;
Z为A中位“1”的个数;
B=(Z<<4)|X;
C=Z|Y。
假设原始存储数据为11000001,原始存储数据的高四位为“1100”,低四位为“0001”,位“1”的个数为3,因此,第一校验数据为00110001,第一校验数据的高四位“0011”表示原始存储数据中位“1”的个数3,第一校验数据的低四位“0001”与原始存储数据的低四位相同。第二校验数据为11000011,第二校验数据的高四位“1100”与原始存储数据的高四位相同,第二校验数据的低四位“0011”表示原始存储数据中位“1”的个数3。
进一步地,步骤S104中,从第一存储单元、第二存储单元和第三存储单元中分别读出的第一数据为α、第二数据为β、第三数据为γ。
进一步地,步骤S105中,将第二数据β、第三数据γ与第一数据α进行比较,根据比较结果判断所述第一数据α是否为原始存储数据,包括:
如果第一数据α的低四位数据与第二数据β的低四位数据相同,且第一数据α的高四位数据与第三数据γ的高四位数据相同,即α==(β&0xOF)|(γ&0xFO),则确定第一数据α为原始存储数据A。
进一步地,如果第一数据α的低四位数据与第二数据β的低四位数据不同,和/或,第一数据α的高四位数据与第三数据γ的高四位数据不同,则判断第二数据β中所示的原始存储数据位“1”的个数m和第三数据γ中所示的原始存储数据位“1”的个数n是否相同,如果个数不相同,即((β&0xF0)>>4)==(γ&0x0F)不成立,则认为第一校验数据和第二校验数据至少有一个被改写,因此确定第一数据α为原始存储数据A。
具体地,((β&0xF0)>>4)==(γ&0x0F)不成立,则第二数据β和第三数据γ应该相同的地方却不相同,
(α&0x0F)==(β&0x0F)(1)
(α&0xF0)==(γ&0xF0)(2)
等式(1)和等式(2)中至少一个不成立,如果等式(1)成立而等式(2)不成立,则第三数据γ和第一数据α、第二数据β相同的地方都无法对应,而第一数据α和第二数据β相同的地方都可以对应,所以认为第二校验数据被改写,第一数据α为原始存储数据A。
如果等式(1)不成立而等式(2)成立,则第二数据β和第一数据α、第三数据γ相同的地方都无法对应,而第一数据α和第三数据γ相同的地方可以对应,所以认为第一校验数据被改写,第一数据α为原始存储数据A。
如果等式(1)和等式(2)都不成立,即第一数据α、第二数据β、第三数据γ之间应该相同的地方都无法对应,则认为第一校验数据和第二校验数据都被改写,第一数据α即为原始存储数据A。
进一步地,如果所述第二数据中所示的原始存储数据位“1”的个数和所述第三数据中所示的原始存储数据位“1”的个数相同,即((β&0xF0)>>4)==(γ&0x0F)成立,则将第二数据和第三数据进行与操作和或操作,形成构造数据((β&0x0F)|(γ&0xF0))。
进一步地,形成构造数据之后,计算所述第一数据中位“1”的个数s以及所述构造数据中位“1”的个数t;
如果第一数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,即|s-m|<|t-m|,则所述第一数据为原始存储数据;
如果所述构造数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,即|s-m|>|t-m|,则所述构造数据为原始存储数据。
本实施例提供的数据存储检错纠错方法,计算简单,只需要简单的与、或、移位计算,即可对存储数据进行检错和纠错,特别适用于系统中单片机主频低、无法做大量运算的情况。
实施例二
参考图3,本实施例提供一种数据存储装置,包括单片机201和存储区域202,存储区域202内设置有多个存储单元,单片机201用于执行:
获取原始存储数据,并根据所述原始存储数据生成第一校验数据和第二校验数据;
将所述原始存储数据、第一校验数据和第二校验数据分别存储至第一存储单元、第二存储单元和第三存储单元;
检测是否接收到数据读取指令;
如果是,则分别从所述第一存储单元、第二存储单元和第三存储单元读取第一数据、第二数据和第三数据;
将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据。
进一步地,所述第一校验数据由所述原始存储数据的低四位数据和位“1”的个数构成。
进一步地,所述第二校验数据由所述原始存储数据的高四位数据和位“1”的个数构成。
进一步地,单片机201还用于执行:
如果所述第一数据的低四位数据与所述第二数据的低四位数据相同,且第一数据的高四位数据与所述第三数据的高四位数据相同,则确定所述第一数据为所述原始存储数据
如果所述第一数据的低四位数据与所述第二数据的低四位数据不同,和/或,第一数据的高四位数据与所述第三数据的高四位数据不同,则判断所述第二数据中所示的原始存储数据位“1”的个数和所述第三数据中所示的原始存储数据位“1”的个数是否相同,如果个数不相同,则确定所述第一数据为原始存储数据;
如果所述第二数据中所示的原始存储数据位“1”的个数和所述第三数据中所示的原始存储数据位“1”的个数相同,则将所述第二数据和第三数据进行与操作和或操作,形成构造数据;
形成构造数据之后,计算所述第一数据中位“1”的个数以及所述构造数据中位“1”的个数;
如果所述第一数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,则所述第一数据为原始存储数据;
如果所述构造数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,则所述构造数据为原始存储数据。
本实施例提供的数据存储装置,只需要简单的与、或、移位计算,即可对存储数据进行检错和纠错,特别适用于系统中单片机主频低、无法做大量运算的情况。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (8)

1.一种数据存储检错纠错方法,其特征在于,包括:
获取原始存储数据,并根据所述原始存储数据生成第一校验数据和第二校验数据;
将所述原始存储数据、第一校验数据和第二校验数据分别存储至第一存储单元、第二存储单元和第三存储单元;
检测是否接收到数据读取指令;
如果是,则分别从所述第一存储单元、第二存储单元和第三存储单元读取第一数据、第二数据和第三数据;
将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据。
2.根据权利要求1所述的数据存储检错纠错方法,其特征在于,所述第一校验数据由所述原始存储数据的低四位数据和位“1”的个数构成。
3.根据权利要求2所述的数据存储检错纠错方法,其特征在于,所述第二校验数据由所述原始存储数据的高四位数据和位“1”的个数构成。
4.根据权利要求3所述的数据存储检错纠错方法,其特征在于,将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据,包括:
如果所述第一数据的低四位数据与所述第二数据的低四位数据相同,且第一数据的高四位数据与所述第三数据的高四位数据相同,则确定所述第一数据为所述原始存储数据。
5.根据权利要求4所述的数据存储检错纠错方法,其特征在于,如果所述第一数据的低四位数据与所述第二数据的低四位数据不同,和/或,第一数据的高四位数据与所述第三数据的高四位数据不同,则判断所述第二数据中所示的原始存储数据位“1”的个数和所述第三数据中所示的原始存储数据位“1”的个数是否相同,如果个数不相同,则确定所述第一数据为原始存储数据。
6.根据权利要求5所述的数据存储检错纠错方法,其特征在于,如果所述第二数据中所示的原始存储数据位“1”的个数和所述第三数据中所示的原始存储数据位“1”的个数相同,则将所述第二数据和第三数据进行与操作和或操作,形成构造数据。
7.根据权利要求6所述的数据存储检错纠错方法,其特征在于,形成构造数据之后,计算所述第一数据中位“1”的个数以及所述构造数据中位“1”的个数;
如果所述第一数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,则所述第一数据为原始存储数据;
如果所述构造数据中位“1”的个数与所述第二数据中所示的原始存储数据位“1”的个数更接近或相等,则所述构造数据为原始存储数据。
8.一种数据存储装置,其特征在于,包括单片机和存储区域,所述存储区域内设置有多个存储单元,所述单片机用于执行:
获取原始存储数据,并根据所述原始存储数据生成第一校验数据和第二校验数据;
将所述原始存储数据、第一校验数据和第二校验数据分别存储至第一存储单元、第二存储单元和第三存储单元;
检测是否接收到数据读取指令;
如果是,则分别从所述第一存储单元、第二存储单元和第三存储单元读取第一数据、第二数据和第三数据;
将所述第二数据、第三数据与第一数据进行比较,根据比较结果判断所述第一数据是否为原始存储数据。
CN201811569776.XA 2018-12-21 2018-12-21 一种数据存储检错纠错方法及数据存储装置 Active CN111352754B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811569776.XA CN111352754B (zh) 2018-12-21 2018-12-21 一种数据存储检错纠错方法及数据存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811569776.XA CN111352754B (zh) 2018-12-21 2018-12-21 一种数据存储检错纠错方法及数据存储装置

Publications (2)

Publication Number Publication Date
CN111352754A true CN111352754A (zh) 2020-06-30
CN111352754B CN111352754B (zh) 2023-09-15

Family

ID=71193827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811569776.XA Active CN111352754B (zh) 2018-12-21 2018-12-21 一种数据存储检错纠错方法及数据存储装置

Country Status (1)

Country Link
CN (1) CN111352754B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282244A (zh) * 2021-06-10 2021-08-20 辽宁警察学院 一种数据存储方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281481A (zh) * 2008-05-23 2008-10-08 北京时代民芯科技有限公司 一种存储器抗单粒子翻转的纠错检错方法
CN101459749A (zh) * 2007-12-12 2009-06-17 佳能株式会社 信息处理装置及其控制方法
CN103218271A (zh) * 2013-04-18 2013-07-24 华为技术有限公司 一种数据纠错方法及装置
CN203423704U (zh) * 2013-06-09 2014-02-05 杭州和利时自动化有限公司 一种通信校验装置
CN104991833A (zh) * 2015-06-15 2015-10-21 联想(北京)有限公司 一种错误检测方法及电子设备
US20170046222A1 (en) * 2015-08-14 2017-02-16 Infineon Technologies Ag Error correction using wom codes
JP2018133087A (ja) * 2017-02-17 2018-08-23 インフィネオン テクノロジーズ アクチエンゲゼルシャフトInfineon Technologies AG メモリのメモリセル内のデータの処理
CN108551382A (zh) * 2018-03-23 2018-09-18 重庆思柏高科技有限公司 一种通信数据纠错方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101459749A (zh) * 2007-12-12 2009-06-17 佳能株式会社 信息处理装置及其控制方法
CN101281481A (zh) * 2008-05-23 2008-10-08 北京时代民芯科技有限公司 一种存储器抗单粒子翻转的纠错检错方法
CN103218271A (zh) * 2013-04-18 2013-07-24 华为技术有限公司 一种数据纠错方法及装置
CN203423704U (zh) * 2013-06-09 2014-02-05 杭州和利时自动化有限公司 一种通信校验装置
CN104991833A (zh) * 2015-06-15 2015-10-21 联想(北京)有限公司 一种错误检测方法及电子设备
US20170046222A1 (en) * 2015-08-14 2017-02-16 Infineon Technologies Ag Error correction using wom codes
JP2018133087A (ja) * 2017-02-17 2018-08-23 インフィネオン テクノロジーズ アクチエンゲゼルシャフトInfineon Technologies AG メモリのメモリセル内のデータの処理
CN108551382A (zh) * 2018-03-23 2018-09-18 重庆思柏高科技有限公司 一种通信数据纠错方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邹晨;高云;: "基于FPGA的硬件ECC校验的设计与实现", 航空计算技术 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282244A (zh) * 2021-06-10 2021-08-20 辽宁警察学院 一种数据存储方法及装置

Also Published As

Publication number Publication date
CN111352754B (zh) 2023-09-15

Similar Documents

Publication Publication Date Title
US7971112B2 (en) Memory diagnosis method
US8560925B2 (en) System and method for handling bad bit errors
CN105788648B (zh) 基于异构混合内存的nvm坏块识别处理及纠错方法和系统
US8140940B2 (en) Method and apparatus for controlling memory
WO2017215377A1 (zh) 内存硬错误的处理方法及装置
JPWO2007097019A1 (ja) キャッシュ制御装置およびキャッシュ制御方法
CN103077095B (zh) 内存数据的纠错方法及装置及计算机系统
KR20130031888A (ko) 데이터 메모리의 모니터링 방법
CN106802837B (zh) 一种更新错误检测和纠正ecc码的方法及装置
CN107203436B (zh) 一种Nand Flash数据校验的方法与装置
US20140195852A1 (en) Memory testing of three dimensional (3d) stacked memory
WO2017107160A1 (zh) 基于异构混合内存的nvm坏块识别处理及纠错方法和系统
CN112612637B (zh) 内存数据存储方法、内存控制器、处理器芯片及电子设备
US20140229796A1 (en) Electronic Control Apparatus
CN111352754A (zh) 一种数据存储检错纠错方法及数据存储装置
US20110320919A1 (en) High performance cache directory error correction code
US20140006880A1 (en) Apparatus and control method
JP6332134B2 (ja) メモリ診断回路
CN109710445B (zh) 内存校正方法和电子设备
JP6193112B2 (ja) メモリアクセス制御装置、メモリアクセス制御システム、メモリアクセス制御方法、及び、メモリアクセス制御プログラム
CN103310848A (zh) 一种使用存储器的方法和装置
JP2007257628A (ja) 記憶された情報データの読み取りのための誤り訂正と誤り検出の方法およびそのための記憶制御ユニット
CN112463523A (zh) 一种内存条健康状态监控方法、装置、设备及存储介质
US20070179635A1 (en) Method and article of manufacure to persistently deconfigure connected elements
US20160117218A1 (en) Monitoring data error status in a memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20201119

Address after: 100007 Beijing, Dongzhimen, North Street, No. 9, No.

Applicant after: CHINA NATIONAL PETROLEUM Corp.

Applicant after: CHINA NATIONAL PETROLEUM CORPORATION CHUANQING DRILLING ENGINEERING Co.

Applicant after: AEROSPACE SCIENCE AND INDUSTRY INERTIAL TECHNOLOGY Co.,Ltd.

Address before: 100074 Beijing city Fengtai District Haiying Road No. 1 Building No. 2 hospital 3

Applicant before: AEROSPACE SCIENCE AND INDUSTRY INERTIAL TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant