周 彦,姜 兵
(成都飞机设计研究所,四川 成都 610091)
飞机管理系统是下一代战斗机最重要的飞行安全关键系统之一,它以飞控系统为核心,通过飞机管理计算机,对所有与飞行安全相关的机载系统进行综合控制与管理。
目前,国外已有成熟的基于嵌入式实时操作系统的飞控系统软件产品,如:Green Hills的INTEGRITY 178B操作系统在波音-787飞机中的应用、Wind River的VxWorks 653在X-47B无人机飞控系统中的应用、Lockheed Martin定制开发的VMX操作系统在JSF飞机中的应用等。
从国内的情况来看,目前战斗机飞控机载软件的操作系统大多是针对飞控计算机硬件环境定制开发的,很显然能够满足飞控系统需求。但是,具有操作系统功能特性的各种软件模块没有形成一个独立的内核,与应用层软件没有明显的层次划分,这种设计特点决定了该类型操作系统不可能支持分区功能。
为了突破这一瓶颈,实现分区操作系统在飞行安全关键系统中的应用,我们前期开展了嵌入式实时操作系统在飞机管理系统的应用研究。在这项研究中,采用了国内自研的时空隔离嵌入式实时分区操作系统,并成功完成了基于该操作系统的飞机管理系统应用软件的设计和原理验证,为自研操作系统在飞行安全关键软件研发领域的应用起到了重要的支撑作用。但是,在经过多次验证后,原有的软件架构设计中的不足逐步开始体现,主要包括以下几个方面:a)软件架构层次界限模糊;b)对于采用主/从CPU架构的计算机,主要消息收发严重依赖主CPU的接口分区,从而CPU的功能严重受影响;c)应用框架不明确,各个分区开发者自行定义分区结构,相同功能重复开发,测试验证的时间和成本攀升。
本文从分析嵌入式实时操作系统在上一阶段的研究情况入手,在大量前期工作的基础上总结工程实践经验,借鉴国外先进软件设计理念,提出了一种基于嵌入式微内核操作系统的空间隔离消息通信设计方法,并对其在飞管系统机载软件中的应用验证进行了分析说明。
基于安全分区的操作系统架构下的分区间消息通信方式有直接通信和间接通信两种。
其中,直接通信,即是指在通信过程中双方必须明确对通信的对方进行命名。符合ARINC653标准直接通信的常见应用应由端口、通道和消息组成。分区间通信是通过端口发送和接收消息完成的。分区通过端口的直接互联实现了间接互联。通道提供了端口之间的互联机制,每一条通道指明了发送消息的端口名称和所属分区,及接收消息的端口和所属分区。
间接通信,即是指通信的双方不需要指出消息的来源和去向,即发送者不指出消息的接受方,而接受方也不指出消息的源,消息发送到邮箱,从邮箱中接收消息。每个邮箱有一个唯一的标识。间接通信方式中通信链接的特点是只有当分区共享一个公共邮箱时链接才建立;一个链接可以与多个分区相联系;每对分区之间可以使用多个通信链接;
基于这一间接通信方式的典型应用即是消息订阅分发技术,它提供数据的交换和集成,数据订阅分发服务是一种在网络环境下不同资源间实现信息动态交换的一种信息共享机制,包括发送和接收订阅请求、分发订阅的内容,对本系统内的环境和数据进行自动维护并为整个网络提供分布式数据订阅分发服务。
根据安全分区间接通信原理,考虑在飞机管理计算机中设置数据池作为消息订阅和发布的邮箱,分区间不再使用共享内存,而采用跟总线消息一致的消息机制进行数据的交换。根据设计要求,在计算机中设定一片内存区域作为数据池,每个分区需要设立独立的分区发布数据缓存和分区订阅数据缓存区域。
目前的飞机管理计算机提供了DMA(Direct Memory Access)和CPU两种数据搬移的方式,首先对这两种通信通路的执行效率进行测试。
我们基于一个样例CPU时序分区软件,将其移植到新的消息收发机制中,对数据搬移时间和软件运行时间进行了测试。作为测试样本的CPU分区时序分布如图1所示。
图1 样例CPU时序分布图 图2 内接口DMA/CPU传输效率对比
作为测试样本的主CPU的软件包括3个应用分区和3个I/O分区。测试选取了以DMA和CPU两种传输方式,测试方式为被测分区软件在控制管理模式下连续运行100000个小帧周期,获取时间测试点的CPU时基寄存器值,计算两个测试点的时基之差并折算为毫秒。2种传输方式的测试用例设计如表1所示。
表1 多标签飞控数据集统计信息
2.1.1 DMA方式
总线数据和CCDL数据通过DMA交换数据,DMA配置为直接模式,主CPU实时任务运行时间的测试结果见表2。
表2 DMA方式执行时间测试
2.1.2CPU方式
总线数据和CCDL数据通过CPU交换数据,CPU拷贝为32位模式,主CPU实时任务运行时间的测试结果见表3。
表3 CPU方式执行时间测试
将两种测试样本的数据传输效率和运行效率进行比较,如图2所示。CPU耗费的I/O时间平均达到了DMA耗费的I/O时间的1.78倍,其在I/O处理上的效率远低于DMA。因此,对于外部接口,即在主CPU和总线接口单元缓存的通信及主CPU到从CPU的双口通信应采用DMA进行数据的收发。
对于主CPU内部接口,可以采用DMA和CPU两种数据搬移的方式,对Cache使能和Cache禁止的软件执行效率进行了测试,测试方式参数设置同上。2种访问方式的测试用例设计如表4。
表4 测试用例设置
分区间通信的仅在分区内的执行时间内进行,不占用3个I/O分区的时间,因此,分区内的数据测试仅测试三个应用分区的执行时间,其I/O时间为消息发布和订阅时间,运行时间即是实时周期任务执行时间。将消息订阅和发布的时间及程序运行时间进行单独测试。
2.2.1 DMA方式
分区间消息通过DMA交换数据,DMA配置为直接模式,主CPU实时任务运行时间见表5。
表5 DMA方式分区接口/运行时间测试
2.2.2 CPU方式
分区间消息通过DMA交换数据,DMA配置为直接模式,主CPU实时任务运行时间见表6。
表6 CPU方式分区接口/运行时间测试
将两种测试样本的数据传输效率和运行效率进行比较,如图2所示。
根据测试结果发现,不管是I/O时间还是执行时间,CPU传输均优于DMA传输。从而对于内部接口,即在主CPU内部的分区间数据通信应采用CPU进行数据的收发。
从执行效率考虑,外部接口设计应使用DMA数据传输,内部接口设计应使用CPU进行数据传输,但是对于外部接口和内部接口交汇的部分,即数据池的设计存在着物理矛盾。矛盾的本体在于:
(1)数据池需要为外接口设置为Cache禁止;
(2)数据池需要为内接口设置为Cache使能。
对分区数据流进行分析后,发现分区间的数据交换仅存在于主CPU内部,没有将分区发布的内部接口包发送到总线的设计需求,因此结合空间分离和系统级别分离的原理,在空间隔离的消息通信设计中对数据池进行拆分,划分为局部数据池和全局数据池两级数据池订阅和发布的数据中心。
(3)局部数据池及数据流。局部数据池用于分区间消息的通信,其通信模式及数据流设计参见图3。
图3 局部消息通信模型 图4 全局消息通信模型
(4)全局数据池及数据流。其通信模式及数据流设计如图4所示,主CPU和总线接口单元双口及主CPU和从CPU双口间的数据交换数据流如图4。
根据空间隔离的消息通信设计方法,在某型战斗机飞机管理系统应用软件完成了空间隔离的数据订阅和发布设计。并基于某型飞管计算机进行了原理验证,该计算机的硬件构型见表7:
表7 目标机构型
系统在正常工作期间,总线数据或分区之间的数据通讯均通过数据池实现数据交换。操作系统系统服务程序则按照系统初始化期间应用在分区中间层内订阅和发布消息的速率具体执行数据输入输出操作。操作系统负责维护这全局和局部两个数据池,并隔离分区应用权限。
基于单板构型和目标机构型,对消息订阅发布功能初始化、消息注册、消息订阅、消息周期发布和消息事件发布进行了功能验证,同时完成了基于目标机的消息订阅发布性能测试,结果见表8:
表8 验证结果
验证结果表明,基于嵌入式微内核操作系统的空间隔离消息通信设计方法可满足某型战斗机飞机管理系统软件对消息通信的功能及性能要求。
在综合分析了嵌入式实时操作系统在飞机管理系统应用设计中存在的缺陷基础上,本文借鉴了国外先进设计经验及安全分区的通信原理,设计了空间隔离的消息通信机制,并在飞机管理系统的软件设计中进行了实际应用和原理验证。
通过分析和原理验证,该方法使用的消息通信可以实现完全的空间隔离,并且通过灵活的SCD配置,极大降低了操作系统和应用,主CPU的硬件间及主CPU和从CPU的数据间的耦合性。
截止目前,本文所研究的基于嵌入式微内核操作系统的空间隔离通信设计方法已完成多轮测试验证和试验试飞,测试结果表明改方法设计合理正确,数据流清晰,实现了分区之间的有效隔离。