实现方案

更新时间:
2023-12-14
下载文档

实现方案

从应用程序视角来看,模块间通信和分区间通信 (Queuing Port 和 Sampling Port) 完全一致,都采用标准的 APEX 接口。对系统集成商的 XML 配置来说,增加了伪分区和通信链路的支持,并通过通道的 Procedure 属性实现了伪端口到设备文件的映射功能。由于 ARINC 653 常规队列端口和采样端口的无法实现模块间通信,为了兼容 ARINC 653 通信接口标准,在保证用户层使用原有框架的基础上,能够实现模块间通信,故 Matrix653 操作系统内核对 Queuing Port 和 Sampling Port 功能做了扩充。其实现过程如下:

  • XML 需要增加 PseudoPartition 伪分区的配置信息,其定义包括与应用分区中常规端口对应的伪端口;
  • XML 需要增加 Communication Link 的配置信息,其定义包括模块识别号、伪分区端口号;
  • XML 需要指定伪端口与分区内的常规端口的连接关系,并指定伪端口对应的设备文件(映射文件满足端口映射关系);
  • 系统启动时,OS 调用 BSP 中的重载的 _mx_communication_links_create() 函数,根据配置要求创建通信链路需要的设备文件,例如 “/dev/eth/0/1”;
  • 分区应用调用常规的队列/采样端口进行发送时,OS 会将数据报文首先投递给该常规端口对应的伪端口,然后调用该伪端口对应的设备驱动 write 函数进行数据发送操作;
  • 分区应用调用常规的队列/采样端口进行接收时,OS 会首先会调用设备驱动的 read 函数将数据报文从硬件缓冲区读取到伪端口,并投递给常规端口;
  • 设备文件的驱动层在接收报文数据时,应加入报文到达硬件缓冲区时的时间戳信息,以便OS依据此来判断该消息是否超时;
  • 为了避免数据报文引起的时间窗抖动,设备驱动应该在收发数据报文前检查本分区剩余时间窗,如果剩余时间过短,应在下个时间窗开始时再次收发;
  • 模块间通信设备驱动开发请参考驱动开发章节的 IMC 设备章节。
文档内容是否对您有所帮助?
有帮助
没帮助