军用嵌入式软件构件技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2009-08-20 修回日期:2009-10-15作者简介:刘银良(1982- ),男,河北昌黎人,在读研究生,
研究方向:军用软件的设计与应用。
文章编号:1002-0640-(2010)增刊-0140-04
军用嵌入式软件构件技术
刘银良,张 勇
(北方自动控制技术研究所,太原 030006)
摘 要:简要地介绍了嵌入式软件构件。
分析了采用构件化方法开发军用嵌入式软件的优越性。
详细阐述了军用嵌入式软件构件模型。
最后给出了具体的应用。
关键词:嵌入式,构件,源码,构件模型中图分类号:T P 391 文献标识码:A
Military Embedded Software Components Technique Research
LIU Yin-liang ,ZHANG Yo ng
(N orth A otomatic Contr ol T echnology I nstitute ,T aiy uan 030006,China )
Abstract :The com po nent of embedded softw are is ex plained briefly .Analysed the super io rity abo ut using components technique fo r m ilitary embedded softw ar e.Elaborated a co mponent mo del for militar y embedded softw ar e.At last,a concr ete living ex ample is enumerated.
Key words :em bedded,com ponent,source co de,component m odel
1 嵌入式软件构件简介
软件构件的定义有很多,OM G 组织给出的定义为:构件是一个物理的、可替换的系统组成部分,它包装了实现体且提供了对一组接口的实现方法。
构件表示了系统实现体的一个物理片段,包括软件代码(源代码、二进制代码或可执行代码),或者等同体,例如脚本或命令文件。
目前,构件技术在分布式软件和桌面软件开发中已经很成熟。
最常用的通用构件模型标准包括CORBA 中的CCM 、COM 、JavaBeans 等。
但是,通用构件模型并不适用于嵌入式系统,主要在于:
*嵌入式平台的多样性,难以实现重用和移植。
*通用构件模型在运行时需要大量的底层基础的支持,如CO M 需要CO M 库的支持、COR BA 需要O RB,P OA ,名字空间等机制支持。
*通用构件模型中没有考虑非功能性限制如内存消耗、实时特性、可靠性、稳定性等,这在嵌入式系统中是非常重要的方面。
综上所述,将通用构件模型直接应用于嵌入式系统软件开发是很困难的。
所以需要根据嵌入式应用的特点研究具有
嵌入式特点的构件模型非常重要。
下面列举几个目前比较成熟的嵌入式构件模型。
(1)PBO
P BO (P or t Based Object )是由卡内基梅隆大学A M L (A dvanced M anipulato rs L abo rato r y)实验室开发的一种构件模型,适用于特定的领域,如工业控制。
独立过程(Independent P ro cess )是P BO 模型的基础,独立过程不允许与其他构件交互,因此,构件使用起来比较简单。
但是仅由独立构件组成的系统功能十分有限,不能够共享数据和资源。
P BO 将本模块的功能实现封装起来,对外界来说,是通过接口来认识它并与之交互的。
P BO 模型中,成员方法之间没有实现互斥同步等问题,成员方法之间无优先级区别和不可抢占,不适应强实时环境。
(2)K OA L A K O A LA
(Component
O rg anizer
A nd
Linking
A ssistant )是专用于消费电子产品的构件模型。
K OA L A 构件是源码构件,这提高了模型的开放性。
KO A LA 构件是一种得到大量应用的构件,全球有超过100家的开发商在使用K O A LA 构件,K OA L A 拥有一个全球构件仓库,各地的开发商可以通过W eb 方式下载这些构件。
K OA L A 的不足是没有考虑非功能性属性,只实现在一个专用的O S 上,缺乏在大范围内支持有效开发的工具。
(3)Rubus
R ubus 是用于建筑设备的构件模型,R ubus 构件需要
运行在专用的操作系统RubusO S 之上,这使得Rubus 的移
Vol.35,S upplement
Aug,2010火力与指挥控制
Fire Control and Comm and Control 第35卷增 刊
植性较差,限制了Rubus的使用范围。
Rubus的构件等同于任务,每个任务都是定期的,并且包括一组输入和输出端口用于与其他任务进行非缓冲的通信。
Rubus构件是源码级的,开放性好。
以上几种构件模型都是源码级的重用,具有良好的开放性,在系统扩展和版本演化中具有一定的优势。
但是,以上构件模型都是某一领域内的模型,而且需要有系统库的支持,大多都需要有操作系统或是专用操作系统的支持,应用范围具有局限性。
因此,在军用嵌入式系统中直接应用以上构件模型存在很多不适用的方面。
2 采用构件化方法开发军用嵌入式软件的优越性
构件化软件开发方法的应用目的是实现软件开发的快速化、标准化、规范化。
针对目前的军用嵌入式系统的特殊性,如实时性、资源有限性、硬件平台多样性、应用领域的宽广性等特点,导致了不同的军用嵌入式系统之间各自封闭开发,不同的项目不同的系统之间的重复工作比较多,大大增加了软件开发的成本和周期,同时系统的可靠性很难保证。
当前,在火控项目中,嵌入式软件的规模和复杂度在不断增大,开发的时间都比较紧张,同时又要保证军用软件的高质量。
在这种情况下,迫切需要新的嵌入式软件开发技术应用到目前的火控系统开发中来。
基于构件的软件开发技术已成为人们研究的热点,并且在分布式系统和桌面系统中取得了良好的应用效果。
因此,把软件构件开发技术引入到军用嵌入式系统中为解决以上存在的问题具有重要的研究意义。
3 军用嵌入式软件源码构件模型研究构件模型是构件化软件开发的基础,它为构件的开发方法提供了详细的标准。
在本节中,针对军用嵌入式系统软件的开发要求,设计了一个能够满足军用嵌入式系统软件需求的嵌入式源码构件模型。
源码构件模型具有开放的框架结构,能够很好地满足系统的结构调整和功能的扩展。
源码构件模型有利于构件在不同环境下做适应性修改,提高了构件在领域内的复用度。
因此,在嵌入式系统应用领域内,源码构件模型更能很好地适用于嵌入式系统软件的开发。
在以下的内容中,将重点分析源码构件模型中的源码构件结构定义、构件接口标准、构件的描述方法等。
该源码构件模型中包括了接口部分、内部处理部分、属性描述部分等3方面的内容(见图1)。
为了满足军用嵌入式系统的要求,构件需要设计4个对外接口,分别为:输入接口、输出接口、配置接口、事件接口。
这4个接口均为抽象接口,在应用中需要进行具体的实例化后才能完成对象对相应功能函数的调用,以达到各构件之间的交互。
内部处理是构件的具体实现部分,在军用嵌入式系统中,主要是完成数据的处理或火控系统状态的判定与转换。
属性描述是构件的不可缺少的一部分,在该源码构件模型中对构件进行功能描述、性能描述、配置描述、环境描述等4个方面的描述。
通过这4方面的信息描述,构件使用者能够全面了解构件和具体需求之间的符合程度,也方便了构件使用者对构件的查询与选用。
图1构件模型图
接口内部处理属性描述
功能描述
性能描述
配置描述事件接口环境描述
配置接口
输出接口
输入接口
3.1 源码构件结构定义
源码构件结构定义概括性地描述了整个源码构件模型的结构组成,给构件开发者提供了比较容易接受和理解的形式表示方法。
源码构件结构定义如下:
源码构件={框架构件 功能构件}
功能构件={生产者构件 消费者构件 中间者构件 共用接口构件}
框架构件={框架代码片段+构件描述块}
功能构件={功能代码片段+构件描述块}
框架代码片段=(数据管理模块+构件调度模块+构件优先级管理模块+可配置参数管理构件+构件注册/注销管理构件+抽象接口)
功能代码片段={数据处理模块+抽象接口}
抽象接口={输入接口+输出接口+配置接口+事件接口}
数据管理模块={datamanag e.h+Set()+Get()}
构件调度模块={r egister.h+定时机制+中断机制+事件接口}
优先级管理模块={datamanag e.h+优先级处理+事件接口}
可配置参数管理模块={cofigur e.h+配置接口}
构件注册/注销管理构件={reg ister.h+初始化}
输入接口={Set(int I d,int I nt erfaceId,int P rio r ity, int M ar k,…)}
输出接口={Get(int Id,int Inter faceId,int P rio r ity, int M ar k,…)}
配置接口={Config ur e(int Id,int Interfa ceI d,int P rior ity,int M ar k,…)}
事件接口={Event(int Id,int Interfa ceId,int P rio r ity, int M ar k)}
数据处理模块={数据处理代码}
定时机制={L o gicalT imer()+T imeM anage(int per iod)}
中断机制={IntSer ver()+IntM anag e()}
优先级处理={P er io dM anage()}
构件描述块={源码构件属性描述信息集}
3.2 构件接口
构件接口是构件模型中非常重要的内容,它是构件和构
・
141
・
刘银良,等:军用嵌入式软件构件技术
件之间或是构件和外界环境之间进行通信和交互的必经之路。
构件接口的实现形式直接关系到构件之间的交互效果。
因此,对构件接口必须进行详细的分析说明。
构件接口的描述图(如图2所示)。
在一个具体的构件实现中,构件本身包含了很多的实现方法,在构件之间的交互过程中实际是对象之间对构件中具体实现方法的调用,但是构件的接口对外必须是严格的、规范的、有限的,因此,构件接口的实现必须借助抽象的概念来实现,也就是构件的接口对外表现形式为抽象接口。
图2接口描述图
事件接口
配置接口输出接口输入接口Event()
Configure(int,int ………)
Get(int,int ………)Set(int,int ………)下面将对构件的抽象接口函数进行具体的说明:1)输入接口函数
Set (int Id ,int I nt erfaceId ,int Pr io rit y ,int M ar k ,…)说明:
Id :构件号(明确接口的隶属)Inter faceId:接口号(用于构件调度)
Pr io rity :接口优先级(相同时序构件的执行顺序,实时性需求)
M ar k:数据标识(函数将要处理的数据类型,0x aabb)…:交互数据(构件之间所要交互的数据)2)输出接口函数
Get (int Id ,int Inter faceId ,int P rior ity ,int M a rk ,…)
说明:同输入接口函数。
3)配置接口函数
Config ure (int Id ,int Inter faceI d,int Pr io rity,int M ar k ,…)
说明:同输入接口函数。
4)事件接口函数
Event(int Id,int InterfaceId,int Pr ior it y,int M ar k)说明:同输入接口函数。
其中,M ar k 表示调用类型,包括中断、定时、轮亻盾,功能调用等
下面将对构件接口的具体实现进行详细说明:
构件接口对外的表现形式为抽象接口,在具体的项目开发中必须实例化后才能使用。
构件开发中,需要把构件内部的实现函数按照输入、输出、配置、事件接口分类,在每一类中再根据函数参数的不同类型定义重载函数,如果出现参数个数和类型相同的函数实现时,需要对数据标识(M ar k)进行判断,之后经过接口模块处理后进行相应的实现函数调用。
输入接口的具体实现:
接口Set (int Id,int I nt erfaceId ,int Pr ior it y,int M ark ,…)是一个抽象接口,具体实现在接口模块中。
在接口模块中根据具体的实现函数设置输入接口的重载函数如下:
Void Set (int Id ,in t InterfaceId ,int Priority ,int M ark ,int ){//首先判断Id 和In terfaceId
………………..//调用具体的实现函数}
Void Set (int Id ,int InterfaceId ,in t Priority,int M ark ,int,float)
{//首先判断Id 和In terfaceId
if(M ark==0xx x01)//xx 代表构件号01数据标识 {………………..}//调用具体的实现函数if (M ark ==0xx x 02)//xx 代表构件号02数据标识 {………………..}//调用具体的实现函数…}
…………..
在实际应用中,根据具体的需求,可以添加和删除相应的重载函数。
事件接口的具体实现、配置接口的具体实现、事件接口的具体实现参照输入接口的具体实现。
3.3 内部处理
在火控系统中,关于火控计算机系统软件的内部处理一般包括外部接口数据或指令的解析、弹道解算、操瞄解算、系统状态的判定与转换、射击时机的判断等。
3.4 属性描述
该部分内容是构件的必备内容,构件的使用者需要通过了解构件属性描述决定是否采用相应的构件。
具体属性描述内容包括:
定义一个六元组(构件标识信息,构件上下文环境,接口信息、实时性属性、附加信息、构件附属信息)
(1)构件标识信息=(构件ID ,构件名,构件类型)构件ID:唯一的()
构件名:有开发人员命名。
构件类型: 框架构件, 生产者构件, 消费者构件,!中间者构件
(2)构件上下文环境=(解决方案,硬件平台,编写语言,编译器信息,头文件信息)
解决方案:框架构件适用的解决方案。
硬件平台:框架构件适用的硬件平台。
编写语言:编程所用语言。
编译器信息:适用范围和获得方式。
头文件信息:说明头文件的信息,包括头文件名、文件的存放路径等
(3)接口信息=(输入接口、输出接口、配置接口、事件接口)
构件接口信息为代码构件的组装提供支持,为每个具体接口提供简单的文本描述、类型规约、参数引用、参数的取值
・
142・火力与指挥控制2010年 增 刊
范围和对越界参数的处理方法等信息,方便源码构件的组装。
输入接口:提示代码构件功能、引用的场合、使用的参数(包括变量和常量)。
输出接口:描述构件对外界的请求。
当构件完成某一功能时,可能需要其他构件的协作,出接口指明了这种对外关系。
配置接口:描述构件的环境相关参数的配置情况,对外指明接口的形式
事件接口:描述接口的触发方式,一般为定时和中断。
(4)实时性属性信息=(执行时间、允许时间、资源数信息、执行周期)
执行时间:给定代码片段在最坏情况下的执行时间。
允许时间:指出代码片段执行的上限时间值,通常情况下,其执行时间应当小于或等于允许时间。
资源数信息:描述构件代码片段的资源分配情况。
执行周期:描述构件的执行频率
(5)附加信息=(功能描述、可配置参数、构件注释)
功能描述:针对构件功能的详细描述。
可配置参数:为了增强代码构件的灵活性和适应性,将代码构件内相关寄存器或存储器变量设置为可配置变量,构件组装时实现配置变量的实例化,达到代码构件的可配置性,解决代码构件组装时存在的资源的共享和互斥问题。
(6)构件附属信息=(构件版本号,构件开发者,构件开发日期,构件修改日期)
构件版本号:x.x
构件开发者:XXX
构件开发日期:xx x x-x x-x x
构件修改日期:xx x x-x x-x x
3.5 构件的封装
把代码片段进行属性描述,完成构件的封装操作。
封装的方式很多,一般包括利用数据库或XM L等方式。
4 几类火控软件构件化开发
通过对主战坦克、防空武器、步兵战车、地炮武器的火控软件的分析,总结了火控系统的软件构件结构图,如图3所示。
基于上述构件模型的某火控计算机系统软件的构件化开发中,各个构件类需要完成的任务和功能如下:
框架类构件包括2个方面:
(1)构件的管理、(2)数据的管理。
控制类构件包括13个方面:
(1)系统的状态转换、(2)简易控制、(3)稳像控制、(4)自动跟踪控制、(5)校准控制、(6)间瞄控制、(7)定时同步控制、(8)射击门的判断、(9)控制输出(定时同步控制中)、(10)can 数据组包和发送、(11)串口数据发送(激光测距机的命令)、(12)射击数据的录取、(13)从框架数据管理中获取和上传相应的数据。
计算类构件包括4个方面
:
图3 火控计算机软件构件结构图
(1)解算参数的赋值、(2)超界的判断、(3)解算、(4)从框
架数据管理中获取和上传相应的数据。
接口类构件包括2个方面:
(1)完成硬件平台的配置、(2)完成数据的接收与发送。
实体类构件包括2个方面:
(1)完成通信接口的报文解析、(2)从框架数据管理中获
取相应的数据(接收缓冲区指针),并上传解析后的数据。
以上的每个方面也可以开发成一个构件。
在整个程序中存在三种软件控制过程:定时、中断、轮
亻盾。
其中,定时机制用来实现各构件的调用;中断主要用来实
现对外部通信接口的中断操作;轮亻盾是用来实现系统实时控
制的。
5 结束语
构件化软件开发技术在军用嵌入式软件开发中成熟应用还需要进一步的探索和实践。
实现陆军武器领域内的软件
构件开发还需要系统硬件平台标准化和系统总体设计标准
化的支持。
因此,软件构件开发需要整个系统开发标准化的
支持。
参考文献:
[1]王千祥.构件化软件-超越面向对象编程(第二版)
[M].北京:电子工业出版社,2004.
[2]Bachman.T echnical Concepts of Co mponent-Based
So ftw are Eng ineer ing[R].[CM U/SEI2000-T R-
008],2000.
[3]於志文,周兴社,李志刚,等.基于嵌入式软构件的开
发技术研究[J].计算机应用研究,2003,36(3):39-
41.
[4]古幼鹏.嵌入式实时软件的构件化开发技术研究
[D].成都:电子科技大学,2005.
[5]赵秋云,魏 乐,刘文清.嵌入式软件的构件化开发
研究[J].科技资讯,2007,5(3):19-22.
・
143
・
刘银良,等:军用嵌入式软件构件技术。