CN109739774A - Edac故障注入与检测方法 - Google Patents

Edac故障注入与检测方法 Download PDF

Info

Publication number
CN109739774A
CN109739774A CN201910075204.4A CN201910075204A CN109739774A CN 109739774 A CN109739774 A CN 109739774A CN 201910075204 A CN201910075204 A CN 201910075204A CN 109739774 A CN109739774 A CN 109739774A
Authority
CN
China
Prior art keywords
edac
failure
object code
trigger point
fault location
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
Application number
CN201910075204.4A
Other languages
English (en)
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.)
Shanghai Chuangkin Mdt Infotech Ltd
Original Assignee
Shanghai Chuangkin Mdt Infotech 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 Shanghai Chuangkin Mdt Infotech Ltd filed Critical Shanghai Chuangkin Mdt Infotech Ltd
Priority to CN201910075204.4A priority Critical patent/CN109739774A/zh
Publication of CN109739774A publication Critical patent/CN109739774A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Retry When Errors Occur (AREA)

Abstract

本发明提供一种EDAC故障注入与检测方法,读取EDAC故障注入的触发点,读取EDAC故障处理中断程序被激活的检查点;执行被测软件的目标码,目标码执行至触发点位置时,暂停执行目标码,通过仿真器连接目标板在触发点位置向内存区间注入1位EDAC故障,在EDAC故障处理中断程序的结尾设置检测点,删除触发点,继续执行目标码;执行被测软件的目标码,若发生EDAC故障,则目标码的执行暂停在检查点位置,检测EDAC故障发生的故障地址的数据内容是否被修正,记录故障地址,保存检查点,继续执行目标码。解决了采用常规思维无法在短时间内检查大量内存区间的EDAC故障容错处理,能够有效节省时间和人力成本。

Description

EDAC故障注入与检测方法
技术领域
本发明涉及软件故障注入检测领域,具体地,涉及EDAC故障注入与检测方法,尤其是涉及一种针对大内存区间高效实现EDAC故障注入与检测方法。
背景技术
由于外太空复杂的环境,内存很可能被高辐射电离子击穿而导致内存数据读取错误而影响星载软件的正常执行,软件能否长时间的可靠性运行直接决定了人造卫星的命运,关系着前期国家巨大的投入。每个上天软件面对着大量内存区间的EDAC故障检测都需要花费几十天甚至几个月时间,这一直是故障注入软件面临的一个技术难题,通过本技术方法可以高效的解决这方面的问题,提高至少10倍效率,从而可以全面检测所有需要检测的内存区间,该技术方法同样适用于其它可修复故障的故障检测。
传统的EDAC故障注入方法主要有定时注入法、定点注入法,其中,定时注入法是下载软件目标码,首先将被测试软件运行起来,启动故障注入设备定时器,定时停止被测试软件运行所在的处理器,向某个32位的内存注入EDAC故障,设置检查点,然后检测该内存是否发生了该故障,重复注入和验证过程。定点注入法是下载软件目标码,设置触发点,首先启动被测试软件运行到触发点指定的地址,故障注入设备向某个32位的内存注入EDAC故障,删除触发点,设置检查点,然后检测该内存是否发生了该故障,重复加载、注入和验证过程。传统的EDAC故障注入方法在处理上天软件的EDAC故障检测方面效率过低,耗费时间成本过高。
本发明针对于内存区间为32位的EDAC故障注入与验证时间和定点注入法基本相同,但针对大内存区间故障注入减少了大量的重复的工作,将一个难以完成或不可能完成的故障容错检测任务变成了只需要很少投入就可以完成的任务,极大地提高故障注入效率。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种EDAC故障注入与检测方法。
根据本发明提供的一种EDAC故障注入与检测方法,包括以下步骤,确定故障触发点步骤:读取EDAC故障注入的触发点,所述触发点至少一个;确定故障检查点步骤:读取EDAC故障处理中断程序被激活的检查点,所述检查点至少一个;注入EDAC故障步骤:执行被测软件的目标码,目标码执行至触发点位置时,暂停执行目标码,通过仿真器连接目标板在触发点位置向内存区间注入1位EDAC故障,在EDAC故障处理中断程序的结尾设置检测点,删除触发点,继续执行目标码;故障检测步骤:执行被测软件的目标码,若发生EDAC故障,则目标码的执行暂停在检查点位置,检测EDAC故障发生的故障地址的数据内容是否被修正,记录故障地址,保存检查点,继续执行目标码。
优选地,所述触发点处于已完成数据初始化的内存区间。
优选地,检查点处于EDAC故障发生后被测软件需要运行的异常处理函数内结束的位置。
优选地,所述内存区间划定为每32位数据为一个内存区间,一个内存区间注入1位EDAC故障。
优选地,所述向内存区间注入1位EDAC故障为一次性向内存区间注入EDAC故障。
与现有技术相比,本发明具有如下的有益效果:
1、本发明针对于1位反转EDAC故障注入与监测的优化,解决了采用常规思维无法在短时间内检查大量内存区间的EDAC故障容错处理;
2、本发明实施难度低,自动化程度高,非常适用于可修复的故障注入与验证,且不限定是EDAC故障;
3、本发明能够有效节省时间和人力成本。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的框架示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种EDAC故障注入与检测方法,包括以下步骤,确定故障触发点步骤:读取EDAC故障注入的触发点,所述触发点至少一个;确定故障检查点步骤:读取EDAC故障处理中断程序被激活的检查点,所述检查点至少一个;注入EDAC故障步骤:执行被测软件的目标码,目标码执行至触发点位置时,暂停执行目标码,通过仿真器连接目标板在触发点位置向内存区间注入1位EDAC故障,在EDAC故障处理中断程序的结尾设置检测点,删除触发点,继续执行目标码;故障检测步骤:执行被测软件的目标码,若发生EDAC故障,则目标码的执行暂停在检查点位置,检测EDAC故障发生的故障地址的数据内容是否被修正,记录故障地址,保存检查点,继续执行目标码。
在具体的实施方式中,软件研发人员分析出EDAC故障注入的合适触发点和EDAC故障被激活的合适检查点。加载被测试软件的目标码全速运行至选定的触发点,通过仿真器连接目标板一次性向所有需要注入的内存区间注入1位EDAC故障,同时在选定的检查点EDAC故障处理中断程序的结尾设置一个检测点,删除触发点,继续运行被测试目标码。所述一次性注入即工具通过内存读接口从目标机内存中读出所有数据到主机缓存,接着在主机缓存中每32位注入(修改)1位的EDAC故障数据,然后将注入过故障的主机缓存一次性再通过内存写接口写回到目标机及内存中。通过一次性注入,这样将会大量减少主机与目标机之间的交互时间。当EDAC故障发生时被测软件会停在检查点所在的位置,检测当前发生的EDAC故障所在的地址数据内容是否被修正,并记录下当前EDAC故障地址,在保留检查点的前提下继续运行被测试目标码。重复故障检测步骤直到被测软件运行停止。所述故障修正是指1位EDAC故障发生异常后,程序会进入EDAC故障中断程序,在中断程序代码中针对于EDAC故障的内存数据通过研发工程师预先写入的存储指令进行修复处理。程序运行到检查点时工具立即通过内存读接口读取当前故障内存数据,并与注入前的原始内存数据比较,若二者相等则表示内存数据已被软件修正成功,否则则表示修正失败。所述保留检查点是保留检查点的硬件断点不被删除,被测试程序下次运行到该断点时会自动停止。
所述合适触发点,不同于传统定点故障注入下的触发点,这里合适的触发点优先选择程序已经完成了被测试内存区间的数据初始化动作,后续执行主要是针对有关这些内存的读取操作,因为EDAC故障主要是在读取某32位内存时内存某位或某几位发生反转导致的故障。所述合适检查点,通常是EDAC故障发生后被测试软件需要运行的异常处理函数内靠近结束的位置。因为1位EDAC故障是具有可修复的故障,在此处其可以获取内存地址也可验证内存中值是否被修正。触发点和检查点采用硬件断点也是非常关键的一步,在响应速度上经过有效验证比起软件断点有很大的提高,本速度针对于大区间的内存EDAC故障注入也起到了非常大的变化。
本发明采用每32位数据注入1位EDAC故障,因为1位反转下的EDAC故障是可修复,也就是说可在不需要重新下载目标码和复位的前提下继续运行。一次性向内存区间数据中注入所有EDAC故障,这有助于减少与目标系统频繁的通信和交互时间。在故障检测步骤中保留检查点设置的断点设定运行,这样可减少不必要与目标系统的通信设置断点的时间,尽可能提高效率。
本发明的EDAC故障注入与检测方法在处理大内存区间时实现了高效率,下面针对本发明与传统方法的故障注入耗时进行分析对比,假设被测试目标码被加载复位时间为T0,设置触发点时间为T1,触发点被触发响应时间为T2,故障注入时寄存器和内存操作时间为T3,设置检查点时间为T4,检查点被触发响应时间为T5,验证检查时寄存器和内存操作时间为T6,对于ERC32仿真器JTAG方式,假设TO为5秒,T1为100毫秒,T2为200毫秒,T3为300秒,T4为100毫秒,T5为200毫秒,T6为300毫秒。若采用定时注入法,假设定时器设置为10秒,则1个EDAC故障需要10秒,1M内存空间有1024×1024÷4个EDAC故障,理论上需要检测10*262144秒近30天,实际上注入EDAC后很可能该地址被重写而不发生EDAC故障,所以时间远远超过此时间。若采用定点注入法,1个EDAC故障需要T0+T1+T2+T3+(T1+T4)+T5+T6秒,代入值为6.3秒,1M内存空间有1024×1024÷4个EDAC故障理论上需要检测262144*6.3秒,代入假设值大约为19天。而采用本发明的方法,1个EDAC故障需要T0+T1+T2+T3+(T1+T4)+T5+T6秒,代入值为6.3秒,然而1M内存空间有1024×1024÷4个EDAC故障,理论上需要检测T0+T1+T2+T3+T4+262144*(T5+T6)秒,代入值大约为1.5天。
经过反复的试验,优化和数据分析,采用同样的仿真设备本发明技术方法针对1M内存区间EDAC故障注入时间从19天缩短至1.5天,从一个难以完成的或不可能完成任务变成了易于普及化的EDAC故障检测工作。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (5)

1.一种EDAC故障注入与检测方法,其特征在于,包括以下步骤:
确定故障触发点步骤:读取EDAC故障注入的触发点,所述触发点至少一个;
确定故障检查点步骤:读取EDAC故障处理中断程序被激活的检查点,所述检查点至少一个;
注入EDAC故障步骤:执行被测软件的目标码,目标码执行至触发点位置时,暂停执行目标码,通过仿真器连接目标板在触发点位置向内存区间注入1位EDAC故障,在EDAC故障处理中断程序的结尾设置检测点,删除触发点,继续执行目标码;
故障检测步骤:执行被测软件的目标码,若发生EDAC故障,则目标码的执行暂停在检查点位置,检测EDAC故障发生的故障地址的数据内容是否被修正,记录故障地址,保存检查点,继续执行目标码。
2.根据权利要求1所述的EDAC故障注入与检测方法,其特征在于,所述触发点处于已完成数据初始化的内存区间。
3.根据权利要求1所述的EDAC故障注入与检测方法,其特征在于,检查点处于EDAC故障发生后被测软件需要运行的异常处理函数内结束的位置。
4.根据权利要求1所述的EDAC故障注入与检测方法,其特征在于,所述内存区间划定为每32位数据为一个内存区间,一个内存区间注入1位EDAC故障。
5.根据权利要求1所述的EDAC故障注入与检测方法,其特征在于,所述向内存区间注入1位EDAC故障为一次性向内存区间注入EDAC故障。
CN201910075204.4A 2019-01-25 2019-01-25 Edac故障注入与检测方法 Pending CN109739774A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910075204.4A CN109739774A (zh) 2019-01-25 2019-01-25 Edac故障注入与检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910075204.4A CN109739774A (zh) 2019-01-25 2019-01-25 Edac故障注入与检测方法

Publications (1)

Publication Number Publication Date
CN109739774A true CN109739774A (zh) 2019-05-10

Family

ID=66366273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910075204.4A Pending CN109739774A (zh) 2019-01-25 2019-01-25 Edac故障注入与检测方法

Country Status (1)

Country Link
CN (1) CN109739774A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651353A (zh) * 2020-05-29 2020-09-11 北京百度网讯科技有限公司 故障注入的方法、装置、电子设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5001712A (en) * 1988-10-17 1991-03-19 Unisys Corporation Diagnostic error injection for a synchronous bus system
CN102096627A (zh) * 2009-12-11 2011-06-15 上海卫星工程研究所 星载软件抗单粒子翻转故障的测试装置
CN103984630A (zh) * 2014-05-27 2014-08-13 中国科学院空间科学与应用研究中心 一种基于at697处理器的单粒子翻转故障处理方法
CN104657265A (zh) * 2015-02-10 2015-05-27 上海创景计算机系统有限公司 软件故障注入和分析的流程定义方法
CN104657247A (zh) * 2015-02-10 2015-05-27 上海创景计算机系统有限公司 基于jtag调试方式实现通用型故障注入系统和故障注入方法
CN104851467A (zh) * 2015-05-20 2015-08-19 中国空间技术研究院 一种宇航用带edac功能sram存储器功能验证方法
WO2018002952A2 (en) * 2016-06-26 2018-01-04 Gennova Biopharmaceuticals Limited, Antibody phage display library
CN107992412A (zh) * 2017-11-27 2018-05-04 上海航天测控通信研究所 基于erc32的星载软件抗单粒子翻转故障的测试方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5001712A (en) * 1988-10-17 1991-03-19 Unisys Corporation Diagnostic error injection for a synchronous bus system
CN102096627A (zh) * 2009-12-11 2011-06-15 上海卫星工程研究所 星载软件抗单粒子翻转故障的测试装置
CN103984630A (zh) * 2014-05-27 2014-08-13 中国科学院空间科学与应用研究中心 一种基于at697处理器的单粒子翻转故障处理方法
CN104657265A (zh) * 2015-02-10 2015-05-27 上海创景计算机系统有限公司 软件故障注入和分析的流程定义方法
CN104657247A (zh) * 2015-02-10 2015-05-27 上海创景计算机系统有限公司 基于jtag调试方式实现通用型故障注入系统和故障注入方法
CN104851467A (zh) * 2015-05-20 2015-08-19 中国空间技术研究院 一种宇航用带edac功能sram存储器功能验证方法
WO2018002952A2 (en) * 2016-06-26 2018-01-04 Gennova Biopharmaceuticals Limited, Antibody phage display library
CN107992412A (zh) * 2017-11-27 2018-05-04 上海航天测控通信研究所 基于erc32的星载软件抗单粒子翻转故障的测试方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651353A (zh) * 2020-05-29 2020-09-11 北京百度网讯科技有限公司 故障注入的方法、装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
Kanawati et al. FERRARI: A flexible software-based fault and error injection system
CN108710551B (zh) 基于sparc处理器单粒子翻转故障注入的测试方法及系统
CN104657247B (zh) 基于jtag调试方式实现通用型故障注入系统和故障注入方法
US8261130B2 (en) Program code trace signature
Saff et al. Automatic test factoring for Java
CN112084113B (zh) 基于嵌入式仿真验证软件的可配置自动化测试方法及系统
US20040181781A1 (en) Method, apparatus and program for testing control program
Parrotta et al. New techniques for accelerating fault injection in VHDL descriptions
CN101334754A (zh) 基于故障注入的嵌入式系统测评方法
CN110704314B (zh) 一种嵌入式软件测试的故障注入方法
RU2451990C2 (ru) Способ обработки объема данных, используемого во время фазы отладки функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для его осуществления
CN110704315B (zh) 一种嵌入式软件测试的故障注入装置
Jeong et al. Fifa: A kernel-level fault injection framework for arm-based embedded linux system
CN115470138A (zh) 一种基于不同调试级别交叉验证的调试器缺陷检测方法
CN109739774A (zh) Edac故障注入与检测方法
CN109189607B (zh) 一种应用程序断点恢复的方法
CN113254288B (zh) 一种星载设备中fpga单粒子翻转故障注入方法
CN116401086A (zh) 内存漏斗错误上报机制的测试方法、装置、设备及介质
JPH02294739A (ja) 障害検出方式
Montrucchio et al. Fault injection in the process descriptor of a Unix-based operating system
CN110727577B (zh) 嵌入式系统软件中概率复现问题的调试方法、系统及介质
Artho et al. Enforcer–efficient failure injection
Artho et al. Model checking networked programs in the presence of transmission failures
Zhou et al. A workload model based approach to evaluate the robustness of real-time operating system
CN106959883A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190510

RJ01 Rejection of invention patent application after publication