CN114253761A - 一种基于校验的程序块三模存储方法 - Google Patents
一种基于校验的程序块三模存储方法 Download PDFInfo
- Publication number
- CN114253761A CN114253761A CN202111558182.0A CN202111558182A CN114253761A CN 114253761 A CN114253761 A CN 114253761A CN 202111558182 A CN202111558182 A CN 202111558182A CN 114253761 A CN114253761 A CN 114253761A
- Authority
- CN
- China
- Prior art keywords
- program
- checksum
- block
- backup
- bit
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种基于校验的程序块三模存储方法,首先将待注入程序划分为N个程序块,并对每个程序块进行校验,以到第一校验和;然后在程序存储区注入两次待注入程序及第一校验和,两次注入的程序分别记为主程序及备份程序;将主程序划分为N个程序块,在程序运行过程中,对每个程序块进行校验,以到第二校验和;将备份程序划分为N个程序块,并对每个程序块进行校验,以到第三校验和;以及比较校验和、第二校验和以及第三校验和:若三者一致,则不进行操作;若三者不一致,则对程序或校验和进行更新,并重新校验。
Description
技术领域
本发明涉及航空航天技术领域,特别涉及一种基于校验的程序块三模存储方法。
背景技术
空间环境辐射效应是诱发航天器异常和故障的主要原因之一。宇宙空间充满了各种形态的物质,如等离子体、各种能量的带电粒子,对空间飞行器可能产生有害的影响。单粒子效应是其中最典型的一种。单粒子效应是指单个高能质子或重离子入射电子元器件上引发的辐射效应,其根据机理不同可分为:单粒子翻转、锁定、烧毁、栅击穿等。通常,可通过芯片自身防辐射加固,飞行器本身防辐射加固等方式改善单粒子效应。
常用的单粒子防护手段有EDAC、三模冗余、定时刷新等。其中,EDAC的实现原理是在传输的数据源码中加入一些检验码,使这些数据源码与检验码之间根据一定规则建立关系,当合法数据编码出现错误时,数据源码与检验码之间的关系被破坏,形成非法编码,而接收端可以通过检测编码的合法性来发现错误直至纠正错误。一般宇航级处理器自带EDAC功能,如不具备则需要配置另外的防护措施。
三模冗余则指对程序运行有重大影响的标志及对运算结构起关键作用的参数或代码进行三份存储、表决。经过三模表决发现单粒子打翻的情况,启动刷新程序,利用三模表决结果纠正打翻的bit。该方法对资源消耗极大,代码冗余量达到2/3以上。
上述两类方法是目前应对在轨单粒子效应的常用手段,根据芯片类型的不同、资源配置情况不同,可以合理选择一种方式进行单粒子防护。
实际使用中,随着卫星功能越来越强大,芯片资源利用率几乎达到极限。受限于宇航级芯片有限的资源,为实现卫星复杂功能性能,在考虑卫星功耗、热耗、代价的前提下,往往无法做到在轨程序的全三模冗余,一般是在程序设计时优先保障程序运行区及关键参数存储区的数据三模冗余,而代码存储区、程序加载等环节会作为次优先级考虑。因此,当宇航级芯片自身不具备EDAC功能时,对于处理器中运行的大程序、存储器中存储的程序数据和重要数据等,需要一种全新的、更有效的、资源占用更少的方法,代替传统的需要大量冗余资源实现EDAC或三模冗余的方式。
发明内容
针对现有技术中的部分或全部问题,本发明提供一种基于校验的程序块三模存储方法,包括:
将待注入程序划分为N个程序块,并对每个程序块进行校验,以到第一校验和;
在程序存储区注入两次待注入程序及第一校验和,注入的两次待注入程序分别记为主程序及备份程序;
将所述主程序划分为N个程序块,在程序运行过程中,对每个程序块进行校验,以到第二校验和;
将所述备份程序划分为N个程序块,并对每个程序块进行校验,以到第三校验和;以及
比较所述第一校验和、第二校验和以及第三校验和:
若三者一致,则不进行操作;以及
若三者不一致,则对程序或校验和进行更新,并重新校验。
进一步地,所述第一校验和和/或第二校验和和/或第三校验和通过异或校验得到。
进一步地,所述异或校验按每32位进行,所述第一校验和和/或第二校验和和/或第三校验和为N*32位的数组。
进一步地,所述程序块三模存储方法包括:
在程序运行过程中,每生成1个32位的校验和,就进行一次校验和对比。
进一步地,所述主程序及备份程序分别采用独立的校验模块进行校验。
进一步地,所述程序或校验和的更新包括:
若第一校验和等于第二校验和,但不等于第三校验和,则逐位比较主程序及备份程序,并根据所述主程序纠正所述备份程序;
若第一校验和等于第三校验和,但不等于第二校验和,则逐位比较主程序及备份程序,并根据所述备份程序纠正所述主程序;
若第二校验和等于第三校验和,但不等于第一校验和,则根据所述第二校验和或第三校验和纠正所述第一校验和;以及
若第一校验和、第二校验和及第三校验和均不相同,则重新加载全部软件,再次进行校验。
进一步地,所述程序或校验和的更新还包括:
若逐位比较主程序及备份程序时,并未发现不同,则重新加载校验模块,再次进行校验。
本发明另一方面还提供一种采用如前所述基于校验的程序块三模存储方法的卫星。
本发明提供的基于校验的程序块三模存储方法,其通过将程序划分为程序块,并针对每一个程序块进行校验,比较主程序、备份程序与地面预先计算的校验和数值,进而判断是否出现单粒子效应。同时,所述方法还能对错误程序进行实时更新,保证在轨软件的稳定运行,整体方法简单有效。由于程序被划分为小的程序块,这使得其校验过程以及后续校验和的对比操作对于冗余资源占比很小,通常不到千分之一。所述方法在芯片存储资源不足时,有效利用了有限的资源完成代码存储区、程序加载等三模保护,可适用于无EDAC的宇航芯片且资源紧张的情况,满足大块程序存储/数据存储的单粒子防护设计需求。
附图说明
为进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。在附图中,为了清楚明了,相同或相应的部件将用相同或类似的标记表示。
图1示出本发明一个实施例的一种基于校验的程序块三模存储方法的流程示意图。
具体实施方式
以下的描述中,参考各实施例对本发明进行描述。然而,本领域的技术人员将认识到可在没有一个或多个特定细节的情况下或者与其它替换和/或附加方法、材料或组件一起实施各实施例。在其它情形中,未示出或未详细描述公知的结构、材料或操作以免模糊本发明的发明点。类似地,为了解释的目的,阐述了特定数量、材料和配置,以便提供对本发明的实施例的全面理解。然而,本发明并不限于这些特定细节。此外,应理解附图中示出的各实施例是说明性表示且不一定按正确比例绘制。
在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
需要说明的是,本发明的实施例以特定顺序对步骤进行描述,然而这只是为了阐述该具体实施例,而不是限定各步骤的先后顺序。相反,在本发明的不同实施例中,可根据实际需求来调整各步骤的先后顺序。
由于三模冗余对于资源消耗较大,因此,在实际应用中,通常难以对处理器中运行的大程序、存储器中存储的程序数据和重要数据等进行全三模冗余。这就使得在宇航级芯片自身不具备EDAC功能时,难以有效地实现单粒子防护。基于此,本发明提出一种基于校验的程序块三模存储方法,其为仅能存储两份代码、且无EDAC功能的程序存储区提供代码的三模冗余、校验及刷新。其将程序划分为N个程序块,并计算每一块程序和备份程序校验和,之后与地面预先计算的校验和比较:若三者一致时,无操作;以及若三者不一致时,通过三取二实现对错误模块或校验和的更新。下面结合实施例附图,对本发明的方案做进一步描述。
图1示出本发明一个实施例的一种基于校验的程序块三模存储方法的流程示意图。如图1所示,一种基于校验的程序块三模存储方法,包括:
首先,在步骤101,程序注入。在程序注入前,首先将待注入程序划分为N个程序块,并对每一个程序块进行校验,得到第一校验和,然后将所述第一校验和与带存储程序一起注入到程序存储区,在本发明的实施例中,需要在程序存储区注入两次待注入程序及第一校验和,将注入的两次待注入程序分别记为主程序及备份程序;在本发明的一个实施例中,所述程序块按每32bit进行异或校验;
接下来,在步骤102,程序校验。将所述主程序划分为N个程序块,并在程序运行过程中,通过第一校验模块对每一个程序块进行校验,得到第二校验和,同时,将所述备份程序划分为N个程序块,并通过第二校验模块对每一个程序块进行校验,得到第三校验和,在本发明的一个实施例中,为了避免因单粒子打翻导致校验和同时出错,影响后续结果,所述第一校验模块和第二校验模块的代码内容相同,但是应在程序中占用两段独立空间来实现,也可理解为其分别通过两个独立的函数完成;在本发明的一个实施例中,所述主程序及备份程序的每个程序块按每32bit进行异或校验;以及
最后,在步骤103,比较校验和。比较所述第一校验和、第二校验和以及第三校验和,并根据比较结果进行后续操作,在本发明的一个实施例中,若第一校验和、第二校验和以及第三校验和均相同,则说明软件运行状态正常,未发生单粒子事件,此时不进行任何操作;若第一校验和、第二校验和以及第三校验和存在不一致,则表明可能出现单粒子事件,则需要根据具体结果进行程序或校验和更新,具体而言:
若第一校验和等于第二校验和,但不等于第三校验和,则表明备份程序校验和可能被单粒子打翻,此时,逐位比较主程序及备份程序,并根据所述主程序纠正所述备份程序,若逐位比较主程序及备份程序时,并未发现不同,则重新加载校验模块,再次进行校验;
若第一校验和等于第三校验和,但不等于第二校验和,则表明主程序校验和可能被单粒子打翻,此时,逐位比较主程序及备份程序,并根据所述备份程序纠正所述主程序,若逐位比较主程序及备份程序时,并未发现不同,则重新加载校验模块,再次进行校验;
若第二校验和等于第三校验和,但不等于第一校验和,则表明注入的第一校验和可能被单粒子打翻,此时根据所述第二校验和或第三校验和纠正所述第一校验和;以及
若第一校验和、第二校验和及第三校验和均不相同,则表明程序出错,此时重新加载全部软件,再次进行校验。
在本发明的一个实施例中,在卫星软件稳定运行过程中,对于校验和的比较是在每一个程序块的校验完成后均进行一次,而不是在主程序及备份程序所有程序块完成校验后进行。具体而言,其包括如下步骤:
首先,在地面将待注入程序划分为程序块1、程序块2、程序块3、……、程序块N,然后按每32bit对每一个程序块进行异或校验,得到一组N*32位的校验和结果数组C={c1,c2,c3c4,c5,…cN},所述校验和结果数组C将随待注入程序一道,上注至卫星芯片中的程序存储区;
接下来,将待注入程序和所述校验和结果数组C两次注入到卫星芯片中的程序存储区中;
接下来,将程序存储区中第一份程序作为主程序,划分为主程序块1、主程序块2、主程序块3、……、主程序块N,将程序存储区中第二份程序作为备份程序,划分为备用程序块1、备用程序块2、备用程序块3、……、备用程序块N,并在程序运行过程中,调用第一程序校验和软件模块,实时对程序存储区中主程序的每一个主程序块按每32bit进行异或校验,生成一组N*32位的校验和结果数组A={a1,a2,a3,a4,a5,……,aN},在卫星软件稳定运行过程中,每生成一个32位的校验和ai(i=1,2,…,N),就调用第二程序校验和软件模块,对程序存储区中备份程序的对应的备份程序块按每32bit进行异或校验,得到相应的32位的校验和结果bi,然后ai、bi与对应ci的值,比较三者是否相同:
若ai=bi=ci,则说明软件运行状态正常,未发生单粒子事件,此时不进行任何操作;
若ai=ci≠bi,则表明程序存储区中备份程序校验和可能被单粒子打翻,此时,逐位比较主程序及备份程序,并根据所述主程序纠正所述备份程序,若逐位比较时,并未发现不同,则重新加载第一和/或第二程序校验和软件模块,加载后再次进行校验;
若bi=ci≠ai,则表明程序存储区中主程序校验和可能被单粒子打翻,此时,逐位比较主程序及备份程序,并根据所述备份程序纠正所述主程序,若逐位比较时,并未发现不同,则重新加载第一和/或第二程序校验和软件模块,加载后再次进行校验;
若ai=bi≠ci,则表明注入的校验和数据可能被单粒子打翻,此时用ai或bi的校验和数值重新写入ci的存储空间,并继续进行后续校验;以及
若ai、bi、ci均不相同,则表明程序已跑飞出错,此时重新加载全部软件,加载后重新开始运行、校验。
本发明提供的基于校验的程序块三模存储方法,其通过将程序划分为程序块,并针对每一个程序块进行校验,比较主程序、备份程序与地面预先计算的校验和数值,进而判断是否出现单粒子效应。同时,所述方法还能对错误程序进行实时更新,保证在轨软件的稳定运行,整体方法简单有效。由于程序被划分为小的程序块,这使得其校验过程以及后续校验和的对比操作对于冗余资源占比很小,通常不到千分之一。所述方法在芯片存储资源不足时,有效利用了有限的资源完成代码存储区、程序加载等三模保护,可适用于无EDAC的宇航芯片且资源紧张的情况,满足大块程序存储/数据存储的单粒子防护设计需求。
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。
Claims (8)
1.一种基于校验的程序块三模存储方法,其特征在于,包括步骤:
将待注入程序划分为N个程序块,并对每个程序块进行校验,以得到第一校验和;
在程序存储区注入两次待注入程序及第一校验和,其中两次注入的程序分别记为主程序及备份程序;
将所述主程序划分为N个程序块,并在程序运行过程中,对每个程序块进行校验,以得到第二校验和;
将所述备份程序划分为N个程序块,并对每个程序块进行校验,以得到第三校验和;以及
比较所述第一校验和、第二校验和以及第三校验和,其中:
若三者一致,则不进行操作;以及
若三者不一致,则对程序或校验和进行更新,并重新校验。
2.如权利要求1所述的程序块三模存储方法,其特征在于,所述第一校验和和/或第二校验和和/或第三校验和通过异或校验得到。
3.如权利要求2所述的程序块三模存储方法,其特征在于,所述异或校验按每32位进行,所述第一校验和和/或第二校验和和/或第三校验和为N*32位的数组。
4.如权利要求1所述的程序块三模存储方法,其特征在于,主程序的每个程序块校验完成后,就进行一次校验和对比。
5.如权利要求1所述的程序块三模存储方法,其特征在于,所述主程序及备份程序分别采用独立的校验模块进行校验。
6.如权利要求1所述的程序块三模存储方法,其特征在于,所述程序或校验和的更新包括:
若第一校验和等于第二校验和,但不等于第三校验和,则逐位比较主程序及备份程序,并根据所述主程序纠正所述备份程序;
若第一校验和等于第三校验和,但不等于第二校验和,则逐位比较主程序及备份程序,并根据所述备份程序纠正所述主程序;
若第二校验和等于第三校验和,但不等于第一校验和,则根据所述第二校验和或第三校验和纠正所述第一校验和;以及
若第一校验和、第二校验和及第三校验和均不相同,则重新加载全部软件,加载后重新运行及校验。
7.如权利要求6所述的程序块三模存储方法,其特征在于,所述程序或校验和的更新还包括:
若逐位比较主程序及备份程序时,并未发现不同,则重新加载校验模块,加载完后再次进行校验。
8.一种卫星,其特征在于,包括采用如权利要求1至7任一所述的程序块三模存储方法的芯片。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111558182.0A CN114253761A (zh) | 2021-12-20 | 2021-12-20 | 一种基于校验的程序块三模存储方法 |
US18/084,581 US20230195562A1 (en) | 2021-12-20 | 2022-12-20 | Three-mode storage method for program blocks based on check |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111558182.0A CN114253761A (zh) | 2021-12-20 | 2021-12-20 | 一种基于校验的程序块三模存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114253761A true CN114253761A (zh) | 2022-03-29 |
Family
ID=80795806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111558182.0A Pending CN114253761A (zh) | 2021-12-20 | 2021-12-20 | 一种基于校验的程序块三模存储方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230195562A1 (zh) |
CN (1) | CN114253761A (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7024593B1 (en) * | 2002-03-18 | 2006-04-04 | Emc Corporation | End-to-end checksumming for database environments |
JP4399704B2 (ja) * | 2003-03-27 | 2010-01-20 | ソニー株式会社 | 情報処理装置および方法、プログラム、並びに記録媒体 |
JP2007034858A (ja) * | 2005-07-29 | 2007-02-08 | Kyocera Mita Corp | データバックアップ方法及びメモリ装置 |
JP4295326B2 (ja) * | 2007-01-10 | 2009-07-15 | 株式会社日立製作所 | 計算機システム |
DE112012005589T5 (de) * | 2012-01-05 | 2014-10-16 | Mitsubishi Electric Corporation | Informationsverarbeitungsvorrichtung, Informationsverarbeitungsverfahren und Computerprogramm |
US9063664B1 (en) * | 2012-12-18 | 2015-06-23 | Emc Corporation | Method and system for processing checksum of a data stream to optimize deduplication |
CN103761162B (zh) * | 2014-01-11 | 2016-12-07 | 深圳清华大学研究院 | 分布式文件系统的数据备份方法 |
US10467246B2 (en) * | 2014-11-25 | 2019-11-05 | Hewlett Packard Enterprise Development Lp | Content-based replication of data in scale out system |
US9830233B2 (en) * | 2016-01-29 | 2017-11-28 | Netapp, Inc. | Online backup to an object service using bulk export |
US11360699B1 (en) * | 2019-08-30 | 2022-06-14 | Veritas Technologies Llc | Method and system for improved write performance in erasure-coded storage systems |
-
2021
- 2021-12-20 CN CN202111558182.0A patent/CN114253761A/zh active Pending
-
2022
- 2022-12-20 US US18/084,581 patent/US20230195562A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230195562A1 (en) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8281229B2 (en) | Firmware verification using system memory error check logic | |
US10740186B2 (en) | High data integrity processing system | |
CN108446189B (zh) | 一种星载嵌入式软件容错启动系统及方法 | |
CN111176890B (zh) | 一种星载软件数据存储及异常恢复方法 | |
CN111338840B (zh) | 航天数据保护方法、存储介质、计算机程序、系统、终端 | |
CN111078662B (zh) | 一种区块链数据存储方法与装置 | |
CN103971732A (zh) | 监控fpga的单粒子翻转效应并纠正重加载的方法及系统 | |
US5721739A (en) | Method for detecting read errors, correcting single-bit read errors and reporting multiple-bit read errors | |
US20150143201A1 (en) | Error-correcting code distribution for memory systems | |
CN110489268B (zh) | 一种应用于星上恶劣环境中存储系统的两级纠错编码方法与系统 | |
CN113608720B (zh) | 一种抗单粒子翻转的星载数据处理系统及方法 | |
US9329926B1 (en) | Overlapping data integrity for semiconductor devices | |
CN114253761A (zh) | 一种基于校验的程序块三模存储方法 | |
CN106980557B (zh) | 一种基于存储分区的星载软件异构备份方法 | |
WO2008051385A2 (en) | Data allocation in memory chips | |
CN107424651A (zh) | 使用存储装置的方法、存储装置和存储装置组件 | |
US11416332B2 (en) | Protection for ethernet physical layer | |
US7747911B1 (en) | Self verification of non-volatile memory | |
CN110474673B (zh) | 一种支持断点续传的动态在轨热更新方法 | |
CN111506330A (zh) | 一种程序更新方法、装置、星务计算机及存储介质 | |
CN109669803A (zh) | 用于降低ecc存储器的软错误率的方法和装置 | |
EP3968162A1 (en) | Mitigating single-event upsets using containerization | |
CN114924808B (zh) | 一种基于双份存储程序的sram型fpga在轨可靠加载方法 | |
CN108733628A (zh) | 一种并行矩阵乘算法的加固方法 | |
CN117056149B (zh) | 一种内存测试方法、装置、计算设备及存储介质 |
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 |