4. 故障模型与航空嵌入式软件失效模式

故障注入测试的第一步不是“注入”,而是“建模”。如果对目标系统可能出现的故障类型没有清晰分类,注入的激励就会变成随机扰动,测试结果也无法与适航审查中的安全性分析建立对应关系。航空嵌入式软件的故障模型,本质上是对“物理世界异常如何传播为软件失效”的抽象描述。本节围绕六类典型故障展开:硬件瞬态故障、硬件永久故障、软件设计缺陷、接口故障、时序故障与数据故障。

一、从物理扰动到软件失效的传播链

在航空电子系统中,故障源往往位于硬件或环境层,而最终表现为软件功能异常。以一条典型的飞控数据采集通道为例:大气数据计算机输出的气压高度经 ARINC 429 总线送入飞控计算机,软件读取后参与高度保持律计算。若总线电缆受到电磁干扰,某一位发生翻转,这就是硬件瞬态故障;若收发芯片因过压击穿而持续输出错误电平,则是硬件永久故障。两者在软件侧可能都表现为“高度值跳变”,但持续时间、可恢复性和注入方法完全不同。

因此,建立故障模型时必须同时记录三个维度:故障源(硬件、软件、接口、环境)、时间特性(瞬态、间歇、永久)、数据表现(位翻转、值越界、时序偏移、消息丢失)。这三个维度共同决定了后续注入手段的选择。

航空嵌入式软件六类故障模型与失效传播关系 故障源层 硬件瞬态故障 SEU / 电磁干扰 / 单次位翻转 硬件永久故障 芯片击穿 / 断路 / 固定电平 软件设计缺陷 逻辑错误 / 边界遗漏 / 竞态 接口故障 协议错帧 / 校验失败 / 丢包 时序故障 抖动 / 超时 / 采样偏移 数据故障 越界 / 精度丢失 / 单位错误 软件可观测表现 • 变量值跳变或冻结 • 校验和/CRC 不匹配 • 控制律输出饱和 • 任务周期超时 • 状态机进入非法状态 • 冗余通道比较不一致 系统级失效模式 功能丧失 / 输出冻结 高度保持失效、舵面卡死 功能异常 / 输出错误 高度漂移、航向偏差 非预期功能 / 误触发 告警误报、模式误切换 降级运行 / 安全保护 通道切换、进入安全模式 故障源 → 软件可观测表现 → 系统级失效模式:同一表现可能由不同故障源引起,需结合时间特性与数据特征联合判定

二、六类故障的工程特征与注入要点

硬件瞬态故障最典型的代表是单粒子翻转(SEU)。在高空环境中,宇宙射线击中 SRAM 单元可能导致某一位由 0 变 1。这类故障持续时间短、可自恢复,但若发生在关键控制变量上,可能在一个控制周期内造成舵面指令突变。注入时通常采用位翻转工具,在目标内存地址上按指定掩码异或,并记录翻转前后的变量值。例如将高度保持律中的积分项从 0x3F800000(1.0)翻转为 0x3F800001,观察控制输出是否出现可检测的偏差。

硬件永久故障表现为固定型故障(stuck-at)。例如 ARINC 429 接收芯片某位恒为 1,软件每次读取都会得到错误标签。注入方法可以是断开信号线并拉高/拉低,或在驱动层模拟固定返回值。与瞬态故障不同,永久故障不会自恢复,测试重点在于系统的检测与重构能力,如是否能在连续 N 个周期内识别通道失效并切换到备份通道。

软件设计缺陷不是外部注入的“故障”,而是软件自身在特定输入组合下暴露的错误。常见形式包括边界条件遗漏(如高度值恰好等于切换阈值时未处理)、整数溢出、状态机遗漏迁移、共享资源竞态。对这类缺陷,故障注入测试更多是“缺陷激活”:构造能触发缺陷的输入序列,观察是否出现死锁、输出振荡或非预期状态迁移。例如在高度保持与高度选择模式切换的临界点连续快速切换,检验模式管理逻辑是否稳定。

接口故障发生在软件与外部总线、传感器、执行机构之间。典型表现包括:消息帧头错误、字长不符、刷新率异常、校验失败、消息丢失或重复。以 ARINC 429 为例,一个字包含 32 位,其中标签 8 位、数据 19 位、SSM 2 位、奇偶校验 1 位。注入时可构造奇偶校验错误的帧,观察接收软件是否丢弃该字并置位故障计数器。接口故障的注入点通常位于总线仿真卡或驱动层桩函数。

时序故障关注“正确的事情发生在错误的时间”。包括任务周期抖动、消息到达延迟、采样时刻偏移、看门狗超时。航空嵌入式软件常采用周期调度,若某个 20ms 任务实际执行了 35ms,可能挤占后续任务的时间窗。注入方法包括在任务入口插入可控延时、修改调度表周期、或在总线消息中引入时间戳偏移。判断依据是任务超时计数器、周期抖动统计以及控制律是否出现相位滞后。

数据故障指数值本身错误但格式合法。例如高度值从 10000 英尺变为 100000 英尺(量程越界)、经纬度符号位翻转、单位从英尺误用为米。这类故障不会触发校验错误,却会直接污染控制律输入。注入时可在数据源处按比例缩放、加偏置或交换字节序。测试重点是软件是否具备范围检查、合理性比较和冗余表决能力。

三、故障模型与注入方法的对应关系

建立故障模型后,需要将其映射到具体注入手段。下表给出六类故障的典型注入位置、激励方式和观察点,可作为测试用例设计的参考。

故障类型 典型注入位置 激励方式 关键观察点
硬件瞬态故障 RAM 变量、寄存器 按掩码异或翻转,持续 1~2 个周期 变量值跳变、控制输出偏差、是否自恢复
硬件永久故障 总线接收端、传感器接口 固定电平、断开信号、驱动层返回固定值 故障检测计数、通道切换时间、降级逻辑
软件设计缺陷 状态机、边界判断、共享资源 构造临界输入序列、并发访问 非法状态、死锁、输出振荡
接口故障 总线仿真卡、驱动桩 错误帧、丢包、重复帧、校验错误 接收计数器、错误标志、消息超时
时序故障 任务调度器、消息时间戳 插入延时、修改周期、偏移时间戳 任务超时、周期抖动、相位滞后
数据故障 数据源、共享内存 缩放、加偏置、交换字节序、越界赋值 范围检查触发、冗余表决结果、控制律饱和
在实际项目中,同一失效现象可能由多类故障共同导致。例如“高度保持功能间歇性失效”既可能是总线瞬态干扰,也可能是任务时序抖动导致采样丢失。因此,故障注入测试应设计交叉用例,通过控制变量法逐一排除,而不是仅按单一故障类型孤立验证。

最后需要强调,故障模型不是一次性文档,而应随系统安全性分析(如 FHA、FMEA)持续更新。每发现一个新的失效模式,就应补充对应的注入用例和判定准则,使测试集与真实风险保持同步。