故障插入测试技术是开展功能安全评估的一种重要方法,通过模拟故障并观察安全相关系统的反应,可以分析安全机制实现的诊断覆盖率情况。本文通过对国内外已有的故障插入测试的方法和实现的平台等进行综合调研和比对,提出了在功能安全评估测试中开展故障插入测试的典型流程和技术手段。

故障插入测试是对安全相关系统诊断和故障反应的重要验证方法,在功能安全基础标准IEC61508(GB/T20438)中明确指出,对于声明的诊断覆盖率达到或超过90%的诊断技术,需要开展故障插入测试[1]。在对安全相关系统进行评估认证时,评估方需要根据IEC61508.2的附录A.1中罗列的故障给出故障插入的范围,对制造商按照IEC61508.2的附录A.2-A.14设计的诊断方法进行验证,以证明诊断方法的有效性。
为了在功能安全评估认证过程中正确合理的开展故障插入测试,本文对故障插入技术的方法和故障插入设备进行了研究,并对这些方法进行了比较,给出了适合于目前工业应用安全相关系统产品的方法和措施。
1、故障插入测试技术简介
故障插入是目前广泛应用于安全系统、容错系统进行可信性验证十分普遍的一种方法。在航空航天、武器装备的嵌入式系统中已经得到广泛的应用。随着功能安全技术发展,在如今的工业安全产品开发和研制过程之中也得到借鉴和推广。
目前,国内外普遍采用的故障插入方法主要可分为三类:仿真模拟方法、基于软件的故障插入、基于硬件的故障插入。
仿真模拟方法主要应用于产品的概念和设计阶段,在基于仿真的故障插入技术中,故障被插入到计算机系统的仿真模型,这项技术通常应用于开发周期的前期阶段,即计算机系统的物理原型建立之前的概念和设计阶段。通过进行仿真,及时发现系统弱点,纠正设计错误,降低设计成本[2]。这种仿真技术的主要优点是可观察性和可控制性。可观察性指故障对系统的影响是可以被观察和衡量的,可控制性指可以在指定时间和区域插入故障。在功能安全评估认证过程之中,可以利用失效分析等方法来代替这种仿真。下面详细介绍软件故障插入和硬件故障插入方式。
2、软件故障插入
软件故障插入的最终目的还是模拟硬件出现故障时系统的行为,对于如处理器之类的复杂IC,由于其内部资源如内存、寄存器难以通过外部的物理方法改变,而变相的设计一段故障程序或人为的写入故障数据,来对这些部分的诊断功能进行检测。如果插入目标是应用程序,那么故障插入可以在应用程序之中或在应用程序与操作系统之间;如果插入目标是操作系统或固件,那么必须嵌入到操作系统或固件之间(在操作系统或固件与硬件之间很难再有一个层次)。
软件故障插入的缺点是:
a)不能够插入到软件无法访问的区域;
b)可能会对原始软件的运行产生扰乱;
c)可能无法模拟一些短时间的潜在故障。
软件插入方法又可以分为:在编译时期的插入和在运行时期的插入。
在编译时期插入简单的说即是对软件的源代码进行修改,插入故障程序或直接修改数据,产生错误然后评估错误的影响。
在运行时期插入需要利用一些机制来触发故障的插入,一些通用的机制包括:
a)超时(Time-out)。即计时器在一个预定的时间内终止,触发插入。特殊情况下,超时时间会形成一个中断来调用故障插入。计时器可以是一个硬件或软件计时器。这个方法不要求对软件进行修改。但硬件计时器必须与系统的中断处理向量表相连接。
b)异常/陷阱(Exception/Trap),在这种情况下一个硬件异常或软件陷阱会将控制转移到故障插入。与超时不同,异常/陷阱能够在某件事或某个情况发生时插入故障[3]。
c)代码插入(Code insertion),在目标程序之中加入特殊指令,允许故障在特定指令执行之前插入。

3、硬件故障插入
3.1、概述
在基于硬件的故障插入中,可以分为两类:(1)对于普通的非集成元器件(如电阻、电容),可以在开发过程之中采用直接的物理破坏或人为更换的方式插入故障;(2)对于IC,可以采用接触式插入,即从管脚级通过探针或嵌入插口插入故障,或采用非接触式插入,即从IC内部插入故障,人为的将IC暴露于不同的重离子射线源之中或通过电源产生干扰。
最为常用的是管脚级故障插入方法,因为该方法可以精确的控制故障插入位置、插入时间以及故障模型等参数,同时还可以使故障插入过程重现,这些优点使得其在安全控制原型系统的验证中得到了广泛的应用。管脚级故障插入方法又分为搭接式和嵌入式两种,根据成本、设计难度以及目标芯片的不同封装方式等因素,这两种方式在实现时各有优缺点[4]。
在进行管脚级故障插入测试之前,必须对待测芯片的功能和电平信号等进行详细分析,因为在某些情况下,插入的故障状态和芯片当前的运行状态是相同的,例如当你在某个管脚插入一个固定高(stuck-at high)的故障,但是此时该管脚的正常运行状态就是高电平,那么即使诊断功能正确该故障也不会导致任何故障反应产生。
对于一般的管脚级故障插入测试过程如下:故障F是在一定的测试环境U下生成的,这个环境一般用三个因素描述,包括目标系统模型、测试基础和管脚级的故障模型,在这些情况确定后,插入相应的故障,产生相应的结果,并对结果进行分析以确认相应的容错或诊断功能是否实现。

图1 故障插入过程的概述
每个故障的属性都是由这个环境下的三个因素确定,因素变化了故障产生的影响也变化了。
目标系统模型:故障可以插入到IC管脚的任意模块,包括处理器、内存、总线或其他设备。目标系统模型即使故障插入测试准备开展的目标对象。故障插入过程应该与各个模块的运行活动保持紧密的同步性。
测试基础:在故障插入过程中,目标系统所执行的程序称之为测试基础。对于安全相关系统来说,这些程序一般就是一个通用的应用程序。
管脚级的瞬时故障模型:IC内部的瞬时故障在某些情况下可以通过管脚的错误表示。对于安全相关系统的板卡内部来说,瞬时故障或间歇故障可能是系统失效的主要原因。在IEC61508中,软错误即是一项重要的瞬时故障。故障插入的目标是评估实际的故障,或插入的故障能够引起与实际故障相同的现象。以板卡上的处理器为例,通过实验仿真发现,大多数处理器内部的故障导致的是单个管脚的输出错误,而且由瞬时内部故障导致的错误仅能通过输出管脚发现(虽然处理器的故障可能在任何地方产生错误),因此在处理器的输出管脚插入错误能够直接评估处理器内部的故障。而在输入管脚插入错误,不但能评估内部的故障还能评估内存、总线和外围器件的故障。
总之,故障插入要能够知道哪些故障会对目标系统产生怎样的影响,例如会引起控制流的错误,从而来验证控制流检测技术。

3.2、管脚故障插入方法
管脚级故障插入方法分为探针式和插口嵌入式两种。探针式故障插入是通过一些缚在目标芯片管脚上的探针强行改变目标管脚的电流或电压,以此进行故障插入。采用这种方法的故障插入工具设计较简单,成本也比较低,但是它的缺点是:一方面只能用于一些封装较简单的芯片(如6个管脚的双列直插),当遇到封装比较复杂的芯片(如处理器),或者管脚比较细密的芯片时,再采用插入探针的方法就非常困难;另一方面,它一般仅能模拟管脚的固定故障(Stuck-at)或桥接故障(即IEC61508中所提及的信号线间的短路,而且不是芯片内部的固定故障或桥接故障)。而且,如果操作不慎产生了较大的电流还可能对元器件造成永久的损坏[4]。
插口嵌入式故障插入一般需要专门设计开发相应的故障插入工具,嵌套在目标板卡的芯片上,通过强制修改模拟信号,来插入固定故障、开路故障或其他复杂的逻辑故障。插入的管脚信号可以反转,与临近的或之前的信号执行“与”和“或”等操作。并在完成测试后进行分析给出结论。
一个故障插入环境的基本组件示例如下,目前已有一些成熟的商业故障插入系统可以购买:

图2 故障插入环境的基本组件示例
3.3、探针故障插入方法示例
下文中给出了两个基于探针的故障插入方式的示例,在实际的工作中,要根据板卡具体的集成电路和模拟电路的情况,以及所涉及的电子元器件类型,设计相应的插入方式。
3.3.1 基于后驱动技术的故障插入方法
后驱动技术用于故障插入,从器件管脚插入故障,但不需要设置相应的故障插入接口,只要将故障插入探针与被插入故障的电路管脚接触即可。后驱动(Back-Driving)技术是最早由美国人Fractron在1968年提出的主要用于数字电路在线测试的一项技术,其实质是在被测器件的输入级(前级驱动器件的输出级)灌入或拉出瞬态大电流,迫使其电位按照要求变高或变低,而达到对被测器件施加在线测试激励的目的。在上述思想的启示下,将其拓宽,应用到故障插入技术领域中,即应用后驱动技术,将被故障插入器件管脚强制为高或低,来产生故障。在一般情况下,一个电路接点是由一个输出驱动和若干个输入。决定电路节点电位的是驱动器件的输出而不是被驱动器件的输入。图3中U3的X脚输入(节点O)的电位就是由U1的Y管脚决定的。本文设计的后驱动故障插入电路,就是通过改变驱动器件的输出级电位来实现的[5]。

图3 芯片输入输出之间连接图
图4给出了TTL器件的输出结构,Q1和Q2组成的电路为TTL电路的输出管脚。这里只需考虑输出为“1”,而测试要求在X点加“0”,以及输出为“0”,而测试要求在X点加“1”这两种情况[6]。

图4 后驱动原理
后驱动原理表明,只要在插入点处施加的电流足够大,就可以满足将TTL和CMOS等电路输出强制为高或低的目的。对5伏供电的TTL和CMOS器件来说,逻辑0最低阈值规定为0.8伏(仅TTL),逻辑1最高阈值为3.5伏(仅CMOS)。即要求在插入固定0故障时,拉低电压必须低于0.8伏,而插入固定1故障时,拉高电压必须高于3.5伏。

3.3.2 基于电压求和的故障插入方法
在数字电路中,信号为离散信号或者是0或者是1,其故障模式也是固定0或固定1,通过后驱动技术进行故障插入可以完全模拟这两种故障模式。而在模拟电路中信号为连续信号,如传感器的信号调理电路和执行机构的驱动电路都是由很多级的电路前后协同工作,因此可能出现故障类型很多,而且故障原因非常复杂,但是,无论是什么原因引起的故障最终进入处理器时都表现为信号突变、漂移和恒定。因此本文提出采用电压求和故障插入方法,实现模拟电路的故障插入。电压求和方法故障插入是主要针对模拟电路采用的故障插入方法,因为在信号调理或驱动电路中几乎都采用运算放大器进行信号变换,其原理如图5所示[6]。

图5 电压求和故障插入原理
4、国内外已有故障插入设备
4.1、硬件故障插入工具
法国LASS-CNRS大学开发的Messaline,同时使用了探针和嵌入式来实现管脚级的故障插入。下图显示了Messaline的架构和环境[7]:

图6 Messaline的架构和环境
Messaline能够插入固定、开路、桥接和复杂的逻辑故障。它还能够控制故障持续的时间和频率。从目标系统收集的信号还能够给插入器提供反馈信息,能够同时模拟32个插入点。该套工具在实验室中已经应用于铁路的中央控制联锁系统和一套集散控制系统。

FIST(用于研究瞬时故障影响的故障插入系统 Fault Injection System for Study of Transient Fault Effect),由瑞典查尔姆斯理工大学开发,同时采用接触式和非接触式方法来模拟目标系统内的瞬时故障。该工具使用重离子放射线在芯片内的随机区域创造瞬时故障,从而引起单个或多个位的跳变(0变为1或1变为0)。
FIST能够直接将故障插入到芯片内部,通过在芯片的随机区域产生瞬时故障导致输出管脚出现较大的变化。除了射线以外,FIST还能够插入电源干扰故障,这是通过在供电和处理器芯片Vcc之间放置一个MOS三极管来实现。通过试验发现,两种方法检测到的错误能够对程序控制流和数据流产生相似的影响。而重离子射线导致了大部分的地址总线错误,而电源干扰导致了大部分的控制信号错误。FIST的环境配置情况如下图所示:

图7 FIST环境配置情况

MARS(Maintainable Real-Time System),维也纳科技大学开发,除了采取重离子射线以外,还采用了电磁干扰的方式。
葡萄牙Coimbra大学研制的RIFLE,采用管脚故障插入的方式。环境配置如下[8]:

图8 MARS环境配置情况

4.2、软件故障插入工具
Ferrari(Fault and Error Automatic Real-Time Injection),由田纳西大学开发,利用软件陷阱实现插入CPU、内存和总线故障。Ferrari内部的故障和错误插入器使用软件陷阱,软件陷阱由程序计数器在指向某个指定的程序位置或由一个计时器触发。当陷阱被触发,就在规定的位置插入故障,一般是修改所选寄存器或内存的内容,以此来模拟实际的数据损坏。
Ftape(Fault Tolerance and Performance Evaluator),伊利诺伊大学开发,组成如下图所示。用户可以插入故障到用户可访问的寄存器、内存和磁盘,插入方式是位跳变。

图9 Ferrari环境配置情况
Doctor(Integrated Software Fault Injection Environment),由密歇根大学开发,允许插入CPU故障、内存故障和网络通信故障。使用三种触发方式:超时、陷阱和代码修改。
Xception,由哥伦比亚大学开发,采用先进的调试和性能监视技术。它不要求对应用软件进行修改,也不插入软件trap。实际上,Xception使用了一种处理器内建的硬件异常来触发故障插入。Xception故障根据对特定的地址访问来触发,因此试验具有可重复性。下面的事件可以触发故障插入[9]:
a)从一个特定的地址读取操作码;
b)从一个特定的地方加载操作数;
c)操作数存储到一个特定的地址;
d)从启动经过了一段特定的时间;
e)以上故障触发的组合。

5、故障插入方法比较及应用
5.1、故障插入方法的比较
根据上面的内容,不同的故障插入方法有其优缺点,详细比较如下:

表1 不同方法的比较
硬件 软件
接触式 非接触式 编译期 运行期
成本 高 高 低 低
扰动 无 无 少 多
损失风险 高 低 无 无
监控时间精度 高 高 高 低
插入故障的位置 芯片引脚 芯片内部 寄存器、内存、软件 寄存器、内存、IO控制器/端口
可控性 高 低 高 高
触发 是 否 是 是
重复性 高 低 高 高

5.2、在功能安全评估中的应用
安全相关系统的功能安全评估由于其自身的特点,应采用适合的故障插入方式和过程,一般需要经历如下几个过程,包括:确定故障点、设计故障方法、执行故障测试、分析记录和结果。
a)故障来源
对于安全相关系统的功能安全评估来说,确定故障点的方式主要有两个:一、IEC61508.2表A.1中所罗列的故障,对于相应的诊断覆盖率,安全相关系统开发人员需要采取相应的措施对这些故障进行诊断;二、执行FMEDA分析的结论,这些结论清楚的表明了哪些故障会导致什么样的后果,因此需要对关键的故障点进行测试。
一般情况下,评估方需根据以上两点确定基本的测试用例范围,由开发人员设计相应的测试方法,评估方对测试方法进行认可,然后执行测试。
b)故障方法的设计
开发人员对于确定的这些故障点,可以选择任何适当的方式进行测试设计。
对于简单器件或模拟电路来说,由于不含软件,而且器件的引脚相对分离独立,一般采用物理的破坏、替换或探针的方式进行故障插入。
对于集成芯片,从硬件上可以采用管脚插入和重离子探照的方式,一般情况下管脚插入仅能覆盖一部分故障点,对于芯片内部的故障更多需要采用软件的方式;对于重离子射线的方式,由于无法确定造成影响的部位的精确位置,因此仅作为故障插入测试的补充方案。
由于现在集成芯片(特别是CPU模块)很多资源都封装到内部,因此对于这些部分故障的测试仅能通过软件进行,虽然采用的是软件的方式,但模拟的仍然是硬件的故障(对于诊断测试的详细信息见“安全控制系统的故障模式和诊断方法”报告),如内部存储阵列的固定等。一般情况下可以采用两种方式:一、通过对源代码进行修改,增加或删除相应的代码,修改一些数据,人为的制造相关的错误,然后运行测试系统最后的反应;二、采用相应的自动测试工具,工具的有效性需进行证明并得到评估方的认可,以保证测试工具能够覆盖第一阶段提出的所有故障。
c)故障测试的执行
在执行测试之前,应按照计划采用的测试方法,制定相应的测试规范,并由适当的人员执行。评估方相关的审查人员应目击测试的整个过程,以证明过程和结论的正确性。
d)分析记录和结果
测试过程中形成的所有记录都应文档化,包括执行的时间、人员、测试用例等。评估人员应查看每项故障插入测试下系统的行为,判断是否能够诊断出来采取相应的动作或直接进入安全状态。

[1]GB/T20438.2-2017,电气/电子/可编程电子安全相关系统的功能安全 第2部分:电气/电子/可编程电子安全相关系统的要求[S].
[2]王妍,徐叶茂. 嵌入式计算机系统中的故障注入技术[J]. 舰船电子工程, 2005.
[3]陆瑶. 软件注入故障的跟踪及其响应分析研究[J]. 信息与电脑(理论版), 2011.
[4]董剑;曲峰;刘宏伟;崔刚. 嵌入式故障注入器HFI-4的研究与设计[J]. 小型微型计算机系统, 2003
[5]李璇君,辛季龄. 基于后驱动技术的故障注入方法研究[J]. 哈尔滨工业大学学报, 2001, 33(6):858-862.
[6]卞春江. 航空发动机电子控制器BIT设计及验证技术研究[D]. 南京: 南京航空航天大学, 2005.
[7]艾书胜. 模拟电路测试性仿真验证技术及软件开发[D]. 成都: 电子科技大学, 2015.
[8]谭兰芳. 面向单粒子效应的软件故障注入技术研究[D]. 长沙: 国防科学技术大学, 2008.
[9]刘志盼. 基于模型的安全相关系统仿真方法的研究与应用[D]. 杭州: 浙江大学, 2012.

故障插入测试技术研究相关推荐

  1. 面向对象的类测试技术研究

    面向对象的类测试技术研究 摘要:类是面向对象软件的基本构成单元,类测试是面向对象软件测试的关键.从基于服务的.基于对象动态测试模型的.基于流图的以及基于规约的四个方面论述了类测试的思想和方法. 关键词 ...

  2. 软件压力测试的手段有注入错误吗,软件错误注入测试技术研究_陈锦富.pdf

    ISSN 1000-9825, CODEN RUXUEW E-mail: jos@ Journal of Software , Vol.20, No.6, June 2009, pp.1425− 14 ...

  3. 基于ETest的车身控制系统硬件在环测试技术研究

    设备组成 Etest_CPS系统主要由硬件部分与软件部分组成.硬件部分由PCI机箱.PCI控制器以及各种PCI接口板卡组成.软件部分由测试设计软件模块.测试执行服务软件模块.测试执行客户端软件模块.设 ...

  4. 【CyberSecurityLearning 附】渗透测试技术选择题 + 法律法规

    1.RDP的端口号为() A. 3389 B. 23 C. 22 D. 443 2.Burp Suite 是用于攻击()的集成平台. A. web 应用程序 B. 客户机 C. 服务器 D. 浏览器 ...

  5. 计算机网络安全技术王艳柏,网络安全渗透测试技术流程研究

    网络安全渗透测试技术流程研究 杜江;任威 [期刊名称]<数字技术与应用> [年(卷),期]2016(000)002 [摘要]随着经济与信息化的飞速发展,网络安全问题已得到人们足够多的重视, ...

  6. 邮件安全隐患及其防范技术研究

    邮件安全隐患及其防范技术研究<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  7. 提高建模效率,改变手工作坊式生产,AutoML的技术研究与应用进展如何了?

    整理 | 王银 出品 | AI科技大本营(ID:rgznai100) [导读]12 月 5-7 日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN.中科天玑协办的中国大数据技术大会(BD ...

  8. 【博士论文】物联网数据安全可信的共享技术研究

    来源:专知 本文约2000字,建议阅读5分钟 本文为你分享物联网数据安全可信的共享技术研究. 来自上海交通大学牛超越的博士论文,入选2021年度"CCF优秀博士学位论文奖"初评名单 ...

  9. 人工智能热门技术研究课题

    人工智能热门技术研究课题 当前人工智能在诸多行业领域已经实现了广泛应用,但在热门技术方面来看,安全性等方面依然存在一定缺陷. 用简单的"对抗性补丁"(adversarial pat ...

最新文章

  1. Java获取正在执行的函数名
  2. 5.2 大间距分类器-机器学习笔记-斯坦福吴恩达教授
  3. ElasticSearch查询 第四篇:匹配查询(Match)
  4. 什么是m叉树_国考临近考试了,感觉已经没有进步空间了,最后关头还有没有什么提成成绩的好方法?...
  5. 新手求大神,有其他swit-case的思路写这个程序么?
  6. python3安装mysql模块_Python安装MySQL库详解,步骤及错误的解决方法
  7. scriptol图像处理算法
  8. 打靶(递归算法) | 八皇后(回溯算法)
  9. abort: error: Temporary failure in name resolution
  10. exawear能运行java_VirSCAN.org-多引擎在线病毒扫描网 v1.02,当前支持 47 款杀毒引擎...
  11. mybatis源码分析详解
  12. 百度地图api初次申请及简单应用
  13. 计算机产业现状及未来,2020工业计算机行业现状及未来前景分析
  14. 这种技术能够替代 Android 原生开发?
  15. 网站设计| 网站设计模板素材
  16. 献给80还有少数90
  17. IP地址为140.123.0.0的地址是B类地址,若要切割为10个子网,而且都要连接上Internet,请问子网掩码应设为
  18. 力扣(718.1143)补9.12
  19. 模型选择——子集选择法(Subset Selection)
  20. access2007 mysql_Access2007基础教程:开始使用Access 2007

热门文章

  1. Qt实现小球碰撞动画——屏保
  2. QQ2006Beta1已定于明天发布(转)
  3. 3分钟了解 vue props type类型
  4. PCIe Controller(x16)-1901驱动异常导致无法检索到独显的问题
  5. 批处理 删除文件 脚本
  6. 无限滚动插件Infinite Scroll
  7. 多普达565 GPRS上网设置方法(搞这个头都大了)
  8. 如何获取一段HTML源码
  9. MacBook 苹果笔记本 下载Xcode历史版本
  10. Nginx下Html资源中文乱码问题