CN106897214B - 一种故障注入规则延迟加载的方法 - Google Patents
一种故障注入规则延迟加载的方法 Download PDFInfo
- Publication number
- CN106897214B CN106897214B CN201710005049.XA CN201710005049A CN106897214B CN 106897214 B CN106897214 B CN 106897214B CN 201710005049 A CN201710005049 A CN 201710005049A CN 106897214 B CN106897214 B CN 106897214B
- Authority
- CN
- China
- Prior art keywords
- rule
- fault location
- direct fault
- sub
- injection
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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/3668—Software testing
- G06F11/3672—Test management
Abstract
本发明公开了一种故障注入规则延迟加载的方法。以约定的通信协议和故障规则描述方式,由测试平台向指令集模拟器发送故障注入命令;指令集模拟器解析故障注入规则,模拟寄存器、内存和外设,加载目标程序;遇到读指令时,若操作地址有对应的故障注入规则且该规则当前有效,计算该条规则上一次作用时刻与当前时刻的间隔,再结合故障规则的特性和写指令元操作列表,通过计算确定规则发生情况,实现规则的一次性模拟;把一次性模拟的故障作用于目标位置,并把作用值作为读指令访问结果返回。本发明解决了传统模拟器的故障注入实现性能开销过大、实现复杂的问题,极大地提升了模拟器故障注入实现的性能。本发明适用于任何模拟器的故障注入实现。
Description
技术领域
本发明应用于带故障注入功能的指令集模拟器实现,是一种故障注入规则延迟加载的方法。
背景技术
如今,仿真技术和虚拟技术被广泛应用各个领域,特别在嵌入式系统的开发过程中,由于在不同应用领域中,嵌入式开发要求的硬件体系差别很大,用软件进行系统仿真或虚拟硬件非常必要。
指令集模拟器是在本地计算机环境下模拟其它处理器上程序运行过程的工具。它通过模拟每条指令在目标处理器上的执行效果来模拟目标机程序,是目标处理器的软件模拟。
随着软件测试需求的不断提出,用户希望通过受控实验向系统中刻意引入故障,观察系统中存在故障时的行为,来确保程序运行的抗干扰和容错能力。
而基于模拟的故障注入技术,是使用在模拟测试的计算机原型上,通过在模拟过程中,改变逻辑值来达到故障注入的效果。基于模拟的故障注入不存在物理故障注入对目标系统可访问的限制,可使注入试验在模拟范围内的任何细节之处进行,并且具备成本低、快速部署、所注入的故障可精确监控等优点。
在指令集模拟器的故障注入设计中,常见的故障注入规则有翻转、保持、观察等,可以在指定的时钟周期内,有规律地对目标寄存器或内存进行逻辑值改写或保持等,来对程序运行进行灵活地故障注入控制。
故障注入系统的设计涉及到命令协议、规则实际、规则管理与加载作用等诸多问题,实现复杂度高。
此外,传统的指令集模拟器故障注入实现会在每次规则生效时,根据故障规则的内容对目标内存或寄存器进行写操作,会造成极大的内存或寄存器访问性能消耗。
基于上述技术背景,本发明创新地提出了一种故障注入规则延迟加载的方法,使得故障注入系统的设计更为简单灵活,性能得到极大的提高。
发明内容
本发明的目的在于针对现有技术的不足,提供一种故障注入规则延迟加载的方法。
如图1所示,传统的指令集模拟和故障注入规则加载步骤如下:
(1)外部故障规则通过协定通信协议向模拟器注入;
(2)解析故障注入规则;
(3)加载目标程序,对寄存器、内存、外设进行模拟;
(4)基于(3)模拟的寄存器、内存和外设,模拟每条指令在目标处理器上的执行效果;
(5)基于(4),在每条指令的模拟执行过程中,遍历故障规则,判断是否有生效的故障注入规则,如果有,则根据故障注入规则的有效性和内容,通过改写逻辑值的方式来进行故障注入;
(6)回到(4)继续模拟下一条指令,直至程序结束。
传统指令集模拟器的故障注入实现中,在每个时钟周期都会遍历所有的故障注入规则,而这些故障注入规则所操作的地址内容往往不会立刻被读到,而在这些操作地址被故障注入改写逻辑值到被读取的过程中,会被频繁地计算新的改写值并改写到操作地址。
本发明提供的一种故障注入规则延迟加载的方法,包括如下步骤:
(1)以约定的通信协议RSP(Remote Serial Protocol)和故障规则描述方式,由测试平台向指令集模拟器发送故障注入命令;
(2)由指令集模拟器的调试桩对通信内容进行响应,并解析故障注入规则;
(3)指令集模拟器模拟寄存器、内存和外设,并加载目标程序对程序的每条指令进行模拟;
(4)在模拟过程中,遇到写指令时,把写指令记录保存到注入点的写指令元操作列表中,遇到读指令时,若该读指令的操作地址有对应的故障注入规则,并且该规则当前有效,那么计算该条规则上一次作用时刻与当前时刻的间隔,再结合故障规则的特性和写指令元操作列表,通过计算确定规则发生情况,实现规则的一次性模拟;
(5)把一次性模拟的故障作用于目标位置,并把作用值作为读指令访问结果返回,指令集模拟器回到步骤(4)继续模拟下一条指令,直至程序结束。
进一步地,所述步骤1的故障规则格式具体为:
<故障类型><注入点类型>:<注入点地址><注入控制标志><注入参数><作用次数><起始作用时间><结束作用时间>
其中故障类型包括翻转、保持、改写、观察四种,注入点类型包括寄存器和内存地址两种,注入点地址按注入点类型为寄存器编号或内存地址,注入控制标志用于控制注入方式和规律(默认不设置),注入参数根据故障类型不同为翻转掩码、保持值、改写值和0,作用次数为规则下故障注入操作的有效操作次数,起始作用时间和结束作用时间描述了故障规则的有效期。
进一步地,所述的一次性模拟算法为:
(1)找到在读操作之前生效的故障规则的集合,根据故障类型分别为cHold、cChange、cReverse;
(2)将4字节大小的故障注入点拆分为4个子作用块,并把规则拆分为在这4个子作用块上的子规则,并按(3)-(5)分别保存为规则集合collectB1,collectB2,collectB3和collectB4;
(3)将cHold拆分为4个子作用块上的子规则并分别保存到collectBi(i为1~4)中;
(4)将cChange拆分为4个子作用块上的子规则并分别保存到collectBi中,遍历collectBi并只保留开始作用时间最新的子规则;
(5)将cReverse拆分为4个子作用块上的子规则,遍历collectBi,如果子规则的作用时间小于集合中最新的子规则,那么将翻转子规则构造为与已有的cHold和cChange子规则不冲突的规则后保存到集合中;
(6)分别对collectBi中的规则按时间逐一计算;
(7)合并4字节的计算值为最终的计算结果。
进一步地,根据故障注入规则和指令访问内存或寄存器的特性,把故障注入规则的加载与作用延迟到对目标位置读操作时,来减小故障注入规则频繁加载与作用带来的内存或寄存器访问代价。
进一步地,故障规则从开始生效到规则加载触发期间内多次作用的一次性模拟,可以根据运算规则进行计算优化,来减小故障注入规则的计算代价。
本发明方法把对故障规则的加载从每次指令的操作地址命中延迟到读取该操作地址的逻辑值,也就是真正用到该操作地址的逻辑值时,一方面免去每个时钟周期指令模拟时对故障规则的遍历过程,一方面以一次性加载、计算、作用于目标寄存器或内存的方式,来减少频繁的、不必要的寄存器或内存访问。
本发明方法既可以用于故障注入系统的完整设计,也可以用于写寄存器或内存类型故障的重构,通过对故障规则的设计解耦,部分外部故障注入规则的延迟加载可以与其他规则的正常加载作用相兼容。
本发明具有的有益效果是:本发明通过对故障规则作用的延迟加载,来做到故障注入模块设计的简化和性能的提升,极大地减小了故障注入的计算和寄存器或内存的访问代价。
附图说明
图1是传统指令集模拟器的故障注入规则加载流程图;
图2是本发明指令集模拟器的故障注入规则延迟加载流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图2所示,本发明提供的一种故障注入规则延迟加载的方法,包括如下步骤:
(1)以约定的通信协议RSP(Remote Serial Protocol)和故障规则描述方式,由测试平台向指令集模拟器发送故障注入命令;
(2)由指令集模拟器的调试桩对通信内容进行响应,并解析故障注入规则并保存到故障规则管理模块,由故障规则管理模块来负责故障规则的保存、命中查找、逻辑值计算和发起逻辑值改写;
(3)指令集模拟器模拟寄存器、内存和外设,并加载目标程序对程序的每条指令进行模拟;
(4)在模拟过程中,遇到写指令时,把写指令记录保存到注入点的写指令元操作列表中,遇到读指令时,若该读指令的操作地址有对应的故障注入规则,并且该规则当前有效,那么计算该条规则上一次作用时刻与当前时刻的间隔,再结合故障规则的特性和写指令元操作列表,通过计算确定规则发生情况,实现规则的一次性模拟;
(5)把一次性模拟的故障作用于目标位置,并把作用值作为读指令访问结果返回,指令集模拟器回到步骤(4)继续模拟下一条指令,直至程序结束。
进一步地,所述步骤1的故障规则格式具体为:
<故障类型><注入点类型>:<注入点地址><注入控制标志><注入参数><作用次数><起始作用时间><结束作用时间>
其中故障类型包括翻转、保持、改写、观察四种,注入点类型包括寄存器和内存地址两种,注入点地址按注入点类型为寄存器编号或内存地址,注入控制标志用于控制注入方式和规律(默认不设置),注入参数根据故障类型不同为翻转掩码、保持值、改写值和0,作用次数为规则下故障注入操作的有效操作次数,起始作用时间和结束作用时间描述了故障规则的有效期。
进一步地,所述的一次性模拟算法为:
(1)找到在读操作之前生效的故障规则的集合,根据故障类型分别为cHold、cChange、cReverse;
(2)将4字节大小的故障注入点拆分为4个子作用块,并把规则拆分为在这4个子作用块上的子规则,并按(3)-(5)分别保存为规则集合collectB1,collectB2,collectB3和collectB4;
(3)将cHold拆分为4个子作用块上的子规则并分别保存到collectBi(i为1~4)中;
(4)将cChange拆分为4个子作用块上的子规则并分别保存到collectBi中,遍历collectBi并只保留开始作用时间最新的子规则;
(5)将cReverse拆分为4个子作用块上的子规则,遍历collectBi,如果子规则的作用时间小于集合中最新的子规则,那么将翻转子规则构造为与已有的cHold和cChange子规则不冲突的规则后保存到集合中;
(6)分别对collectBi中的规则按时间逐一计算;
(7)合并4字节的计算值为最终的计算结果。
进一步地,根据故障注入规则和指令访问内存或寄存器的特性,把故障注入规则的加载与作用延迟到对目标位置读操作时,来减小故障注入规则频繁加载与作用带来的内存或寄存器访问代价。
进一步地,故障规则从开始生效到规则加载触发期间内多次作用的一次性模拟,可以根据运算规则进行计算优化,来减小故障注入规则的计算代价。
Claims (5)
1.一种故障注入规则延迟加载的方法,其特征在于:该方法包括如下步骤:
(1)以约定的通信协议RSP(Remote Serial Protocol)和故障规则描述方式,由测试平台向指令集模拟器发送故障注入命令;
(2)由指令集模拟器的调试桩对通信内容进行响应,并解析故障注入规则;
(3)指令集模拟器模拟寄存器、内存和外设,并加载目标程序对程序的每条指令进行模拟;
(4)在模拟过程中,遇到写指令时,把写指令记录保存到注入点的写指令元操作列表中,遇到读指令时,若该读指令的操作地址有对应的故障注入规则,并且该规则当前有效,那么计算该条规则上一次作用时刻与当前时刻的间隔,再结合故障规则的特性和写指令元操作列表,通过计算确定规则发生情况,实现规则的一次性模拟;
(5)把一次性模拟的故障作用于目标位置,并把作用值作为读指令访问结果返回,指令集模拟器回到步骤(4)继续模拟下一条指令,直至程序结束。
2.根据权利要求1所述的一种故障注入规则延迟加载的方法,其特征在于:所述步骤(1)的故障规则格式具体为:
<故障类型><注入点类型>:<注入点地址><注入控制标志><注入参数><作用次数><起始作用时间><结束作用时间>
其中故障类型包括翻转、保持、改写、观察四种,注入点类型包括寄存器和内存地址两种,注入点地址按注入点类型为寄存器编号或内存地址,注入控制标志用于控制注入方式和规律,默认不设置,注入参数根据故障类型不同为翻转掩码、保持值、改写值和0,作用次数为规则下故障注入操作的有效操作次数,起始作用时间和结束作用时间描述了故障规则的有效期。
3.根据权利要求1所述的一种故障注入规则延迟加载的方法,其特征在于,一次性模拟的算法为:
(1)找到在读操作之前生效的故障规则的集合,根据故障类型分别为cHold、cChange、cReverse;
(2)将4字节大小的故障注入点拆分为4个子作用块,并把规则拆分为在这4个子作用块上的子规则,并按(3)-(5)分别保存为规则集合collectB1,collectB2,collectB3和collectB4;
(3)将cHold拆分为4个子作用块上的子规则并分别保存到collectBi中,其中i为1~4;
(4)将cChange拆分为4个子作用块上的子规则并分别保存到collectBi中,遍历collectBi并只保留开始作用时间最新的子规则;
(5)将cReverse拆分为4个子作用块上的子规则,遍历collectBi,如果子规则的作用时间小于集合中最新的子规则,那么将翻转子规则构造为与已有的cHold和cChange子规则不冲突的规则后保存到集合中;
(6)分别对collectBi中的规则按时间逐一计算;
(7)合并4字节的计算值为最终的计算结果。
4.根据权利要求1所述的一种故障注入规则延迟加载的方法,其特征在于:根据故障注入规则和指令访问内存或寄存器的特性,把故障注入规则的加载与作用延迟到对目标位置读操作时,来减小故障注入规则频繁加载与作用带来的内存或寄存器访问代价。
5.根据权利要求1所述的一种故障注入规则延迟加载的方法,其特征在于:故障规则从开始生效到规则加载触发期间内多次作用的一次性模拟,根据运算规则进行计算优化,来减小故障注入规则的计算代价。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710005049.XA CN106897214B (zh) | 2017-01-04 | 2017-01-04 | 一种故障注入规则延迟加载的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710005049.XA CN106897214B (zh) | 2017-01-04 | 2017-01-04 | 一种故障注入规则延迟加载的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106897214A CN106897214A (zh) | 2017-06-27 |
CN106897214B true CN106897214B (zh) | 2019-10-15 |
Family
ID=59198305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710005049.XA Expired - Fee Related CN106897214B (zh) | 2017-01-04 | 2017-01-04 | 一种故障注入规则延迟加载的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106897214B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729231B (zh) * | 2017-09-19 | 2021-02-02 | 北京东土科技股份有限公司 | 一种基于操作系统的故障注入方法及装置 |
US10346273B2 (en) * | 2017-09-22 | 2019-07-09 | Analog Devices Global Unlimited Company | Automated analog fault injection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270166A (zh) * | 2011-02-22 | 2011-12-07 | 清华大学 | 基于模拟器的处理器故障注入及跟踪方法及模拟器 |
US8181100B1 (en) * | 2008-02-07 | 2012-05-15 | Marvell International Ltd. | Memory fault injection |
CN103198868A (zh) * | 2013-04-16 | 2013-07-10 | 西北核技术研究所 | 一种用于单粒子翻转的故障模拟系统及分析方法 |
-
2017
- 2017-01-04 CN CN201710005049.XA patent/CN106897214B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8181100B1 (en) * | 2008-02-07 | 2012-05-15 | Marvell International Ltd. | Memory fault injection |
CN102270166A (zh) * | 2011-02-22 | 2011-12-07 | 清华大学 | 基于模拟器的处理器故障注入及跟踪方法及模拟器 |
CN103198868A (zh) * | 2013-04-16 | 2013-07-10 | 西北核技术研究所 | 一种用于单粒子翻转的故障模拟系统及分析方法 |
Non-Patent Citations (2)
Title |
---|
基于QEMU实现的处理器类故障模拟与注入方法研究;李毅等;《计算机工程与科学》;20140131;第36卷(第1期);第19-27页 * |
面向BIT验证的存储器故障模拟及注入方法研究;徐军等;《计算机测量与控制》;20130831;第21卷(第8期);第2027-2079,2058页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106897214A (zh) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102789416B (zh) | 面向bit软件测试的存储器故障注入方法及其模拟器 | |
CN103955399B (zh) | 一种虚拟机迁移方法和装置及物理主机 | |
CN103870767B (zh) | 基于ebp构造的栈栈帧内容保护方法 | |
CN102760098A (zh) | 面向bit软件测试的处理器故障注入方法及其模拟器 | |
KR100492007B1 (ko) | 내부상태궤적비교에의한칩검증방법 | |
CN106897214B (zh) | 一种故障注入规则延迟加载的方法 | |
CN102841837B (zh) | 一种基于模拟器的软硬件协同验证方法及系统 | |
SI2825961T1 (en) | Sampling conducted by the instrumentation of the time of implementation | |
CN108664380A (zh) | 一种带性能显示的执行后软件调试系统及调试方法 | |
CN101206614B (zh) | 仿真特殊功能寄存器的仿真器 | |
CN100359486C (zh) | 一种调试操作系统内核态程序的方法及装置 | |
CN107480023A (zh) | 一种磁盘故障注入的方法及系统 | |
US7707019B1 (en) | Command buffering for hardware co-simulation | |
CN109144422A (zh) | 一种固态硬盘的写数据方法、装置、设备及存储介质 | |
CN108920253B (zh) | 一种无代理的虚拟机监控系统和监控方法 | |
WO2013099438A1 (ja) | 協調シミュレーション用計算機システム、組込みシステムの検証方法及びプログラム | |
CN101211291A (zh) | 一种在嵌入式系统中测试内存的方法 | |
CN108959058A (zh) | 一种虚拟控制器的组态调试器实现方法 | |
CN101237350B (zh) | 用于多任务环境单板机的全局变量异常改写定位方法 | |
CN103678099B (zh) | 一种实现硬件平台与软件平台通讯的方法以及装置 | |
Lin | Study on the principle and defense of buffer overflow attacks | |
CN107317710A (zh) | 一种基于SDN网络对虚拟网卡进行QoS配置的方法与装置 | |
CN104699574B (zh) | 一种建立处理器Cache检查点的方法、装置及系统 | |
Thompson et al. | Software model checking of ARINC-653 flight code with MCP | |
Wang et al. | Symbolic execution of behavioral requirements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191015 Termination date: 20210104 |
|
CF01 | Termination of patent right due to non-payment of annual fee |