APP下载

基于框架的开放式机载电子战嵌入式软件设计

2021-05-07洋,刘

计算机测量与控制 2021年4期
关键词:嵌入式软件电子战构件

杨 洋,刘 坚

(中国电子科技集团公司 第二十九研究所,成都 610036)

0 引言

随着时代的发展和技术的进步,机载电子战嵌入式软件呈现出下面几个明显的趋势:

1)软件规模越来越大:随着电子战系统告警、侦察、定位、干扰、对抗、协同等功能的不断拓展,作为电子战系统灵魂的嵌入式软件的规模也从数千行扩展到数万行。三代机电子战系统软件规模只有几万行,四代机电子战系统软件的规模已达到50万行。

2)软件复杂度越来越高:随着电子战业务需求的扩展和硬件功能的“软件”化,机载嵌入式软件往往需要由多个CSCI相互协作才能完成特定的功能,这些CSCI间的协作过程变得越来越复杂。

3)安全性要求越来越高:软件失效可能引起的后果也越来越严重,轻者导致无法完成任务,重者导致设备损毁,甚至危及生命[1]。例如,2009年法航AF447航班由于测速仪结冰使得飞控软件错误攀升,而软件未设置高度上限,导致飞机坠毁[2]。

当前航空电子系统正向开放式、模块化、综合化的方向发展,需要在软件架构上做出改进[3]。传统的结构化的程序设计方法已不能适应当前机载嵌入式软件研发的需要,基于软件框架和构件的软件设计方法将成为缩短软件研发周期、提高软件安全性、构建软件产品平台、实现软件工业化[4]的必由之路。

本文重点阐述了一种基于软件框架的机载电子战嵌入式软件设计方法。第1节介绍软件框架和构件技术的定义,第2节介绍基于软件框架和构件技术的机载电子战软件体系结构,第3节介绍电子战软件框架的设计准则,第4节介绍电子战软件构件的设计准则,第5节介绍基于软件框架和构件的机载电子战嵌入式软件应用设计,最后一节是结论及评述。

1 软件框架和构件技术

软件框架(software framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件构件规范,也指为了实现某个软件构件规范时,提供规范所要求之基础功能的软件产品[5]。框架的功能类似于基础设施,与具体的软件应用无关,但定义并实现最为基础的软件架构和体系。

软件构件(software component)是面向特定软件体系架构的可复用软件模块,是指一个对象(接口规范、或者二进制代码),它被用于复用,接口被明确定义[6]。构件是作为一个逻辑紧密的程序代码包的形式出现的,必须遵循软件框架的约束。构件必须具备的属性有:1)有用性,构件必须提供有用的功能;2)可用性,构件必须易于理解;3)复用性,构件必须能被复用;4)适应性,构件应该易于通过参数化等方式在不同语境中进行重配置;5)可移植性,构件应能在不同的硬件运行平台和软件应用环境中工作。

2 机载电子战嵌入式软件体系结构

机载电子战嵌入式软件的业务模式主要包括数据处理、信号处理和管理控制功能。图1给出了基于软件框架的机载电子战嵌入式软件体系结构,包括软件框架和软件构件两部分。软件构件根据用途分为驱动层、业务支持层和业务逻辑层。

图1 基于软件框架的机载电子战嵌入式软件体系结构

1)机载电子战嵌入式软件框架:作为电子战应用软件的基础设施,提供软件构件定义与管理、消息通信、操作系统接口封装、调试日志、看门狗管理等公共服务。

2)驱动层:完成电子战软件对外通信、数据采集和控制接口的抽象化封装和适配。

3)业务支持层:承担电子战应用软件的对外通信(传输层和链路层)数据接口功能,调用驱动层接口,完成电子战业务的硬软件设备访问接口转换。可进一步分为业务支持节点和协议组件两种,实现点到点数据传递、数据组包解包、传输层流量控制、传输层差错控制和字节顺序等。

4)业务逻辑层:作为电子战软件应用层,基于业务功能和需求,实现可复用的电子战软件构件,分为功能节点和功能组件两类,例如:XXX辐射源定位节点,XXX辐射源信号分选节点、XXX辐射源距离估计组件、XXX辐射源威胁等级评估组件等。

电子战软件构件间的通信数据按照传输路径可划分为码元(比特、字节、双字、四字节)、数据包、报文和消息四类,相应的通信协议也分为物理层、链路层、传输层和应用层四层。

1)码元(比特、字节、双字、四字节)是驱动层软件构件与物理硬件间的数据交换接口,设计要点包括码元的选择、校验、数据传递的方式(中断、查询)等。

2)数据包是业务支持层构件与驱动层构件的数据接口。设计要点包括:(1)数据包包头包尾识别码、长度、格式、路由、时间戳、包校验;(2)数据包从码元流的提取、流量控制;(3)载荷数据的加解密;(4)逻辑链路的建立和维持。

3)报文是业务支持层构件内部的数据,是业务消息在通信软件构件间进行数据交换的映射。设计要点包括:(1)消息到报文编码的映射;(2)消息的数据元素之间的位置关系;(3)消息的优先级;(4)消息的数据元素的高级数据类型到字节组合之间的变换;(5)业务支持层报文传递的方式(推、拉)。

4)消息是业务逻辑层中应用软件构件间以及业务逻辑层应用软件构件与业务支持层通信构件的交互数据,是带有领域语义的数据结构与标识。

3 机载电子战嵌入式软件框架设计

机载电子战嵌入式软件框架的设计决策包括:

1)消息传递方式:软件构件间的消息传递采用异步消息和同步调用两种方法,适用于业务逻辑层内、业务逻辑层与业务支持层间软件构件进行消息传递。异步消息采用基于优先级的消息队列方式实现, 解决构件间的耦合问题。同步调用采用函数调用方式,提升响应速度。

2)任务调度方法:任务调度采用round-robin (基于优先级的时间片轮转)调度算法,由操作系统提供调度支持。

3)通信可靠性:通信可靠性包括不丢和无错设计两方面。“不丢”的设计决策为:(1)在驱动层与业务支持层之间使用消息队列缓冲报文来应对通信链路与处理速率的不匹配;(2)在业务支持层定义数据包中的包数目和包序号,检测数据包丢失;(3)在业务支持层定义报文中的流水号,检测报文丢失;(4)在业务逻辑层定义响应报文,确认消息的到达。“无错”的设计决策为;(a)在业务支持层定义数据包中的包校验码,检测出错,(b)在业务逻辑层定义响应报文,确认消息的有效性。

4)数据可靠性:(1)每个构件在初始化时预分配内存资源,包括存储空间、信号量、消息队列、管道和任务等系统资源。其中数组、消息队列等类型变量要求预先计算最大长度进行分配;(2)接口数据必须进行验证后才可使用;(3)CSCI的每个任务必须估算其堆栈最大使用量,并按至少2倍配置其任务堆栈区;(4)使用看门狗机制周期检查软件的健康状态;(5)使用日志记录软件运行过程;(6)使用心跳消息使上一级软件可以感知本软件的存活性和故障情况;(7)对共性数据等临界资源进行访问保护。

5)复用性:(1)软件构件采用抽象基类设计;(2)记录、消息总线等公共服务组件采用服务类设计;(3)采用可配置化设计,例如:针对调试信息打印、看门狗和日志等服务设置使能标记等。

6)易用性:通过定义公共组件类和公共节点类,对软件构件进行统一命名。

基于以上设计决策的电子战嵌入式软件框架组成见图2,主要由构件公共节点类和公共组件类、构件管理、消息总线、调试记录、操作系统隔离、工具类和看门狗构件组成。通过可以适应文献[7]所描述的ARINC653、ASSAC和GOA等多种机载软件IMA体系架构。

图2 机载电子战嵌入式软件框架结构

1)公共节点类:作为周期任务,是所有业务逻辑功能软件构件和业务支持软件构件的基类;公共节点类的通用接口见表1。节点通过加载不同的配置可实现软件功能重组,例如干涉仪定位节点既可配置为采用4基线干涉仪数据,也可配置为采用5基线干涉仪数据。

表1 公共节点类公用接口

节点运行的流程见图3,节点初始化完成后,通过消息处理来接收其他节点或者组件发送的消息,通过周期处理来进行状态监控和数据刷新。

图3 公共节点运行主流程

节点通过向电子战嵌入式软件框架注册输入和输出消息来进行数据交换。通过消息注册接口,可以为每个节点定义一系列的输入输出消息,见图4。其中每个输入消息需绑定一个处理函数。

图4 消息注册

2)公共组件类:作为函数调用使用,是所有功能组件、协议组件、驱动组件的基类。公共组件类的通用接口见表2。

表2 公共组件类公用接口

3)构件管理组件:管理电子战嵌入式软件框架上所有的节点和组件,完成构件初始化、构件消息注册和消息路由映射。

表3 构件管理组件公用接口

图5描述了消息路由映射的关系示意。通其中A_Node的输出消息M_Out1连接到了C_Node的输入消息M_In1;B_Node的输出消息M_Out1连接到了A_Node的输入消息M_In2;C_Node的输出消息M_Out1连接到了B_Node的输入消息M_In2。消息路由可以支持1对1,1对多,多对1等多种方式。

图5 消息路由映射

4)消息总线组件:为节点间、组件间提供基于优先级的数据交换功能,分为异步消息和同步调用两类。可采用文献[8]所描述的DDS软总线来实现。

表4 消息总线线公用接口

5)调试记录组件:为节点和组件提供调试分级打印显示和记录的功能。其中调试等级分为错误,警告,优先,普通4个等级,可通过定义不同等级的开关来选择性的进行消息输出。

表5 调试记录组件接口

6)操作系统封装类:提供操作系统相关操作的接口封装,包括:内存分配服务、任务、消息队列、信号量、时间服务和中断服务[9]。通过操作系统封装类,可以适配文献[10]中的多种嵌入式操作系统,例如:VxWokrs5.5,天脉,VxWokrks6.8,Linux等,支持应用软件跨平台移植的目的。

7)工具类:为软件框架和构件提供数据存储、专用算法库和专用数据等基础功能。主要实现的构件包括:文件记录、内部消息链表、消息组包缓存、快速排序插件等。

8)看门狗:为节点健康运行提供标准、统一的监控和复位方法。提供了基于多节点的心跳监测和基于节点任务状态监测两种异常诊断方法。

4 软件构件设计

软件构件的设计决策:

1)分层:根据构件的用途,将构件分为业务逻辑层、业务支持层和驱动层三层。

2)分类:根据构件的类型,将构件分为节点和组件两类。节点是可以基于框架独立运行的任务。组件是被其他组件或者节点调用来完成特定的功能函数集。

3)复用性:节点和组件均派生自框架中的公共构件类(公共节点类和公共组件类),采用统一的接口和封装形式。节点可以实例化多个对象进行复用。组件都按照可重入的模式进行设计。

业务逻辑层构件的结构见图6。业务逻辑层构件完成与应用需求和业务相关算法与逻辑处理,根据类型可以划分为功能节点和功能组件两种。功能节点独立或者调用一个或者多个功能组件一起完成某项特定的业务功能。

图6 业务逻辑层组件的结构

业务支持层构件的结构见图7。业务支持层构件完成应用软件对外的数据接口和硬件设备访问接口转换。可划分为业务支持节点和协议组件两种。业务支持节点独立或者调用一个或者多个驱动组件一起完成某项特定功能的接口通讯功能,并调用协议组件进行接口数据解包和组包的工作。协议组件完成码元数据及报文的转换工作。业务支持节点可选择不同的适配协议组件,具有高度灵活性。例如:A课题和B课题都使用了RS422通讯,但是A课题和B课题的通讯协议不一样,通过新开发一个B课题的通讯协议就可以完成适配工作,而不用更改RS422通信节点。

图7 业务支持层组件的结构

业务支持节点的专用接口见表6。通过协议绑定接口完成协议的绑定动作。通过物理消息接收,物理消息发送方法完成通讯接口消息的收发(通过调用驱动层的接口)。通过物理消息接收处理方法完成通讯消息的处理。

表6 业务支持节点专用接口

协议组件的专用接口见表7。通过节点绑定方法对业务支持节点进行绑定。通过TransOut2In ()方法进行驱动层的码元到业务逻辑层消息的转换。通过TransIn2Out()方法进行业务逻辑层消息到驱动层数据码元的转换。通过PeriodProcess()方法进行协议组件的周期状态管理工作。

表7 协议组件专用接口

驱动层构件的结构见图8,主要完成对外通信、数据采集和控制接口的软件封装和映射。根据硬件的类型和使用平台,可以开发不同的驱动。

图8 驱动层构件

5 应用举例

图9是使用框架进行构造某电子战管理控制软件的一个例子。图示的管控软件完成电子战管理控制、自检、校准、日志和数据融合等功能,对外接口采用RS422和1553B总线[11]进行通讯,可分解为3个层次以及对应软件构件。如需要更换对外通讯接口或交互协议,只需修改或者替换相应的业务支持层节点和协议组件,不用改动业务逻辑;反之如需更改业务逻辑,只需增加或者更改对应的功能节点或者组件。

图9 基于框架的电子战管理控制软件程序结构

图10是使用框架进行构造某项目电子战信号处理软件的一个例子。该软件需完成定位、测向、识别、威胁计算和告警等功能,对外接口采用1553B,数据采集使用电子战专用的数据采集接口,可以分解为3个层次以及对应的软件构件。

图10 基于框架的电子战信号处理软件程序结构

在两个软件中,框架、驱动层中的1553B总线通信驱动、业务支持层中的1553B总线通信节点和1553B报文协议、业务逻辑层中的日志节点均是共用的。

6 结束语

本文通过引入基于框架的设计方法对机载电子战嵌入式软件进行设计,统一和规范了机载电子战嵌入式应用软件的体系结构,使得电子战系统软件架构具备开放式软件架构特征;通过软件框架、业务逻辑层、业务支持层和驱动层软件构件的开放式设计与复用,在提升软件质量的同时使得软件开发人员聚焦应用开发,有效提升了机载电子战嵌入式软件研发效率;通过软件框架的隔离效应可支持应用软件在不同操作系统间的快速部署,使得电子战系统具备快速迭代升级能力。

猜你喜欢

嵌入式软件电子战构件
从近几次局部冲突看俄军电子战能力的发展
电子战领域的争锋
钢筋混凝土构件裂缝控制
“电子战大拿”歼-16D
浅析嵌入式软件技术的现状与发展动向
俄军电子战能力让西方震惊
基于模型检查的嵌入式软件构件化分析与验证
基于构件的软件工程技术与理论方法探讨
嵌入式软件在计算机软件开发过程中的运用
基于构件的软件开发实践