2. 星载软件运行环境与故障诱因

星载软件与地面软件最本质的差别,在于它运行在一个无法回避、无法屏蔽、也无法维修的物理环境里。卫星一旦入轨,软件所依赖的处理器、存储器、总线、时钟和电源就持续暴露在空间辐射、剧烈温度循环和发射段振动之中。与此同时,软件自身的设计缺陷与时序异常又会在这些外部扰动下被放大。要开展故障注入与传播分析,第一步不是急着注入,而是先把"故障可能从哪里来"讲清楚,建立一套可操作的故障来源分类。分类的意义在于:它决定了注入什么、在哪里注入、用什么手段观测,以及最终如何判断传播路径。

一、外部物理环境诱因

空间辐射是最主要的外部诱因。高能质子、重离子和电子穿过器件敏感区时,会在半导体材料中沉积电荷,形成单粒子效应(SEE)。按后果可细分为:单粒子翻转(SEU),存储单元或触发器逻辑值翻转但器件未损坏;单粒子瞬态(SET),组合逻辑或时钟路径上出现短暂脉冲;单粒子功能中断(SEFI),器件进入异常工作模式需复位恢复;单粒子锁定(SEL),CMOS 结构中寄生晶闸管导通形成大电流通路,可能烧毁器件;以及单粒子烧毁(SEB)与栅穿(SEGR),属于永久性损伤。此外,总剂量效应(TID)随任务时间累积,表现为阈值电压漂移、漏电流增大,最终导致器件失效;位移损伤(DD)则破坏晶格结构,影响光电器件与太阳能电池性能。

温度与振动构成另一类外部诱因。星上设备在轨经历从约 -40℃ 到 +85℃ 的循环温度变化,焊点、键合线和封装材料因热膨胀系数不匹配产生热应力,长期作用可导致接触电阻增大或开路。发射段的随机振动与声振则可能造成晶振频偏、连接器微动磨损,使时钟抖动增大、总线误码率上升。这些物理过程最终都会以"软件可见"的形式表现出来:数据错误、通信超时、任务超时、复位重启。

二、软件内部诱因

外部环境只是触发器,真正决定故障是否发生、如何传播的,是软件自身的结构。软件设计缺陷包括:数组越界、指针悬空、整数溢出、未初始化变量、资源竞争、中断嵌套过深、看门狗喂狗逻辑不当等。时序异常则更为隐蔽:任务周期抖动、优先级反转、中断响应延迟、总线仲裁冲突、跨时钟域信号未同步导致的亚稳态采样。这些缺陷在实验室环境下往往不显现,但在辐射导致的位翻转或温度导致的时钟漂移触发下,会迅速演化为功能失效。

需要特别强调的是,外部诱因与内部诱因不是并列关系,而是"触发—放大"关系。一个 SEU 翻转了任务控制块中的优先级字段,若软件没有对关键数据结构做校验,就可能引发优先级反转,进而导致高优先级任务长期得不到调度。故障注入分析要做的,正是把这条链路上的每个环节显式建模出来。

三、故障来源分类框架

综合上述分析,可以按"来源层次—物理机制—软件表现—可注入性"四个维度建立分类。来源层次分为环境层、器件层、软件层;物理机制对应辐射、温度、振动、设计缺陷、时序异常;软件表现对应数据错误、控制流偏离、时序违例、资源耗尽、复位;可注入性则说明该故障能否通过软件手段模拟,例如 SEU 可通过修改内存镜像注入,而 SEL 只能通过硬件或等效电流模型模拟。

星载软件故障来源分类与触发—放大关系 环境层(外部物理诱因) 空间辐射:质子 / 重离子 / 电子 温度循环:-40℃ ~ +85℃ 振动 / 声振:发射段与在轨微振 作用对象:器件敏感区 / 焊点 / 晶振 器件层(物理机制) SEU / SET:逻辑翻转与瞬态脉冲 SEFI / SEL:功能中断与锁定 TID / DD:累积剂量与位移损伤 热应力 / 微动磨损:接触与频偏 软件层(内部诱因) 设计缺陷:越界 / 悬空指针 / 溢出 时序异常:抖动 / 优先级反转 资源竞争:中断嵌套 / 总线仲裁 亚稳态:跨时钟域未同步采样 软件可见表现(故障注入观测点) 数据错误 控制流偏离 时序违例 复位 / 重启 可注入性判定(决定注入手段) 软件可注入:内存位翻转、寄存器改写、 任务延时、总线错误注入 需硬件/等效模型:SEL 电流、TID 漂移、 振动导致的晶振频偏

四、从分类到注入决策

有了分类框架,注入决策就有了依据。以某星载姿态控制计算机为例,其关键数据结构包括任务控制块、陀螺数据缓冲区、控制律参数表。针对 SEU 类故障,可在内存镜像中翻转任务控制块的优先级字段,观察调度器是否出现优先级反转;针对 SET 类故障,可在组合逻辑输出端注入单周期脉冲,观察控制律是否产生异常指令;针对时序异常,可人为延长中断服务程序执行时间,观察看门狗是否误触发。每一步注入都应记录注入位置、注入时刻、注入前后关键变量值,以及系统是否进入安全模式。

分类不是目的,而是为了让注入实验可复现、可对比。建议在实验记录中固定使用"来源层次—物理机制—注入位置—观测变量—判定阈值"五元组,使不同批次实验之间具备可比性。

五、分类的边界与注意事项

需要说明的是,分类框架中的边界并非绝对。例如温度导致的时钟漂移既属于环境层,又直接表现为时序异常;辐射导致的位翻转既属于器件层,又可能触发软件层的设计缺陷。因此在实际分析中,应允许同一故障事件跨越多个类别,关键在于记录其触发路径,而不是强行归入单一类别。此外,地面模拟环境与真实空间环境存在差异:地面加速器提供的粒子注量率远高于在轨实际,注入实验得到的翻转率不能直接等同于在轨失效率,只能用于相对比较和薄弱环节识别。

建立故障来源分类的最终价值,在于让后续的故障注入、传播路径追踪和容错机制验证有统一的坐标系。当每一个注入用例都能明确回答"它模拟的是哪一类来源、经过哪条路径、最终在哪个观测点被捕获"时,故障注入才真正从随机试探转变为可设计的工程活动。