2. INTEGRITY通信栈体系结构解析
在综合模块化航电(IMA)系统中,应用软件被封装在相互隔离的分区(Partition)内运行,而分区之间、分区与外部设备之间的通信必须经过一套严格定义的软件栈。INTEGRITY RTOS 上的通信栈正是承担这一职责的核心基础设施。理解它的关键在于:应用看到的“端口”与物理网络上的“帧”之间,隔着若干层抽象,每一层都有明确的职责边界。本节从应用分区出发,逐层向下剖析到物理网络,并说明 ARINC 653 APEX 通信服务、虚拟通道与端口抽象,以及栈内各组件的数据流关系。
一、层次划分:从分区到物理链路
INTEGRITY 通信栈自上而下可划分为四个逻辑层次,每一层解决一类问题:
- 应用层(APEX 服务层):向分区内的应用提供 ARINC 653 定义的通信 API,包括采样端口(Sampling Port)、队列端口(Queuing Port)、服务访问点(Service Access Point)等。应用只操作“端口号”和“消息缓冲区”,不感知底层链路。
- 端口/虚拟通道层:将 APEX 端口映射为虚拟通道(Virtual Channel, VC),完成端口标识到通道标识的绑定、消息的排队与采样策略、以及分区间的逻辑连接管理。
- 传输层(消息调度与路由):负责消息的分段/重组、优先级调度、通道到物理链路的映射,以及跨模块(LRM)的路由选择。
- 物理网络层:对应实际的航空总线,如 ARINC 664 Part 7(AFDX)、ARINC 429 或 CAN,完成帧的封装、发送与接收。
这种分层并非简单的“套娃”,而是职责与数据形态的逐级转换:应用层传递的是带端口号的消息;端口层将其转为带虚拟通道 ID 的通道数据;传输层将其转为带优先级和路由信息的传输单元;物理层最终将其封装为符合总线规范的帧。
二、ARINC 653 APEX 通信服务
ARINC 653 定义了分区操作系统与航空电子应用之间的标准接口,其中通信服务是核心部分。在 INTEGRITY 中,APEX 通信服务主要提供两类端口:
- 采样端口(Sampling Port):适用于周期性、状态类数据。发送方写入最新值,接收方读取当前值,旧数据被覆盖。典型用于传感器状态、飞行参数等。
- 队列端口(Queuing Port):适用于事件类、需保序的数据。消息按 FIFO 排队,接收方逐条读取,队列满时按配置策略处理(阻塞或丢弃)。典型用于告警、指令等。
APEX 服务通过 CREATE_SAMPLING_PORT、WRITE_SAMPLING_MESSAGE、READ_SAMPLING_MESSAGE、CREATE_QUEUING_PORT、SEND_QUEUING_MESSAGE、RECEIVE_QUEUING_MESSAGE 等调用完成端口生命周期管理。每个端口在创建时需指定方向(SOURCE/DESTINATION)、最大消息长度、刷新周期(采样端口)或队列深度(队列端口)。
三、虚拟通道与端口抽象
虚拟通道是连接 APEX 端口与物理链路的关键中间层。它的作用可以概括为三点:
- 解耦:应用只绑定端口,端口再绑定虚拟通道,虚拟通道再绑定物理链路。任一层变化不影响其他层。
- 复用:多条虚拟通道可以共享同一条物理链路,通过 VC ID 区分。
- 策略承载:采样/队列策略、刷新周期、优先级、带宽分配等参数都挂在虚拟通道上。
在 INTEGRITY 中,虚拟通道通常以配置表的形式静态定义,系统启动时由通信栈加载。每个 VC 包含:VC ID、源分区、目的分区、端口类型、最大消息长度、周期或队列深度、绑定的物理链路标识。应用通过端口号访问 VC,而 VC 的配置在分区之外,保证了分区隔离性。
四、栈内组件职责与数据流
下面用一张结构关系图展示从应用分区到物理网络的完整数据流。图中左侧为发送路径,右侧为接收路径,中间为通信栈内部组件。
从图中可以看出,发送路径与接收路径在栈内是对称的,但共享同一套配置表。应用分区 A 调用 APEX 写操作后,消息进入端口层;端口层根据端口类型(采样或队列)决定覆盖还是排队;虚拟通道层将端口号映射为 VC ID,并附加策略参数;传输层完成分段、优先级调度和路由选择;最终由物理网络层封装为帧发送。接收侧则反向执行:物理层收帧、传输层重组与调度、虚拟通道层解绑、端口层按策略交付、应用分区 B 读取。
五、关键参数与配置示例
为了更具体地理解各层职责,下面给出一个采样端口的配置示例(参数为教学示例,非实测值):
端口名称: ENGINE_N1_SAMPLE
端口类型: SAMPLING
方向: SOURCE (分区A) → DESTINATION (分区B)
最大消息长度: 32 字节
刷新周期: 20 ms
VC ID: 0x1024
物理链路: AFDX VL-1024
优先级: 3
带宽分配: 64 kbps
该配置的含义是:分区 A 每 20 ms 写入一次发动机 N1 转速采样值,通信栈将其映射到 VC 0x1024,经 AFDX 虚拟链路 VL-1024 发送,分区 B 以相同周期读取。若分区 B 在 40 ms 内未读到新数据,健康监控可触发端口超时告警。这里的关键判断依据是刷新周期与读取周期的匹配关系:读取周期应不大于刷新周期,否则会重复读取同一采样值;若读取周期远大于刷新周期,则可能丢失中间状态。
六、组件职责小结
| 层次 | 核心职责 | 关键输入 | 关键输出 |
|---|---|---|---|
| APEX 端口层 | 提供标准通信 API,管理端口生命周期 | 端口号、消息缓冲区 | 端口消息 |
| 虚拟通道层 | 端口到 VC 的绑定,承载采样/队列策略 | 端口消息、VC 配置 | 带 VC ID 的通道数据 |
| 传输层 | 分段/重组、优先级调度、路由选择 | 通道数据、路由表 | 传输单元 |
| 物理网络层 | 帧封装、发送与接收 | 传输单元、链路参数 | 总线帧 |
理解这张分层关系图与职责表,是后续进行通信配置、故障排查和性能分析的基础。实际工程中,大多数通信问题都可以定位到某一层的参数不匹配:端口类型选错、VC 绑定错误、刷新周期与读取周期不匹配、物理链路带宽不足等。掌握从应用到物理的完整数据流,就能按层排查,快速缩小问题范围。