4. 航电软件开发标准与适航要求

在航电实时软件平台中,集成与调试并不是“把模块拼起来、把错误找出来”这么简单。它受到一整套适航标准体系的约束:DO-178C 规定软件生命周期过程与目标,ARINC 653 规定分区化实时操作系统的接口与行为,DO-297 规定综合模块化航电(IMA)中平台、模块与应用的职责划分。三者共同决定了“能集成什么、怎么调试、调试结果要留下什么证据”。

三个标准各自约束什么

DO-178C《机载系统和设备合格审定中的软件考虑》面向软件本身,按 A~E 五个软件等级(DAL)规定目标。它要求软件需求、设计、代码、集成与验证之间保持双向追溯,并要求在目标机上验证。对集成调试的直接约束是:调试不能只靠“现象消失”来判定通过,必须把问题定位到需求或设计条目,并形成可追溯的验证证据。

ARINC 653 面向分区化实时操作系统,定义了分区管理、进程管理、时间管理、分区间通信(IPC)和健康监控(HM)等 APEX 服务。它把时间与空间隔离作为强制要求:每个分区有独立的地址空间和固定的时间窗口。对集成调试的约束是:调试必须区分“分区内错误”和“分区外干扰”,任何跨分区通信都必须走采样端口或队列端口,不能靠共享内存绕过。

DO-297《综合模块化航电开发与审定指南》面向 IMA 系统,把角色划分为平台供应商、模块供应商、应用供应商和系统集成商。它强调增量式审定和职责边界。对集成调试的约束是:调试环境、加载配置、健康监控策略必须与最终适航构型一致,不能把“实验室能跑通”直接当作“机上可用”。

标准如何落到集成与调试活动上

把三个标准放在一起看,集成调试的约束可以归纳为四条主线:

  • 追溯性:每个调试用例要能对应到软件需求或接口需求,DO-178C 要求正向与逆向追溯都成立。
  • 隔离性:ARINC 653 要求分区之间时空隔离,调试时不能破坏隔离边界,否则验证结论无效。
  • 构型一致性:DO-297 要求调试所用的平台配置、模块配置、应用配置与目标构型一致,包括 HM 表和调度表。
  • 证据留存:调试过程中的日志、激励、观测数据要能作为验证证据,而不是一次性消耗品。

下面这张图把三个标准对集成调试的约束关系整理为一张结构图,左侧是标准来源,中间是它们施加的约束,右侧是调试活动中必须落实的动作。

DO-178C / ARINC 653 / DO-297 对集成与调试的约束关系 DO-178C 软件生命周期过程 DAL A~E 目标 ARINC 653 分区化 RTOS 接口 时空隔离 / APEX 服务 DO-297 IMA 角色与职责 增量式审定 追溯性约束 调试用例 ↔ 需求条目 正向 / 逆向追溯 隔离性约束 分区地址空间独立 时间窗口固定 构型一致性约束 平台 / 模块 / 应用配置 HM 表与调度表一致 调试动作:需求映射 每个用例标注需求 ID 失败项回写问题报告 调试动作:隔离验证 分区内故障不扩散 IPC 端口行为符合 APEX 调试动作:构型核对 加载配置与目标一致 调试日志纳入证据包 集成调试证据链:用例 → 激励 → 观测 → 判定 → 追溯记录 证据必须可复现、可追溯、与适航构型一致

调试环境与目标构型的差异管理

实际项目中,集成调试往往先在实验室台架或仿真环境进行,再上目标机。DO-297 要求明确区分“开发环境”和“目标环境”,并说明两者差异对验证结论的影响。常见差异包括:处理器主频不同导致时间窗口余量不同、存储器容量不同导致分区加载失败、健康监控表在仿真环境中被简化等。

处理这类差异的实用做法是建立一张“环境差异对照表”,逐项记录差异、影响和补偿措施。例如,实验室环境使用 1.2 GHz 处理器,目标机为 1.0 GHz,则时间窗口余量需按最坏情况重新核算;若实验室未启用 HM 表,则必须在目标机上补做健康监控注入测试。只有差异被识别、评估并补偿后,实验室调试结论才能部分外推到目标环境。

一个可执行的调试用例记录示例

下面给出一个符合 DO-178C 追溯要求和 ARINC 653 隔离要求的调试用例记录示例。字段设计围绕“需求—激励—观测—判定—证据”展开,可直接用于集成调试记录。

用例编号:ITC-IPC-014
关联需求:SRS-IPC-007(分区 A 向分区 B 发送采样数据)
软件等级:DAL B
调试环境:目标机 IMA 模块,ARINC 653 分区 OS
分区配置:A 分区 20ms 窗口,B 分区 20ms 窗口,采样端口 SAMPLING_PORT_ID=3

激励:
  在 A 分区周期任务中写入采样端口 3,数据帧长度 16 字节,
  刷新周期 10ms,连续写入 200 次。

观测:
  1. B 分区读取端口 3,检查数据帧长度与刷新周期;
  2. 记录 B 分区读取到的有效帧计数;
  3. 注入 A 分区越界写操作,观察 B 分区是否受影响。

判定:
  1. B 分区有效帧计数 ≥ 190,判定通信功能通过;
  2. A 分区越界写后,B 分区数据仍正确,判定隔离性通过;
  3. 若 B 分区出现数据错乱,判定隔离性失败,需检查
     分区地址空间配置与 MMU 映射。

证据:
  用例记录表、端口数据日志、分区窗口时序截图、
  问题报告(如有)、追溯矩阵更新记录。

这个示例的关键点在于:判定条件不是“通信正常”,而是给出了可量化的帧计数阈值和隔离性注入方法。DO-178C 要求验证目标可客观判定,ARINC 653 要求隔离性可验证,两者在这里同时落地。

常见误区与排障方向

集成调试中,以下几类问题最容易与标准约束冲突:

  • 用共享内存代替 IPC:看似高效,但破坏 ARINC 653 分区隔离,验证结论不被认可。排障时应检查分区地址空间映射和端口配置。
  • 调试用例不写需求 ID:DO-178C 追溯链断裂,后期审定需要补做大量回溯。应在用例模板中强制关联需求条目。
  • 实验室通过即认为机上通过:忽略 DO-297 构型一致性要求。应核对加载配置、HM 表和调度表是否与目标构型一致。
  • 健康监控被旁路:调试时关闭 HM 以便观察,但未记录旁路状态和恢复验证。应在调试记录中标注 HM 状态,并在恢复后补做注入测试。
调试过程中临时关闭健康监控、修改调度表或绕过分区隔离,必须记录在调试日志中,并在构型恢复后重新执行受影响的验证用例。否则该调试结论不能作为适航证据。

总体来看,DO-178C 管“证据与追溯”,ARINC 653 管“隔离与接口”,DO-297 管“角色与构型”。集成调试人员需要同时满足这三条约束线:每个调试动作有需求来源,每次隔离验证有明确边界,每份调试记录与目标构型一致。做到这三点,调试活动才能从“找 bug”升级为“产生可审定证据”的工程过程。