4. 故障注入技术分类与选型

星载软件的故障注入不是单一技术,而是一组按“注入作用点”划分的方法族。理解分类的关键,是抓住三个维度:注入发生在哪一层(物理信号、指令/内存、模型仿真)、注入粒度(位、字节、寄存器、总线事务、任务、整机)、可控性与观测性(能否精确触发、能否复现、能否观测到传播路径)。本节先建立三类注入的对比框架,再落到星载软件的适用性判断与选型权衡。

4.1 三类注入的作用点与实现方式

硬件级注入作用于真实物理层。典型手段包括:在电源线上叠加瞬态跌落(模拟母线欠压)、用探针或专用板卡对 SRAM/Flash 数据总线施加位翻转、对看门狗复位引脚注入毛刺、对 CAN/1553B 总线注入错误帧或位错误。其优势是“真实”——它不依赖软件配合,能触发硬件与软件交界的故障(如EDAC 纠错、总线超时、复位恢复)。代价是设备昂贵、定位困难、对被测软件的观测往往只能通过外部总线或调试口间接获取。

软件级注入作用于指令流与数据。常见做法有三类:一是代码插桩,在目标函数入口/出口插入故障分支,如强制返回错误码、跳过校验;二是内存改写,通过调试器或注入代理修改指定地址的变量、寄存器或堆栈内容;三是接口桩替换,用故障桩替换真实驱动,模拟传感器超时、总线丢包。软件级注入粒度细、可精确控制触发时机(如“第 3 次调用时翻转”)、可观测性强(能直接打印变量与调用栈),但会引入插桩开销,且难以覆盖纯硬件故障。

仿真级注入作用于模型与虚拟平台。在处理器指令集模拟器、全数字仿真环境或半实物仿真回路中,通过修改仿真模型参数或注入事件来制造故障,例如在 Simulink 模型中让陀螺仪输出叠加漂移、在 QEMU 中让某条指令产生异常、在故障树仿真中按概率触发部件失效。仿真级注入可重复性最好、成本最低、可观测性最强(可记录每条指令与每个信号),但保真度受模型精度限制,且难以复现真实器件的模拟特性与电磁耦合。

三类故障注入的作用点、粒度与观测性对比 硬件级注入 作用点 电源 / 总线 / 引脚 / 存储器 物理信号层 典型手段 • 电源瞬态跌落 • 总线位翻转 / 错误帧 • 复位引脚毛刺 • 探针强制电平 粒度 位 / 字节 / 总线事务 可控性 触发精度高,但需硬件夹具 观测性 依赖外部总线 / 调试口 星载适用 单粒子、复位恢复验证 软件级注入 作用点 指令流 / 变量 / 接口 软件逻辑层 典型手段 • 代码插桩强制分支 • 内存 / 寄存器改写 • 接口桩替换驱动 • 异常 / 错误码注入 粒度 变量 / 函数 / 任务 可控性 触发条件可编程,复现性好 观测性 可直接打印变量与调用栈 星载适用 软件缺陷、容错逻辑验证 仿真级注入 作用点 模型 / 虚拟平台 / 指令集 仿真抽象层 典型手段 • 模型参数漂移 / 失效 • 指令异常注入 • 故障树概率触发 • 半实物回路扰动 粒度 指令 / 信号 / 部件 可控性 完全可重复,参数可扫描 观测性 全信号可记录,最强 星载适用 早期设计验证、传播分析

4.2 星载软件适用性分析

星载软件运行在辐射、真空、温差与资源受限环境中,其故障谱与地面软件差异明显:单粒子翻转导致存储器位翻转、单粒子锁定导致电流异常、总线上出现瞬态错误、看门狗误复位。因此选型不能只看“哪种方便”,而要看“要验证的故障是否真实存在于该环境”。

硬件级注入最适合验证与物理效应直接相关的容错机制:EDAC 能否纠正单比特错误、看门狗能否在程序跑飞后正确复位、总线错误帧能否被协议层识别并重传。例如在星载计算机 SRAM 数据总线上注入单比特翻转,观察 EDAC 中断是否在 1 个遥测周期内上报、纠错后数据是否一致。这类验证无法用软件级注入完全替代,因为软件改写内存不会触发真实的EDAC 硬件路径。

软件级注入最适合验证软件自身的缺陷与容错逻辑:任务超时处理、参数越界保护、通信重传、模式切换失败回退。例如在姿控周期任务中,将陀螺仪采样函数返回值强制置为无效标志,观察控制律是否进入安全模式、是否在 3 个周期内切换备份陀螺。软件级注入还能覆盖“接口契约”类故障,如驱动返回超时、队列满、校验失败,这些在硬件级注入中难以精确构造。

仿真级注入最适合早期设计与传播路径分析。当硬件尚未齐套、软件尚未集成时,可在全数字仿真环境中注入陀螺漂移、星敏感器失锁、推力器卡死等故障,观察姿态误差如何传播到控制指令、如何触发模式切换。仿真级注入还能做参数扫描:将故障幅值从 0.1°/h 逐步加到 10°/h,记录姿态超差时间与恢复时间,形成传播曲线。其局限是模型保真度——若执行机构模型未考虑摩擦与死区,仿真结论需在硬件回路中复核。

4.3 注入粒度、时机、可控性与观测性的权衡

选型时四个属性往往互相牵制,需要按验证目标排序。

  • 粒度:硬件级可到位,软件级可到变量/函数,仿真级可到指令/信号。粒度越细,越能定位传播起点,但注入装置与观测手段也越复杂。
  • 时机:软件级和仿真级可精确控制“第 N 次调用”“第 M 个周期”触发;硬件级受物理触发精度限制,通常只能按时间窗或外部事件触发。
  • 可控性:仿真级最强(可重复、可扫描),软件级次之(依赖插桩与调试通道),硬件级最弱(受夹具与器件状态影响)。
  • 观测性:仿真级可记录全部信号,软件级可打印变量与调用栈,硬件级通常只能通过总线遥测或调试口间接观测。
选型经验:若验证目标是“硬件容错路径是否生效”,优先硬件级;若验证“软件容错逻辑是否正确”,优先软件级;若处于设计早期或需要大量重复扫描传播路径,优先仿真级。三者不是互斥关系,典型星载软件验证会按“仿真级→软件级→硬件级”逐级收敛。

4.4 一个可执行的选型判断示例

假设某星载姿控软件需要验证“陀螺仪单粒子翻转导致数据异常时,系统能否在 2 个控制周期内切换到备份陀螺”。可按以下判断路径选型:

  1. 若当前仅有算法模型与仿真环境,先用仿真级注入:在陀螺模型输出上叠加阶跃偏差,记录切换逻辑触发时间与姿态误差,确认逻辑正确。
  2. 若软件已集成但硬件未齐套,改用软件级注入:在陀螺采样接口处插入故障桩,使第 3 次采样返回无效值,观察任务调度与模式切换。
  3. 若整机已齐套,用硬件级注入复核:通过总线注入错误帧或对存储器注入位翻转,确认 EDAC 与看门狗路径真实生效。

该路径的核心是:先用可控性最强的仿真级定位逻辑问题,再用软件级验证接口与调度,最后用硬件级确认物理路径。每一步都保留可观测记录(触发时刻、切换时刻、姿态误差、遥测帧),使故障注入结果可追溯、可复现。

注意:软件级注入的插桩会改变程序时序与内存布局,可能掩盖或放大真实故障。因此软件级注入结论应标注“插桩条件”,并在硬件级或仿真级中交叉验证。硬件级注入则需注意注入能量与器件耐受边界,避免造成永久损伤。

综上,三类注入各有不可替代的适用面。星载软件选型时应先明确“要验证的故障是否真实存在于目标环境”,再按粒度、时机、可控性与观测性四个维度排序,最后用“仿真级→软件级→硬件级”的收敛路径组织验证,使故障注入既覆盖真实故障谱,又保持可观测、可复现、可追溯。