前言

现场真实一幕:某ADAS项目需要验证ECU在CAN总线短路时的行为。测试工程师提出用软件模拟故障,但硬件专家坚持必须用继电器真实短路——因为软件模拟无法触发硬件层的看门狗复位。最终测试发现,软件模拟通过了所有用例,但真实短路测试时ECU直接死机。两种方法的结果截然不同。

硬件故障注入和软件故障注入,是汽车控制器FIT(故障注入测试)的两条技术路线,决定了“能注入什么故障、能达到什么精度、需要什么成本”。选择错误,轻则测试不充分,重则安全机制验证失效。

本文将从工程实战角度彻底讲透硬件注入与软件注入:

  • 硬件故障注入:接触式(探针/插座)vs 非接触式(辐射/电磁)

  • 软件故障注入:编译时注入 vs 运行时注入(超时/异常/代码插入)

  • 故障模型映射:哪些故障只能用硬件注入,哪些只能用软件注入

  • 工程决策树:成本、精度、侵入性、可重复性如何权衡

适用读者:汽车电子测试工程师、功能安全工程师、嵌入式软件工程师、系统架构师
适用标准:ISO 26262-2018(Part 4/6/11)、IEC 61508
适用场景:FIT方案设计、HIL平台选型、安全机制验证策略制定

一、先说结论:硬件注入与软件注入的本质差异

硬件故障注入和软件故障注入的本质区别在于:故障是在物理层面注入还是在逻辑层面注入

对比维度硬件故障注入软件故障注入
故障注入点芯片引脚、组合逻辑电路、寄存器内存、寄存器、软件状态层面
故障类型覆盖开路、桥接、杂散电流、电源浪涌、卡死存储数据损坏、通信数据损坏、软件缺陷
时间分辨率纳秒级(硬件定时器/事件触发)毫秒级(受限于软件调度)
系统扰动极低(接触式几乎无扰动)较高(插桩可能改变软件结构)
硬件成本(额外硬件设备、探针台)(仅需调试接口)
可重复性接触式好/非接触式差100%可重复
适用测试对象原型硬件、底层错误检测/屏蔽机制应用程序、操作系统、高级安全机制
永久性故障模拟适合编译时可模拟,运行时困难

一句话总结:硬件注入适合验证“物理世界能不能把系统搞坏”,软件注入适合验证“系统在数据异常时能不能正确响应”。两者各有分工,并非替代关系,而是互补关系

二、硬件故障注入:接触式与非接触式详解

2.1 硬件注入的定位

硬件实现的故障注入通过额外硬件向目标系统的硬件中引入故障。它能够到达软件无法触及的位置,是验证芯片级安全机制(如看门狗、电源监控、ECC硬件逻辑)的唯一手段。

根据故障类型及其位置,硬件注入分为两类:接触式和、非接触式。

2.2 接触式硬件故障注入

故障注入器与目标系统直接物理接触,在目标芯片外部产生电压或电流变化。

方法一:有源探针
属性描述
原理通过连接到引脚上的探针注入电流,改变引脚的电流/电压
适用故障固定状态故障(卡死);跨接两个或多个引脚可实现桥接故障
优点精确控制故障时间和位置;对目标系统几乎无干扰
局限性故障在引脚级别建模,与内部实际故障模型不完全对应
⚠️ 风险注入额外电流必须格外小心,过大的电流可能损坏目标硬件

在汽车控制器中的典型应用:ISO 7637-2电源浪涌测试、传感器信号短路/断路测试、ECU引脚级故障注入。

方法二:插座插入法
属性描述
原理在目标硬件与其电路板之间插入一个插座,通过插座将模拟信号强行施加到目标引脚
可实现故障卡死、开路、更复杂的逻辑故障(反相信号、与/或运算、时序组合)
优点良好的时间和位置控制;几乎不产生干扰
局限性故障在引脚级别建模,与芯片内部实际的故障模型有差异

具体实现方式

  • 引脚信号可以被反相

  • 可与相邻引脚的信号进行与运算或或运算

  • 可与同一引脚上的先前信号进行运算

接触式注入的共同特点

  • 都能很好地控制故障发生的时间和位置

  • 对目标系统几乎不会造成干扰

  • 故障在引脚级别建模,与传统内部故障模型不完全相同

  • 但足以测试错误检测电路(如看门狗触发、电源监控响应)

电源扰动注入:连接在电源硬件上的有源探针可注入电源扰动故障(电压跌落、浪涌、纹波叠加)。但这种方法可能损坏被注入的器件,增加了破坏性注入的风险,应在实验前进行充分的风险评估并准备备用器件。

2.3 非接触式硬件故障注入

故障注入器与目标系统没有直接物理接触,通过外部物理现象诱发故障。

方法原理典型应用优点局限性
重离子辐射离子穿过目标设备的耗尽区,产生杂散电流模拟太空环境中的单粒子翻转(SEU)真实模拟辐射环境难以精确控制触发时间和位置
电磁干扰将目标硬件置于电磁场中或其附近,感应出异常电流模拟工业环境中的EMI干扰无需物理接触触发时刻无法精确控制,重复性差
激光注入聚焦激光束照射芯片特定区域,产生光电流精确位置的单粒子效应模拟空间分辨率高设备昂贵,需去除芯片封装

非接触式方法的价值:非常适合研究原型的可靠性特性,尤其是需要高时间分辨率的硬件触发和监测(如CPU中的故障延迟),或者需要访问其他方法难以触及的位置时。但精确控制触发时间和位置的困难是其固有短板。

在汽车控制器中的典型应用:芯片级可靠性评估(通常在半导体供应商处执行)、EMC抗扰度测试。

三、软件故障注入:编译时与运行时详解

3.1 软件注入的定位

软件故障注入技术之所以具有吸引力,是因为它无需昂贵的硬件,且可以针对应用程序和操作系统进行测试,而这在采用硬件故障注入时很难实现。

3.2 两种部署策略

注入目标实现方式在汽车控制器中的具体应用
应用层软件将故障注入器嵌入应用层代码中,或部署在RTE与应用层之间AUTOSAR应用层FIT、Simulink模型注入
BSW(基础软件)必须将故障注入器嵌入BSW中,或通过调试接口在运行时修改通信栈故障注入、OS调度器测试

3.3 编译时注入

属性描述
时机在程序映像被加载并执行之前
操作对象目标程序的源代码或汇编代码
本质将错误注入代码中,而非将故障注入硬件中
故障模拟范围硬件故障、软件故障、瞬态故障
实现方式生成一个错误的软件映像,当系统执行该故障映像时触发故障
优势① 实现非常简单;② 运行时无需额外软件;③ 执行过程中零干扰;④ 可模拟永久性故障
局限无法在工作负载程序运行时注入故障

在汽车控制器中的典型应用

  • 修改ADC驱动代码,模拟转换错误返回

  • 修改CAN驱动代码,模拟CRC校验失败

  • 修改AUTOSAR应用层代码,模拟变量溢出

3.4 运行时注入

运行时注入需要一种触发机制来启动故障注入。三种常用触发方式:

触发方式一:超时(Timeout)
属性描述
原理定时器在预定时间到期后生成中断,调用故障注入
定时器类型硬件定时器(必须与中断处理程序向量关联)或软件定时器
优点最简单,无需对应用程序或工作负载程序进行任何修改
缺点基于时间而非特定事件或系统状态注入故障,产生不可预测的故障效应
适用场景仿真瞬态故障和间歇性硬件故障

在汽车控制器中的实现:使用MCU硬件定时器或OSEK/AUTOSAR软件定时器触发故障注入。

触发方式二:异常/陷阱(Exception/Trap)
属性描述
原理硬件异常或软件陷阱将控制权转移给故障注入器
软件陷阱插入目标程序中的陷阱指令在程序执行特定指令之前触发故障注入
硬件异常硬件检测到的事件(如访问特定内存位置时)触发注入
关键要求两种机制都必须与中断处理程序向量关联
优势可在特定事件或条件发生时随时注入故障,比超时更精确

在汽车控制器中的实现

  • 利用ARM Cortex的HardFault或TriCore的Trap机制

  • 配置MPU访问权限,触发MemManage Fault

  • 在启动代码中配置异常向量表

触发方式三:代码插入(Code Insertion)
属性描述
原理在目标程序中添加指令,在特定指令执行之前触发故障注入
与代码修改的区别代码插入是在运行时执行故障注入,且是添加新指令而非修改原有指令
与陷阱法的区别故障注入器可能作为目标程序的一部分存在,并在用户模式下运行,而非系统模式
优点不改变原有逻辑,仅增加触发点
适用场景应用层故障注入,无需系统级权限

3.5 混合方法

当软件注入的时间分辨率不足以应对短延迟故障时,可以采用混合方法

属性描述
组合方式软件故障注入的灵活性 + 硬件监控的准确性
适用场景测量极短延迟(如CPU内部故障传播)
代价硬件监控可能增加成本,并通过限制观察点和数据存储容量而降低灵活性

在汽车控制器中的应用:软件注入故障 + 硬件定时器捕获响应时间(如验证看门狗对微秒级故障的响应)。

四、故障模型与注入方法的映射关系

选择硬件还是软件方法,核心依据是关注的故障类型

故障模型硬件注入软件注入推荐原因
开路✅ 可通过插座插入法实现❌ 无法模拟硬件软件无法模拟物理层面的断开
桥接✅ 可通过探针跨接实现❌ 无法模拟硬件软件无法模拟物理层面的短路
比特翻转✅ 可通过辐射/EMI实现✅ 可通过修改内存实现两者均可按成本、精度、可重复性取舍
杂散电流✅ 非接触式辐射实现❌ 无法模拟硬件软件无法产生物理层面的电流效应
电源浪涌✅ 有源探针注入❌ 无法模拟硬件软件无法产生物理层面的电源扰动
卡死✅ 硬件注入器可精确控制位置△ 开销高或无法实现硬件软件无法模拟物理层面的卡死
存储数据损坏✅ 硬件触发软件主要优势领域软件直接在软件状态层面操作
通信数据损坏✅ 总线干扰✅ 软件可Hook通信栈软件成本低,实现简单
软件缺陷表现❌ 不适用唯一选择软件软件故障注入的天然领域

五、工程选型决策树

5.1 完整决策树

text

需要注入的故障位置
│
├── 芯片引脚、组合逻辑、寄存器(软件不可达)
│   └── 选择:硬件注入
│       ├── 接触式(探针/插座)
│       │   ├── 优点:高精度、可控、适合ISO 7637测试
│       │   └── 风险:可能损坏硬件,需预留备用器件
│       └── 非接触式(辐射/电磁)
│           ├── 优点:模拟自然现象
│           └── 缺点:难以精确定时,重复性差
│
├── 内存、变量、通信数据(软件可见)
│   └── 选择:软件注入
│       ├── 编译时注入
│       │   ├── 优点:零干扰、可模拟永久故障
│       │   └── 缺点:无法运行时触发
│       ├── 运行时注入
│       │   ├── 超时触发:简单、适合瞬态故障
│       │   ├── 异常/陷阱触发:精确、适合特定事件
│       │   └── 代码插入触发:用户模式、适合应用层
│       └── 混合方法(软件注入 + 硬件监控)
│           ├── 优点:兼顾灵活性与精度
│           └── 代价:额外硬件成本
│
└── 需要同时验证物理和逻辑层
    └── 选择:分层验证策略
        ├── SiL阶段:软件注入(成本低、迭代快)
        └── HIL阶段:硬件注入 + 软件注入(最终验证)

5.2 汽车控制器应用场景建议

测试阶段推荐方法理由
单元测试软件注入(编译时)零干扰,可模拟永久故障
集成测试软件注入(运行时)灵活触发,适合接口验证
功能测试硬件注入 + 软件注入完整验证硬件和软件安全机制
EMC测试硬件注入(非接触式)模拟真实物理干扰
ISO 7637电源测试硬件注入(接触式)精确控制电源扰动
E2E通信保护验证软件注入(运行时)直接操作通信栈数据
看门狗验证软件注入 + 硬件注入混合软件挂起任务 + 硬件时钟失效联合测试

六、总结与面试高频考点

6.1 核心结论表

要点结论
硬件注入的本质物理层面注入故障——开路、桥接、浪涌、卡死
软件注入的本质逻辑层面注入故障——数据损坏、软件缺陷
硬件注入优势纳秒级精度、极低扰动、可达组合逻辑
软件注入优势低成本、高灵活度、100%可重复
硬件注入局限成本高、非接触式重复性差
软件注入局限毫秒级精度、有系统扰动
选型核心依据故障类型——开路/桥接→硬件;数据损坏→软件
工程最优实践混合方法:硬件注入验证物理层,软件注入验证逻辑层

6.2 面试高频考点

问题标准回答
硬件注入和软件注入的本质区别?硬件注入在物理层面(引脚、电流、辐射),软件注入在逻辑层面(内存、变量、通信数据)
什么故障只能用硬件注入?开路、桥接、杂散电流、电源浪涌——软件无法模拟物理层面的电气效应
什么故障只能用软件注入?软件缺陷表现(机器级及以上)——硬件注入无法修改代码逻辑
什么故障两者都可以?比特翻转、存储数据损坏——可按成本、精度、可重复性取舍
硬件注入为什么能检测看门狗?通过真实物理短路或电源浪涌触发硬件级复位,软件模拟无法触发同样的硬件路径

6.3 工程决策速查卡

故障类型硬件软件决策
开路/桥接硬件
电源浪涌硬件
卡死硬件
比特翻转按成本取舍
存储数据损坏软件
通信数据损坏软件
软件缺陷软件

七、参考资料

  1. ISO 26262-2018. Road vehicles — Functional safety. Part 4/6/11.

  2. IEC 61508-2010. Functional safety of electrical/electronic/programmable electronic safety-related systems.

  3. dSPACE. SCALEXIO Fault Injection User Guide.

  4. Lauterbach. Debugger Fault Injection Guide.

  5. Vector. CANoe/CANape Fault Injection Documentation.

更多推荐