张海龙,陈意芬,郑 晟
(上海机电工程研究所,上海 201109)
基于VxWorks双核应用的导弹火控系统软件设计方法
张海龙,陈意芬,郑晟
(上海机电工程研究所,上海201109)
摘要:针对单核应用的火控系统软件多任务设计架构在提升性能和扩展功能方面存在的不足,提出了一种将目前的火控系统软件多任务设计架构以较少的设计更改即实现双核应用的方法,实现了基于VxWorks双核应用的火控系统软件设计架构,该方法已经在某型导弹武器系统中得到了应用,验证结果表明该方法效果良好,软件运行稳定可靠,极大地提升了火控系统扩展功能和性能的水平。提出的方法对于将单核应用转移到双核应用或开发新的双核应用均具有一定的参考意义和实用价值。
关键词:VxWorks;双核;火控系统;软件设计;软件架构
火控系统是导弹武器系统的作战火力控制的核心,主要用于响应指挥控制系统的各种命令,处理雷达等各种探测设备的目标信息,组织火力资源,控制导弹发射并摧毁来袭目标。
VxWorks操作系统作为嵌入式实时操作系统,具有实时性好、可靠性高和成熟度高等优点,很好地满足了火控系统强实时性和高可靠性的需求,成为了火控系统操作系统的最佳选择之一[1-2],因此导弹火控系统目前普遍采用VxWorks作为实时嵌入式操作系统。
由于VxWorks早期版本不支持双核应用以及火控系统硬件为单核平台,所以火控系统都是基于VxWorks单核平台应用对软件进行设计,按照火控系统的功能设计了各种任务,任务在操作系统的调度下串行周期运行,而随着火控系统的不断发展,火力控制模型算法越来越复杂,实现的功能越来越多,而单核应用剩余的时间资源已经很少,在火控系统的工作周期内已经不能完成所有的任务,火控系统功能和性能的提升受到了极大的限制。要在单核平台上解决该问题,主要可以从以下几方面考虑:一是采用更高性能的单核处理器,二是优化现有的火控系统软件架构,三是优化火控系统具体的代码和算法。但是这几种方法都面临着各自不同的困难。第一种方法,性能或主频的提升往往伴随功耗和发热的增加,而火控系统环境特点决定了其功耗不能太高,第二、三种方法,火控系统软件开发经过了多年的沉淀和积累,软件架构和具体代码及算法已经十分成熟,优化的空间非常有限,在这些约束下单核平台已经不能适应火控系统的需求[3]。随着技术进步,火控系统硬件平台已经升级为双核平台,并且VxWorks也已支持双核应用,双核平台相比单核平台同样功耗情况下其性能提升将近一倍,所以采用双核平台将是解决问题的最好方法[4]。采用双核平台开发,如何快速将原来成熟的单核软件升级为多核软件,对开发人员是一个很大的挑战,本文针对这一问题提出了一种方法,实现了火控系统单核软件快速向多核软件的升级。
本文首先介绍了单核应用的火控系统软件多任务设计架构,然后简要介绍了VxWorks的双核应用特点,最后提出了一种将目前的火控系统软件多任务设计以较少的设计更改即实现双核的应用的方法,实现了基于VxWorks双核应用的火控系统软件设计架构,极大地提升了火控系统扩展功能和性能的水平。
1单核应用的火控系统软件架构
按照导弹火控系统的特点,火控系统是导弹武器系统的作战火力控制的核心,需要接收指挥控制系统和外部设备的多种信息,能够组织多目标拦截所需的火力资源,具备武器系统作战、训练和维护等多种能力,具体包括:
1)接收多个内外部节点(如指控系统、雷达、时统、导航、发控系统、光电跟踪等)的数据和信息;
2)实现目标信息的跟踪和预测、目标态势分析和显示,制定目标拦截策略、火力资源使用策略,人工和自动发射导弹控制;
3)实现武器系统作战、训练和维护工作流程控制。
火控系统软件架构是基于VxWorks操作系统的多任务机制进行设计的,按照火控系统实现的功能特点,将不同需求的功能合理的分配到不同的任务中,并对任务优先级进行合理的设置,既要实现火控系统的所有功能,又要确保火控系统的实时性。
火控系统软件按照周期运行,通过网络接收武器系统内部和外部的数据和命令信息,经过火力控制处理后形成相应的数据和控制命令,通过网络向其他节点发送。根据软件各个功能特点,将火控系统软件主要划分为9个任务,任务优先级由高到低分别为:
1)校时任务。
2)发控系统网络接收任务。
3)武器系统网络接收任务。
4)作战系统网络接收任务。
5)操控任务。
6)网络发送任务。
7)火力控制任务。
8)显示刷新任务。
9)记录任务。
其中,校时任务受准秒脉冲中断触发运行,为火控系统提供基准工作时间,发控系统网络接收任务、武器系统网络接收任务、作战系统网络接收任务受网络上收到报文触发,为火控系统提供外部输入信息,操控任务受操控设备中断触发,为火控系统提供人工干预信息,网络发送任务受火力控制任务触发,向其它节点发送控制命令和数据信息,火力控制任务受周期定时器触发周期运行,实现目标信息的跟踪和预测、目标态势分析,制定目标拦截策略、火力资源使用策略,人工和自动发射导弹控制等功能,显示刷新任务受火控控制任务触发,实现火控系统各种信息的显示,记录任务受火力控制任务触发,实现火控系统关键信息的记录。各个任务的基本运行时序如图1所示,各个任务之间控制流和信息流如图2所示。从图中可以看出,所有任务在单核方式下串行运行,剩余时间资源已经很有限,若再增加火控系统的功能,提升火控系统的使用性能,提升空间非常有限。
图1 火控系统软件基本运行时序图
图2 火控系统软件控制流和数据图
2VxWorks操作系统双核特点
2.1VxWorks提供了两种多核支持方法,即SMP与AMP
SMP的全称是“对称多处理”(Symmetrical Multi-Processing)技术,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构;在这种架构中,一台电脑不再由单个CPU组成,而同时由多个处理器运行OS的单一副本,并共享内存和一台计算机的其他资源;
AMP的全称是“非对称多处理器”(Asymmetric Mulitprocessing)技术。它允许在每个独立的CPU上运行独立的操作系统。每个OS仅能被它所在的CPU访问。因此,在CPU1上的内核任务不可能在CPU0所属的内存中执行,反之亦然。在AMP中,部分内存是共享的,但是严格限制读写数据的[4]。
SMP方法对于火控系统软件的开发方式更接近以往单核工作时的开发方式,不仅有利于对以往火控系统软件的继承,更有利于习惯了单核应用开发的火控系统设计人员快速开发双核的火控软件,而AMP方法每个CPU核运行自己的操作系统,为了实现这一点需要操作系统做很多特殊处理,也就是说需要操作系统厂商进行定制,每个核上都要驻留操作系统映像,必然会增加内存的开销,底层设备可能只在某个核上才能访问,会造成BSP软件的复杂性,也会影响上层应用软件操作设备的透明性,该方法非常不灵活,N个核必须分成N个独立的CPU,火控系统软件设计架构会有较大的变化。因此选用 SMP方法作为火控系统双核应用的方法。
2.2VxWorks SMP特点
编程:SMP编程与单核编程(UP)在多数情况下是一样的。类似地,多数API在UP和SMP编程中是通用的,只有少数一些UP编程中的API不能在SMP中使用。
多任务:对于传统的UP系统而言,处理多任务的方法是通过任务优先级对CPU资源进行抢占式处理的。而SMP系统则改变了这种方法,它是实实在在的任务、中断的同时执行。实现同时执行的关键是多个任务可以在不同的CPU上执行,当然这需要OS的协调控制。对于UP系统中多任务所谓的同时执行,其实只不过是CPU的快速切换,占有CPU的任务由一个快速切换到另一个。在SMP系统中,同时执行不是幻想而是实际存在的。
任务调度机制:VxWorks SMP系统中的任务调度机制与UP中的类似,都是基于优先级的。不同的是,当不同的任务运行在不同的CPU上时,可以实现两个任务的同时执行。
互斥:由于SMP系统允许任务同时运行的情况存在,因此,在UP系统中通过关中断、锁任务调度等这些保护临界资源的手段在SMP系统中将不再适用。这种在所有CPU上通过强行关闭中断、锁任务调度的方法会影响到SMP系统发挥它的特点,将SMP系统带回到UP系统的模式。VxWorks SMP提供一套特殊的任务间、中断间同步/互斥的方法——即UP中的taskLock()和intLock()等将会被VxWorks SMP提供的spinlock,原子操作以及CPU-specific等机制替代。
CPU-Affinity:默认情况下,任意任务可以运行在任意CPU上。VxWorks SMP提供了一种叫做CPU-Affinity的机制,即可以分配任务到指定CPU(CPU逻辑索引)上执行。
3双核火控系统软件设计
在多核处理器上开发程序要比在单核处理器上困难得多。虽然多个应用程序可以方便地运行在不同处理器上,但是程序员们必须谨慎编写程序代码,以有效利用多核技术。编写并行程序是利用多核处理器的最直接方法,编写并行程序的首要挑战是,确定程序中哪些部分功能能够并行地执行,然后通过代码予以实现。
理论上,可以将原来单核应用下的火控系统软件不做太大改动就直接运行在双核应用下,任务的调度完全由VxWorks SMP控制,但是这并不是一个很好的方法。因为火控系统软件各个任务之间采用的是共享缓存进行交互的,单核应用下的火控系统软件各个任务是串行运行的,对共享缓存的读写不会出现冲突问题,而在双核应用下,任务会出现同时运行的情况,对共享缓存的读写会出现冲突,为了解决这个问题,需要对软件中的共享缓存内容进行仔细分析并加以处理,软件的改动量会较大[5]。
本文针对火控系统软件的特点,提出了一种方法,使软件可以较少的更改就可以实现双核的应用,具体方法如下:
1)找出火控系统软件可以并行运行的任务:校时任务、发控系统网络接收任务、武器系统网络接收任务、作战系统网络接收任务与操控任务接收不同的外部信息,四个任务间没有信息交互,可以并行运行;火力控制任务为网络发送任务提供外部节点的控制命令和数据信息,因为火控系统实时性的要求,火控系统需要实时的命令和数据信息,所以两个任务必须串行运行;火力控制任务为显示刷新任务提供武器系统各种
显示信息,因为显示信息可以弱实时显示,不影响用户体验,所以两个任务可以并行运行;火力控制任务为记录任务提供武器系统关键信息,关键信息必须及时记录,所以两个任务不可以并行运行[6]。经过以上分析,确定可以并行运行的任务如表1所示。
表1 并行运行任务表
2)评估任务运行的时间,为双核任务负载均衡作参考,任务运行评估时间如表2所示。
表2 并行运行任务评估时间表
图3 火控系统软件双核运行时序图
3)通过前两步的分析,采用VxWorks SMP提供的CPU-Affinity机制,即可以分配任务到指定CPU上,将显示刷新任务指定到CUP core1上运行,其它任务指定到CUP core0上运行,既实现了任务的并行运行,又保证了双核的负载均衡,更重要的是在CUP core0上运行的任务同单核应用的火控系统软件架构是一致的,可以不进行任何的更改。
4)运行在CUP core1上的显示刷新任务与 CUP core0上的任务并行运行,需要解决显示刷新任务与火力控制任务之间的共享缓存交互保护的问题,VxWorks SMP提供了一系列的“memory barrier”操作,这些操作可以解决该问题,软件只要进行较少的更改就可以解决共享缓存交互保护的问题。
至此实现了火控系统软件在双核应用下的设计架构,双核应用的火控系统软件任务运行时序如图3所示,从图中可以看出,任务在双核上并行运行,剩余时间资源增多,极大地增加了火控系统扩展功能和提升性能的能力。
4结束语
本文首先介绍了单核应用的火控系统软件多任务设计架构,然后提出了一种将单核应用的火控系统软件多任务设计以较少的设计更改即实现双核应用的方法,实现了基于VxWorks双核应用的火控系统软件设计架构,该方法已经在某型导弹武器系统中得到了应用,验证结果表明该方法效果良好,软件运行稳定可靠,极大地提升了火控系统扩展功能和性能的水平。提出的方法对于将单核应用转移到双核应用或开发新的双核应用均具有一定的参考意义和实用价值。
参考文献:
[1]VxWorks-kernel-programmer’s-guide 6.8[S]. Wind River Systems, Inc., 2010.
[2]陈养平,贺占庄.基于VxWorks的实时多任务软件设计[J].微电子学与计算机,2002(10):63-65.
[3]章志敏.VxWorks嵌入式实时操作系统在某导弹火控系统中的应用[J].上海航天,2006(2):57-60.
[4]虞治国,魏敬和.一种双核SoC调试系统的设计与验证[J].电子与封装,2010,10(1):21-23.
[5]郑玉虎,王品,陆小虎.基于双核处理器平台的数控系统软件架构设计[J].组合机床与自动化加工技术,2013(8):62-65.
[6]白亮,严义,周宏伟.双核微处理器实时系统的软件架构方法[J].单片机与嵌入式系统应用,2014(8):13-16.
Software Design Method of Missile Fire Control SystemBased on Dual Core Application of VxWorks
ZHANG Hai-long, CHEN Yi-fen, ZHENG Sheng
(Shanghai Research Institute of Mechanical and Electrical Engineering, Shanghai 201109, China)
Abstract:For single core application of fire control system software design, multi task architecture in improving the performance and expansion of the functions of the existing problems, and puts forward the a will be the current fire control system software design, multi task architecture with less design change to realize the dual core application method, realized based on VxWorks application of double nucleus of the fire control system software architecture design, this method has in a certain type of missile weapon system has been applied and verified results show that the method has a good effect, software operation is stable and reliable, greatly enhance the fire control system function and performance level of expansion. The proposed method has certain reference significance and practical value to transfer single core applied to dual core application or development of new dual core application.
Key words:VxWorks; dual core; fire control system; software design; software architecture
文章编号:1673-3819(2016)03-0122-04
收稿日期:2016-03-04
作者简介:张海龙(1977-),男,吉林舒兰人,硕士,高级工程师,研究方向为导弹火控系统。 陈意芬(1979-),女,硕士,高级工程师。
中图分类号:TJ761.1;E917
文献标志码:A
DOI:10.3969/j.issn.1673-3819.2016.03.024
修回日期: 2016-03-29
郑晟(1985-),男,硕士,工程师。