CN112114801B - 一种面向ima的aadl多范式建模及自动生成c代码的方法 - Google Patents

一种面向ima的aadl多范式建模及自动生成c代码的方法 Download PDF

Info

Publication number
CN112114801B
CN112114801B CN202010909187.2A CN202010909187A CN112114801B CN 112114801 B CN112114801 B CN 112114801B CN 202010909187 A CN202010909187 A CN 202010909187A CN 112114801 B CN112114801 B CN 112114801B
Authority
CN
China
Prior art keywords
aadl
component
partition
ima
property
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010909187.2A
Other languages
English (en)
Other versions
CN112114801A (zh
Inventor
杨志斌
邱宝
王飞
谢健
周勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Aeronautics and Astronautics
Original Assignee
Nanjing University of Aeronautics and Astronautics
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University of Aeronautics and Astronautics filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CN202010909187.2A priority Critical patent/CN112114801B/zh
Publication of CN112114801A publication Critical patent/CN112114801A/zh
Application granted granted Critical
Publication of CN112114801B publication Critical patent/CN112114801B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种面向IMA的AADL多范式建模及自动生成C代码的方法,通过AADL表达IMA软硬件架构,AADL行为附件、同步语言SIGNAL和SDL描述软件构件的功能行为,以支持状态机、同步数据流、异步执行等多种计算模型;通过IMA属性集求精的方式向模型中添加IMA属性得到平台相关的AADL模型;通过OSATE提供的AADL文件解析模块对文件保存的AADL文件解析并包装成类;借助Xtend提供的模板功能实现多范式建模工具和AADL到C代码转换规则的映射,以此实现一个基于AADL开源工具环境OSATE的Eclipse平台插件。

Description

一种面向IMA的AADL多范式建模及自动生成C代码的方法
技术领域
本发明涉及基于AADL设计模型进行C代码的自动生成技术领域,具体涉及一种面向IMA的AADL多范式建模和代码自动生成方法。
背景技术
安全关键系统(Safety-Critical System)是指应用于航空、航天、交通、能源等领域的复杂嵌入式系统,且其运行情况可能引起系统处于危险状态,从而导致重大财产损失、环境破坏或者人员伤害。航空电子系统就是一类典型的安全关键系统。
航空电子系统经历了独立式、联邦式、综合化(Integrated Modular Avionics,IMA)以及近期提出的智能开放式(Future Airborne Capability Environment,FACE)等阶段。随着计算机硬件能力的提高,使得航空电子系统综合化(IMA)成为可能。IMA是指在统一的硬件处理器上执行所有航电功能,为了保证各个航电功能安全执行,IMA引入分区(Partition)的概念,每个分区包含独立的地址空间、上下文数据以及实时任务,一个分区的错误行为不能影响到其它分区。为了支持在IMA架构上的应用软件开发,国际航空电子应用软件接口标准ARINC653(Avionics Application Software Standard Interface)定义了一个多分区的运行时环境,并给出了一套通用的航空电子应用软件标准接口(APEX)以提高机载软件的模块化、可重用性和可移植性。目前,Wind River公司的VxWorks653,GreenHills公司的INTEGRITY-178B以及LynuxWorks的LynxOS-178产品均采用了该标准,并通过DO178B的A级认证,为上层机载应用软件提供了高可靠的ARINC653实时操作系统。由DDC-I提出的Deos操作系统,是第一个同时支持ARINC653和多核处理器的实时操作系统,并且通过了DO178C的A级认证。国内方面,航空工业计算所设计与实现的天脉操作系统也能够完整支持ARINC653标准。
在安全关键系统领域,常用的建模语言主要包括Modelica、SysML、AADL、Simulink、SDL等。其中AADL以层次化构件的方式表达系统的软硬件体系结构,支持功能、非功能、执行平台等多视角建模。AADL提供定义新属性集和附件(Annex)等多种扩展方式,使得AADL逐渐成为安全关键软件多范式建模的重要选择。
在AADL多范式建模方面研究主要有Haolan Zhan和Naijun Zhan等使用AADL与Simulink进行混合建模,扩展AADL描述系统连续行为的表达能力;欧空局ESA提出AADL、Simulink、SDL的多范式建模方法TASTE。
在基于AADL模型的代码生成方面,Gilles Lasnier等人提出了OCARINA工具,为AADL模型提供了面向IMA的ARINC653平台相关的C、Ada代码自动生成方法,其平台相关部分的系统分区信息以及平台接口等是通过代码生成器硬编码实现。卡梅隆大学Julien等人提出面向商业平台的AADL代码生成方法,采用AADL和SCADE的混合建模,并分别生成代码后人工集成。
发明内容
发明目的:为了解决单一建模语言无法完全覆盖IMA的建模要求的问题,本发明提出了一种面向IMA的AADL多范式建模及代码自动生成方法,AADL用于表达IMA软硬件架构,AADL行为附件、同步语言SIGNAL和SDL(Specification and Description Language)用于描述软件构件的功能行为,并通过IMA属性集求精向模型中添加平台相关信息,并基于平台相关的AADL模型自动生成可运行C代码。
技术方案:一种面向IMA的AADL多范式建模方法,包括以下步骤:
S1:根据AADL构件与IMA元素的对应关系,采用AADL表达IMA的软硬件架构进行表达,得到系统架构AADL模型;
S2:扩展AADL属性集以支持基于BA、SIGNAL、SDL对系统架构AADL模型中的各构件功能行为进行表达,得到平台无关的AADL模型;
S3:采用IMA属性集对平台无关的AADL模型进行平台相关求精,生成平台相关的AADL模型。
进一步的,所述S1,具体包括:
通过AADL的软件构件对IMA的软件体系结构进行建模,所述软件构件包括数据构件、子程序构件、线程构件、线程组构件和进程构件;
通过AADL的硬件构件以及构件间的连接对IMA的硬件体系结构;所述硬件构件包括处理器构件、虚拟处理器构件、存储器构件、外设构件、总线构件、虚拟总线构件;
通过AADL的复合构件组合所有的硬件构件和软件构件,建立得到系统架构AADL模型。
进一步的,所述S2,具体包括:
对AADL的属性集进行拓展,创建得到MPM4IMA属性集;在所述MPM4IMA属性集中可定义新的属性、属性类型和属性常数;
采用MPM4IMA属性集,支持基于BA、SIGNAL、SDL对任务的功能行为进行表达。
进一步的,所述S3具体包括:
首先,在IMA属性集中添加平台相关属性;所述平台相关属性包括调度属性、分区通信属性和任务运行时属性;
而后,通过手动求精的方式向平台无关的AADL模型中添加平台相关属性,得到平台相关的AADL模型。
本发明还公开了一种AADL模型自动生成C代码的方法,以采用面向IMA的AADL多范式建模方法建模得到的平台相关的AADL模型的实例化文件作为输入,以C语言工程为输出,所述IMA的代码结构包括任务层、分区层和内核层;包括以下步骤:
步骤1:借助Xtend提供的模板功能对IMA与AADL的转换映射规则进行表达,得到转换模板;
步骤2:借助OSATE平台对平台相关的AADL模型的顶层系统进行实例化,得到代表该顶层系统的AAXL2文件;
步骤3:借助AAXL2文件和EMF代码解析得到SystemImpl对象;
步骤4:借助步骤1的转换模板对SystemImpl对象进行子系统遍历、进程遍历、其他构件遍历,遍历结束后生成与平台相关的AADL模型对应的C代码工程。
进一步的,所述转换映射规则包括:
IMA的任务层对应AADL模型中的SDL、SIGNAL、BA和数据构件的映射规则;
IMA的分区层对应AADL模型的进程构件、线程构件、虚拟处理器构件的映射规则;
IMA的内核层对应AADL模型的系统构件、内存构件和处理器构件的映射规则。
进一步的,所述转换模板包括系统转换模板、进程转换模板、线程转换模板、子程序转换模板、行为附件转换模板、数据构件转换模板、特性转换模板、属性转换模板以及处理器转换模板。
本发明还公开了一种面向IMA的AADL多范式建模系统,其特征在于:包括AADL功能行为扩展工具,所述AADL功能行为扩展工具可执行面向IMA的AADL多范式建模方法。
有益效果:本发明与现有技术相比,具有以下优点:
(1)本发明通过多范式建模和代码生成,增强AADL对IMA复杂系统的表达能力,减少由手动编程带来的错误,保证系统质量属性以及降低系统开发时间;
(2)本发明能够同时满足IMA状态机、同步数据流、异步执行模型的表达,丰富了AADL模型到可执行C代码转换的工具集。
(3)本发明借助Xtend提供的模板功能实现多范式建模和AADL到C代码转换规则的映射,以此实现一个基于AADL开源工具环境OSATE的Eclipse平台插件。
附图说明
图1:本发明的模块化体系结构;
图2:Xtend描述转换规则;
图3:C代码生成整体进程示意图;
图4:代码生成的结构框架图
图5:工具设计Java包间结构关系图;
图6:生成C工程流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
本发明涉及到一种面向IMA的AADL多范式建模方法、对采用面向IMA的AADL多范式建模方法得到的AADL模型自动生成C代码工程的方法以及实现上述两个方法的工具。本实施例的工具是基于AADL开源工具环境OSATE使用Eclipse插件开发技术实现的,包括多范式建模和代码生成两个部分。
本实施例的一种面向IMA的AADL多范式建模方法,包括:首先,使用AADL表达IMA的软硬件体系结构,得到系统架构模型;其次,拓展MPM4IMA属性集,使AADL能够表达对BA、SIGNAL、SDL的建模,即基于BA、SIGNAL、SDL对系统架构模型中各构件功能行为进行表达,最后向该模型中添加IMA平台相关属性,生成平台相关的AADL模型。
本实施例的AADL模型自动生成C代码工程的方法,包括:首先实例化平台相关的AADL模型,对实例化后的AADL模型执行代码生成进程。
现对上述两个方法及其实现该方法的工具说明如下:
(1)工具总体概述
参见图1,本实施例采用基于EMF的MDA模型解析技术设计由多范式建模和AADL模型到C代码的转换规则,转换映射规则部分元模型详见图2。整个工具的设计模块详见图3,Java包的结构与关系详见图5。
(2)借助EMF实现AADL模型语义分析与提取
OSATE2是基于Eclipse二次开发的,它在底层通过EMF对AADL模型进行语义分析以及提取。EMF是基于Eclipse的模型框架,它是在Eclipse上进行MDA模型驱动开发的重要技术支持。EMF项目是一个建模框架和代码生成工具,根据XMI(AADL模型代码可以使用XMI表达)中描述的模型规范,EMF可以提供运行时支持,将模型转换成高效的、语义准确的Java类以及一组允许查看和基于命令的模型编辑的适配器类。
工具类在org.osate.aadl2.util包中,包括并不局限于:
Aadl2AdapterFactory适配器工厂类
Aadl2DerivedUnionAdapter联合适配器类
Aadl2InstanceUtil实例工具类
Aadl2ResourceFactoryImpl资源工厂类
Aadl2ResourceImpl资源类
Aadl2Switch转换类
Aadl2Util工具类
模型基础组件接口在org.osate.aadl2包中,包括并不局限于:
Classiffier分类器接口
Bus主线接口
BusAccess主线通道连接接口
CallContext调用上下文接口
Data数据组件接口
DataCliffier数据组件分类器接口
Device设备接口
Thread线程接口
System系统接口
Subprogram功能接口
Process进程接口
Property属性接口
在OSATE的aadl2底层支持中,除了以上两个包,还提供了:
org.osate.aadl2.impl模型基础组件实现类
org.osate.aadl2.instance模型实例接口
org.osate.aadl2.instance.impl模型实例类
org.osate.aadl2.instance.util模型实例操作工具
org.osate.aadl2.operations AADL组件间操作工具类
org.osate.aadl2.parsesupport编译支持类
org.osate.aadl2.properties属性类
(3)多范式建模
多范式功能建模主要包括三个步骤。首先,通过AADL表达IMA的软硬件架构模型;其次,扩展AADL属性集以支持基于BA、SIGNAL、SDL对构件功能行为进行表达;最后通过IMA属性集对平台无关的模型求精。
AADL的软硬件构件建模IMA系统的软硬件架构,AADL的软件构件用于软件体系结构建模,包括数据、子程序、线程、线程组、进程;硬件构件方面,AADL通过处理器、虚拟处理器、存储器、外设、总线、虚拟总线等构件以及构件间的连接来描述系统硬件组成部分的体系结构;最后通过复合构件就是系统构件,组合所有的构件,层次化地建立系统的体系结构。具体的:AADL表达IMA的软硬件架构模型,即IMA内核层、分区层和任务层。内核层:用AADL的System构件来表达IMA系统;AADL的Processor构件和Memory构件分别代表IMA的处理器和内存;IMA的分区间通信有两种方式采样和队列,分别用AADL的Data Port和EventData Port表示。分区层:AADL的Process构件用于表达IMA分区的软件部分,AADL的VirtualProcessor表达IMA的分区运行时(硬件部分);AADL的Thread表达IMA的任务,IMA的分区内通信有四种方式即缓冲区、黑板、信号量和事件,其中缓冲区用同一进程内的Event DataPort表示,黑板用两个线程共享的Data表示,信号量用Data Access表示,事件用EventPort表示。任务层:AADL的Subprogram和BA用于表达IMA任务的功能行为。
定义AADL扩展属性集MPM4IMA以支持基于SIGNAL和SDL对任务的功能行为进行表达,在MPM4IMA属性集中可定义新的属性、属性类型和属性常数,每个属性集均包括一个单独的名称空间,能够唯一被引用。
当由OSATE提供的默认属性、属性类型、属性常数的属性集,该属性集可省略属性集名。当一属性集参考另一个属性集中的内容,将该属性集作为可利用with说明访问的属性集来说明,在应用属性集进行求精工作时,用软件包头部的with说明属性集名称。
MPM4IMA属性集模板的语法结构为:
Property set<property set name>is
[with<property set or package name>]
<property type declaration>
<property declaration>
<property constant declaration>
End<property set name>;
其中:
<property set or package name>为当前属性集模版可能会应用到的其它属性集模板;
<property type declaration>为属性类型;
<property declaration>为属性定义;
<property constant declaration>为属性常数。
如表1所示。Supported_Languages表示AADL支持的语言扩展,Source_Language表示子程序实现的语言类型;Source_Text表示SIGNAL或SDL源文件名;Source_Location表示源文件的路径。
表1MPM4IMA属性集
Figure BDA0002662647250000061
Figure BDA0002662647250000071
通过多范式功能建模构造平台无关的AADL模型,需要进一步求精为平台相关模型。因此提出一种IMA属性集求精方法,求精的内容主要分为三个部分:调度、分区通信和任务运行时属性。其中:
调度:在AADL模型中,使用处理器和虚拟处理器来分别表示IMA系统运行时及分区运行时。因此,这里将IMA调度属性以求精的方式添加到模型中。IMA系统包括两条属性即分区调度总时长和分区调度窗口,分别对应Processor的两条属性:Module_Major_Frame和Module_Schedule;IMA分区包括分区调度协议、分区名、分区ID,分别对应AADL的VirtualProcessor的三条属性:Scheduling_Protocol、Partition_Name、Partition_Identifier。
分区通信:分区通信属性主要包括分区间通信和分区内通信属性。分区间通信:IMA的分区间通信有两种方式:队列和采样,其中,队列包含队列大小、延迟属性,分别对应AADL的Queue_Size、Timeout属性;采样包含端口刷新周期、端口方向和最长消息大小,分别对应AADL的Refresh_Period、in/out、MAX_Message_Size属性;分区内通信:IMA的分区内通信有四种方式:缓冲区、信号量、黑板和事件,其中缓冲区包含的属性有缓冲区大小、缓冲区读取规则,分别对应AADL的Queue_Size、Queueing_Discipline属性;信号量、事件、黑板包含的属性有延迟,对应AADL的Timeout属性。我们将这些属性以求精的方式添加到AADL模型中。
任务运行时属性:主要考虑分区内的任务的相关属性,主要包括任务分发协议、任务周期、任务优先级、任务的时间容量等,对应AADL线程构件的Dispatch_Protocol、Period、Priority、Time_Capacity属性等。
(4)代码生成
IMA的代码结构由任务层、分区层和内核层三个部分组成,结构框架如图4所示,代码生成的具体流程如图6所示。任务层是主要是分区应用,即分区的功能行为代码和数据结构,包含SDL、SIGNAL、BA和数据构件的代码生成;分区层主要是为任务分配资源,包含分区的初始化、分区任务代码和分区部署;内核层主要是管理分区和资源配置来实现安全性和可靠性需求,包含内核服务和内核配置文件。
本实施例的代码生成方法,包括以下步骤:
S1:给出面向IMA的代码自动生成规则,涉及任务、分区、内核三个层面的代码自动生成,借助Xtend提供的模板功能表达该转换映射规则;
S2:借助OSATE平台对平台相关的AADL模型的顶层系统进行实例化,得到代表该顶层系统的AAXL2文件,借助AAXL2文件和EMF代码解析得到SystemImpl对象,借助Xtend转换模板对该SystemImpl对象进行子系统遍历、进程遍历、其他构件遍历三个步骤,生成平台相关的AADL模型对应的C代码工程。
转换映射包括IMA的任务层对应AADL模型中的SDL、SIGNAL、BA和数据构件;IMA的分区层对应AADL模型的进程构件、线程构件、虚拟处理器构件;IMA的内核层对应AADL模型的系统构件、内存构件和处理器构件。经Xtend提供的模板功能进行表达形成包括系统转换模板、进程转换模板、线程转换模板、子程序转换模板、行为附件转换模板、数据构件转换模板、特性转换模板、属性转换模板以及处理器转换模板。
任务层代码生成规则主要包括BA、SIGNAL、SDL和数据构件的生成规则。同步语言SIGNAL的代码自动生成方法和工具已已知,因此,本实施例主要给出BA、SDL的代码生成规则。
数据构件代码生成规则:数据构件的数据类型映射为相应的C语言数据类型,数据类型分为简单数据类型和数据结构。
规则1:AADL简单的数据类型映射到C语言简单数据类型。数据标识符转化为相应的C语言变量标识符。
表2简单数据类型的映射示例
序号 AADL数据类型 C变量
1 Char char
2 Integer int
3 Booleans unsigned char
4 String char[255]
规则2:AADL数据结构映射为C语言的结构体。将数据构件名称、数据子构件名称和数据子构件类型映射为结构体名称、内部成员名称、内部成员类型。表3一个AADL数据结构转换示例。
表3结构体映射示例
Figure BDA0002662647250000091
BA是由局部变量、状态和变迁三个部分组成。局部变量映射为C语言子程序的局部变量,具体规则参照数据构件映射规则,状态映射为C语言中的枚举类型,变迁映射为C语言中的switch-case语句。
规则3:AADL状态映射为C语言的枚举类型,并且给初始状态、当前状态赋值。
规则4:AADL变迁映射为switch-case结构,每个状态映射为一个case,每个变迁映射为一个if-else结构,变迁的条件守卫映射为if-else的条件判断部分,变迁的行为动作映射为if-else的操作部分。
SDL的代码生成分为以下三个部分:SDL的结构转换为C语言的功能子程序框架;定义转换为C语言的变量;行为转换为C语言的具体功能行为。
规则5:1)结构:SDL中系统转换为<系统名.c>和<系统名.h>文件,功能块转换为C语言中对应的子程序。2)定义:SDL的声明的元素转换为C语言中的全局变量;SDL的局部声明的变量转换为C语言的局部变量。3)行为:SDL的状态代码生成规则和BA的状态代码生成规则一致。
分区层主要是为任务分配资源,主要由分区初始化、分区任务代码和分区部署文件组成。
分区初始化包含任务的初始化等。IMA的分区和任务分别对应AADL的进程构件和线程构件,本文主要关注IMA周期性和非周期性任务的初始化,对应AADL是周期性和非周期性线程构件的代码生成规则。
AADL线程根据dispatch_Protocol属性区分线程的类型:Periodic代表周期性线程;Aperiodic代表非周期性线程。
规则6:周期性任务的初始化子程序映射为APEX API对应的任务初始化子程序,周期性任务的初始化数据结构PeriodProcessInit如下,任务初始化子程序利用PeriodProcessInit数据结构对周期性任务进行初始化。
Figure BDA0002662647250000092
Figure BDA0002662647250000101
其数据结构中的各项分别为任务名称、任务入口地址、任务截止时间、任务周期、任务执行时间。
规则7:非周期性任务的初始化子程序映射为APEX API对应的任务初始化子程序,非周期性任务的初始化数据结构AperiodProcessInit如下,任务初始化子程序利用AperiodProcessInit数据结构对非周期性任务进行初始化。
Figure BDA0002662647250000102
其数据结构中的各项分别为任务名称、任务入口地址、任务截止时间、任务执行时间。
分区任务代码主要IMA任务的功能映射。
规则8:针对一个AADL周期性构件,入口子程序用<线程实例名_period_jod>来命名,周期性线程的循环过程映射为入口子程序的while(1)循环,线程周期性等待映射为wait_next_period()子程序,并把它置于while循环的末尾。表4一个周期性任务的功能映射示例。
表4期性任务的功能映射示例
Figure BDA0002662647250000103
规则9:针对一个AADL非周期性构件,入口子程序用<线程实例名_aperiodic_job>来命名,在端口捕获事件映射为wait_Dispatch()子程序。表5一个非周期性任务的功能映射示例。
表5周期性任务的功能映射示例
Figure BDA0002662647250000104
Figure BDA0002662647250000111
由于IMA系统每个分区都是相对的独立,因此,每个分区必须保存当前分区的信息,部署信息会保存在分区部署文件中。
规则10:分区部署文件中包含当前分区的部署信息,如表6所示,左边是IMA分区实体,包含分区ID、分区名、分区调度策略、任务总数、通信端口数,对应右边AADL的Partition_Identifier、Partition_Name、Scheduling_Protocol、线程总数、端口总数等属性。
表6分区部署信息映射表
IMA分区实体 AADL属性
分区ID Partition_Identifier
分区名 Partition_Name
分区调度策略 Scheduling_Protocol
任务总数 线程总数
通信端口数 端口总数
内核层的主要功能是管理分区和资源配置,分为内核服务和内核配置文件。
IMA的内核服务主要包含分区管理和分区间通信。
规则11:分区管理主要是获取当前分区状态,分区状态的结构体如下,包括当前分区的调度周期、分区ID、当前分区的运行时长,对应AADL的Module_Schedule和Partition_Identifier属性。
Figure BDA0002662647250000112
分区间通信包括采样和队列这两种方式,下面分别介绍采样和队列的映射规则。
规则12:采样通信对应AADL的Process构件间的Data Port通信,它的结构体如下,包含采样通信的端口大小、端口方向、刷新频率属性,分别对应AADL的MAX_Message_Size、in/out、Refresh_period。
Figure BDA0002662647250000121
规则13:队列通信对应AADL的Process构件间的Event Data Port通信,它的结构体如下,包含队列端口方向、消息数量、队列大小属性,对应AADL的in/out、Nb_Message、MaxMessageSize属性。
Figure BDA0002662647250000122
IMA的系统的内核配置文件由一个IMA的XML系统配置表组成,系统配置表主要包含以下四个主要元素:分区表、分区调度表、通信表及内存分配表。
规则14:分区表主要是保存分区的具体信息,包含分区名、分区ID,以及每个分区里包含的端口的信息,对应AADL的PartitionName、PartitionID、PortName、Direction。
规则15:分区调度表主要是保存分区的调度框架,包含一个主时间框架、分区名、分区ID、分区周期、分区持续时间、窗口开始的时间,窗口ID,分别对应AADL的Module_Schedule、PartitionName、PartitionID、Module_Schedule。其中Module_Schedule中包含PeriodSeconds、PeriodDurationSeconds、WindowStartSeconds、WindowID等属性。
规则16:通信表主要保存分区间通信信息,包含端口名称、端口所在分区名、端口方向,对应AADL的PortName,PartitionName和端口方向。
规则17:内存分配表主要是保存各分区的内存分配,包含分区名、分区ID、分区内存大小,对应AADL的PartitionName、PartitionID、Memory_requirement。
(5)Xtend描述转换规则映射
转换规则主要分为九个部分:系统转换模板、进程转换模板、线程转换模板、子程序转换模板、行为附件转换模板、数据构件转换模板、特性转换模板、属性转换模板以及处理器转换模板。
九个单独的转换规则模版又可以分为两类,组件生成模版以及元素模版,其中只有组件生成模版会主动生成对应文件,元素模版是对组件生成对应文件的补充。下面将会对九个模版中主要的几个模版进行说明:
系统转换模版SystemTemplate.xtend
EMF中系统实例类(org.osate.aadl2)
SystemSubcomponent(系统构件接口):
getSystemSubcomponentType()获取系统构件类型
setSystemSubcomponentType(SystemSubcomponentType)设置系统构件类型,在本工具中并不会动态地改变模型,下面set方法将跳进;
SystemImplementation(系统实例类)
name对应AADL中系统名
eContainer拥有该构建的上层构建,最外层是package
Features该系统构件所属的系统类型的所有接口特性
Subcomponents该构件的所有子构件
Connections该系统构件配置的所有链接
进程转换模版ProcessTemplate.xtend
EMF中进程实例类(org.osate.aadl2)
ProcessSubcomponent(进程构件接口):
getProcessSubcomponentType()获取进程子构件类型
ProcessImplementation(进程实现构件):
getOwnedDataSubcomponents获取进程构件拥有的数据子构件,在生成代码中对应着单独TASK的本地变量
getOwnedSubprogramSubcomponents获取进程构件的子程序功能子构件,在生成代码中对应着一个可以随时被调用的子程序
getOwnedThreadSubcomponents获取进程构件的线程子构件
getOwnedThreadGroupSubcomponents获取线程子构件组
getType获取类型
线程转换模版ThreadTemplate.xtend
EMF中线程实例类(org.osate.aadl2)
ThreadSubcomponent(线程构件接口)
ThreadClassifier(线程分类器)
ThreadImplementation(线程实现构件类)
Name线程名
getOwnedDataSubcomponents获取数据子构件
getOwnedSubprogramSubcomponents获取子程序功能子构件
子程序转换模版SubprogramTemplate.xtend
EMF中子程序实例类(org.osate.aadl2)
CalledSubprogram被调用子程序类,是个抽象类
SubprogramImplementation子程序实例类,存储所有子程序功能内容
行为附件转换模版BaAnnexTemplate.xtend
DefaultAnnexSubclauseImpl默认附件子句实现
BehaviorAnnexImpl行为附件子句实现类
AnnexTemplate附件模板类
AnnexSwitch4head生成附件进程的头内容
AnnexSwitch将抽象附件转换为确定的附件,本工具中只有具体处理行为附件
BaAnnexTemplate行为附件模板类
数据构件转换模板DataTemplate.xtend
EMF中子程序实例类(org.osate.aadl2)
DataSubcomponent数据子构件接口
GetDataSubcomponentType()获取数据子构件类型
DataClassifier数据构件分类器
DataImplementation数据子构件实现类
特性转换模板FeatureTemplate.xtend
特性模板属于元素模板,每个构件属于某个类型构件类型的实现之一,而每种构件类型都会具有一系列特性,是对外部可见的端口、特性。
属性转换模板PropertyTemplate.xtend
这里的属性模板处理不仅会参照AADL默认属性集添加的属性值,还会处理通过自定义属性集实现的模型求精后模型内添加的属性值。
AADL允许利用属性集引入附加的属性和属性类型。如果需要为AADL模型添加信息,并且尚未说明是当前预先说明的或用户定义的属性的话,通过引入附加属性集是有效的。
PropertyAssociation属性集对象
Property属性对象
ModalPropertyValue属性值对象
PropertyExpression属性表达式抽象对象,对属性值实际表达
NamedValueImpl普通值变量对象
StringLiteralImpl字符串变量对象
ListValueImpl数组变量对象
getInclude(PropertyAssociation property)根据属性对象获取需要包含的文件
parseListValue(ListValueImpl value)顺序批量处理数组变量对象
parseNamedValue(AbstractNamedValue value)单独处理属性值
处理器转换模版ProcessorTemplate.xtend
EMF中处理器实例类(org.osate.aadl2)
ProcessorSubcomponent(处理器构件接口):
getProcessorSubcomponentType()获取处理器构件类型
setSystemSubcomponentType(SystemSubcomponentType)设置处理器构件类型,在本工具中并不会动态地改变模型,下面set方法将跳进;
ProcessorImplementation(处理器实例类)
name对应AADL中处理器名
eContainer拥有该构建的上层构建,它的是系统实例
Subcomponents该构件的所有子构件,主要是虚拟处理器构件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

Claims (4)

1.一种面向IMA的AADL模型自动生成C代码的方法,其特征在于:包括以下步骤:
S1:根据AADL构件与IMA元素的对应关系,采用AADL对IMA的软硬件架构进行表达,得到系统架构AADL模型;具体为:
通过AADL的软件构件对IMA的软件体系结构进行建模,具体为:
用AADL的System构件来表达IMA系统;
用AADL的Processor构件和Memory构件分别代表IMA的处理器和内存;
用AADL的Data Port和Event Data Port分别表示IMA的分区间通信的两种方式采样和队列;
用AADL的Process构件用于表达IMA分区的软件部分;
用AADL的Virtual Processor表达IMA的分区运行时的硬件部分;
用AADL的Thread表达IMA的任务;
IMA的分区内通信有四种方式包括缓冲区、黑板、信号量和事件,其中,缓冲区用同一进程内的Event Data Port表示,黑板用两个线程共享的Data表示,信号量用Data Access表示,事件用Event Port表示;
用AADL的Subprogram和BA用于表达IMA任务的功能行为;
通过AADL的硬件构件以及构件间的连接对IMA的硬件体系结构进行描述;
所述硬件构件包括处理器构件、虚拟处理器构件、存储器构件、外设构件、总线构件、虚拟总线构件;
通过AADL的复合构件组合所有的硬件构件和软件构件,建立得到系统架构AADL模型;
S2:对AADL的属性集进行拓展,创建得到MPM4IMA属性集,以支持基于BA、SIGNAL、SDL对系统架构AADL模型中的各构件功能行为进行表达,得到平台无关的AADL模型;
通过在所述MPM4IMA属性集中可定义新的属性、属性类型和属性常数,以支持基于BA、SIGNAL、SDL对任务的功能行为进行表达;
S3:采用IMA属性集对平台无关的AADL模型进行平台相关求精,生成平台相关的AADL模型;
S4:借助Xtend提供的模板功能对IMA与AADL的转换映射规则进行表达,得到转换模板;
S5:借助OSATE平台对平台相关的AADL模型的顶层系统进行实例化,得到代表该顶层系统的AAXL2文件;
S6:借助AAXL2文件和EMF代码解析得到SystemImpl对象;
S7:借助S4的转换模板对SystemImpl对象进行子系统遍历、进程遍历、其他构件遍历,遍历结束后生成与平台相关的AADL模型对应的C代码工程;
所述转换映射规则包括:
规则1:AADL简单的数据类型映射到C语言简单数据类型,数据标识符转化为相应的C语言变量标识符;
规则2:AADL数据结构映射为C语言的结构体,具体为:将数据构件名称、数据子构件名称和数据子构件类型映射为结构体名称、内部成员名称、内部成员类型;
规则3:AADL状态映射为C语言的枚举类型,并且给初始状态、当前状态赋值;
规则4:AADL变迁映射为switch-case结构,每个状态映射为一个case,每个变迁映射为一个if-else结构,变迁的条件守卫映射为if-else的条件判断部分,变迁的行为动作映射为if-else的操作部分;
规则5:SDL中系统转换为<系统名.c>和<系统名.h>文件,功能块转换为C语言中对应的子程序;SDL的声明的元素转换为C语言中的全局变量;SDL的局部声明的变量转换为C语言的局部变量;SDL的状态代码生成规则和AADL状态代码生成规则一致;
规则6:周期性任务的初始化子程序映射为APEX API对应的任务初始化子程序;
规则7:非周期性任务的初始化子程序映射为APEX API对应的任务初始化子程序;
规则8:针对一个AADL周期性构件,入口子程序用<线程实例名_period_jod>来命名,周期性线程的循环过程映射为入口子程序的while(1)循环,线程周期性等待映射为wait_next_period()子程序,并把它置于while循环的末尾;
规则9:针对一个AADL非周期性构件,入口子程序用<线程实例名_aperiodic_job>来命名,在端口捕获事件映射为wait_Dispatch()子程序;
规则10:IMA分区实体,包括分区ID、分区名、分区调度策略、任务总数、通信端口数,对应AADL的Partition_Identifier、Partition_Name、Scheduling_Protocol、线程总数、端口总数;
规则11:当前分区的调度周期、分区ID、当前分区的运行时长,对应AADL的Module_Schedule和Partition_Identifier属性;
规则12:采样通信对应AADL的Process构件间的Data Port通信;
规则13:队列通信对应AADL的Process构件间的Event Data Port通信;
规则14:分区表包含分区名、分区ID,以及每个分区里包含的端口的信息,对应AADL的PartitionName、PartitionID、PortName、Direction;
规则15:分区调度表包含一个主时间框架、分区名、分区ID、分区周期、分区持续时间、窗口开始的时间、窗口ID,分别对应AADL的Module_Schedule的四个属性、PartitionName、PartitionID;Module_Schedule的四个属性包括PeriodSeconds、PeriodDurationSeconds、WindowStartSeconds、WindowID;
规则16:通信表包含端口名称、端口所在分区名、端口方向,对应AADL的PortName,PartitionName和端口方向;
规则17:内存分配表包含分区名、分区ID、分区内存大小,对应AADL的PartitionName、PartitionID、Memory_requirement。
2.根据权利要求1所述的一种面向IMA的AADL模型自动生成C代码的方法,其特征在于:所述S3具体包括:
首先,在IMA属性集中添加平台相关属性;所述平台相关属性包括调度属性、分区通信属性和任务运行时属性;而后,通过手动求精的方式向平台无关的AADL模型中添加平台相关属性,得到平台相关的AADL模型。
3.根据权利要求1所述的一种面向IMA的AADL模型自动生成C代码的方法,其特征在于:所述转换模板包括系统转换模板、进程转换模板、线程转换模板、子程序转换模板、行为附件转换模板、数据构件转换模板、特性转换模板、属性转换模板以及处理器转换模板;
其中:系统转换模板SystemTemplate.xtend,对应EMF中系统实例类org.osate.aadl2,包括:SystemSubcomponent系统构件接口、getSystemSubcomponentType()获取系统构件类型、setSystemSubcomponentType(SystemSubcomponentType)设置系统构件类型、SystemImplementation系统实例类、name对应AADL中系统名、eContainer拥有该构建的上层构建且其最外层是package、Features该系统构件所属的系统类型的所有接口特性、Subcomponents该构件的所有子构件、Connections该系统构件配置的所有链接;
其中,进程转换模板ProcessTemplate.xtend,对应EMF中进程实例类org.osate.aadl2,包括:ProcessSubcomponent进程构件接口、getProcessSubcomponentType()获取进程子构件类型、ProcessImplementation进程实现构件、getOwnedDataSubcomponents获取进程构件拥有的数据子构件、getOwnedSubprogramSubcomponents获取进程构件的子程序功能子构件、getOwnedThreadSubcomponents获取进程构件的线程子构件、getOwnedThreadGroupSubcomponents获取线程子构件组、getType获取类型;
其中,线程转换模板ThreadTemplate.xtend,对应EMF中线程实例类org.osate.aadl2,包括ThreadSubcomponent线程构件接口、ThreadClassifier线程分类器、ThreadImplementation线程实现构件类、Name线程名、getOwnedDataSubcomponents获取数据子构件、getOwnedSubprogramSubcomponents获取子程序功能子构件;
其中,子程序转换模板SubprogramTemplate.xtend,对应EMF中子程序实例类org.osate.aadl2,包括:CalledSubprogram被调用子程序类、SubprogramImplementation子程序实例类;
其中,行为附件转换模板BaAnnexTemplate.xtend,包括:DefaultAnnexSubclauseImpl默认附件子句实现、BehaviorAnnexImpl行为附件子句实现类、AnnexTemplate附件模板类、AnnexSwitch4head生成附件进程的头内容、AnnexSwitch将抽象附件转换为确定的附件、BaAnnexTemplate行为附件模板类;
其中,数据构件转换模板DataTemplate.xtend,对应EMF中子程序实例类org.osate.aadl2,包括:DataSubcomponent数据子构件接口、GetDataSubcomponentType()获取数据子构件类型、DataClassifier数据构件分类器、DataImplementation数据子构件实现类;
其中,属性转换模板PropertyTemplate.xtend,包括:PropertyAssociation属性集对象、Property属性对象、ModalPropertyValue属性值对象、PropertyExpression属性表达式抽象对象、NamedValueImpl普通值变量对象、StringLiteralImpl字符串变量对象、ListValueImpl数组变量对象、getInclude(PropertyAssociation property)根据属性对象获取需要包含的文件、parseListValue(ListValueImpl value)顺序批量处理数组变量对象、parseNamedValue(AbstractNamedValue value)单独处理属性值;
其中,处理器转换模板ProcessorTemplate.xtend,对应EMF中处理器实例类org.osate.aadl2,包括:ProcessorSubcomponent处理器构件接口、getProcessorSubcomponentType()获取处理器构件类型、setSystemSubcomponentType(SystemSubcomponentType)设置处理器构件类型、ProcessorImplementation处理器实例类、name对应AADL中处理器名、eContainer拥有该构件 的上层构件、Subcomponents该构件的所有子构件。
4.根据权利要求1所述的一种面向IMA的AADL模型自动生成C代码的方法,其特征在于:所述MPM4IMA属性集模板的语法结构为:
Property set<property set name>is
[with<property set or package name>]
<property type declaration>
<property declaration>
<property constant declaration>
End<property set name>;
其中:
<property set or package name>为当前属性集模板应用到的其它属性集模板;
<property type declaration>为属性类型;
<property declaration>为属性定义;
<property constant declaration>为属性常数。
CN202010909187.2A 2020-09-02 2020-09-02 一种面向ima的aadl多范式建模及自动生成c代码的方法 Active CN112114801B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010909187.2A CN112114801B (zh) 2020-09-02 2020-09-02 一种面向ima的aadl多范式建模及自动生成c代码的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010909187.2A CN112114801B (zh) 2020-09-02 2020-09-02 一种面向ima的aadl多范式建模及自动生成c代码的方法

Publications (2)

Publication Number Publication Date
CN112114801A CN112114801A (zh) 2020-12-22
CN112114801B true CN112114801B (zh) 2021-11-16

Family

ID=73805531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010909187.2A Active CN112114801B (zh) 2020-09-02 2020-09-02 一种面向ima的aadl多范式建模及自动生成c代码的方法

Country Status (1)

Country Link
CN (1) CN112114801B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112764724B (zh) * 2021-01-21 2023-03-14 北京航空航天大学 基于模型的航电系统软件组件生成方法及装置
CN113282276B (zh) * 2021-05-11 2023-02-17 北京航空航天大学 一种模型的映射方法和装置
CN116166412A (zh) * 2021-11-25 2023-05-26 中兴通讯股份有限公司 系统资源分配代码的生成方法、装置、电子设备和介质
CN116048518B (zh) * 2022-11-14 2023-12-01 南京航空航天大学 一种面向天脉操作系统的综合化航空电子系统安全代码自动生成方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063369A (zh) * 2010-12-23 2011-05-18 西北工业大学 一种基于aadl模态时间自动机模型的嵌入式软件测试方法
CN104932905A (zh) * 2015-07-14 2015-09-23 北京神舟航天软件技术有限公司 一种aadl到c语言的代码自动生成方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9027001B2 (en) * 2012-07-10 2015-05-05 Honeywell International Inc. Systems and methods for verifying expression folding
KR20140145781A (ko) * 2013-06-14 2014-12-24 한국전자통신연구원 항공용 시스템 설정에 관한 사용자 인터페이스 제공 장치 및 그 방법
CN109558117B (zh) * 2018-10-19 2021-09-17 南京航空航天大学 面向航天应用的aadl模型求精及其支持的c代码自动生成方法
CN110263371B (zh) * 2019-05-13 2020-10-02 北京航空航天大学 基于aadl的ima动态重构过程配置路径生成方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063369A (zh) * 2010-12-23 2011-05-18 西北工业大学 一种基于aadl模态时间自动机模型的嵌入式软件测试方法
CN104932905A (zh) * 2015-07-14 2015-09-23 北京神舟航天软件技术有限公司 一种aadl到c语言的代码自动生成方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Ákos Horvath等.Hardware-software allocation specification of IMA systems for early simulation.《 Digital Avionics Systems Conference (DASC)》.2014,1-16页. *
Hierarchical behavior annex: towards an AADL functional specification extension;Jinmiao Xu等;《Proceedings of the 16th ACM-IEEE International Conference on Formal Methods and Models for System Design》;20181015;第88-89页 *
IMA分区间通信的一致性测试模型;周德新等;《计算机仿真》;20180215;第35卷(第2期);第43-48页 *
Virtual prototyping AADL architectures in a polychronous model of computation;Yue Ma等;《MEMOCODE "08: Proceedings of the Sixth ACM/IEEE International Conference on Formal Methods and Models for Co-Design》;20080601;第139-148页 *
基于AADL的综合航电系统资源配置安全性分析与验证;孙健;《中国优秀博硕士学位论文全文数据库(硕士)工程科技Ⅱ辑》;20170315;第C031-695页 *
基于限定自然语言需求模板的AADL模型生成方法;王飞等;《软件学报》;20180313;第2350-2370页 *

Also Published As

Publication number Publication date
CN112114801A (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
CN112114801B (zh) 一种面向ima的aadl多范式建模及自动生成c代码的方法
Nordstrom et al. Metamodeling-rapid design and evolution of domain-specific modeling environments
Wegner Concepts and paradigms of object-oriented programming
CN108196827B (zh) 非形式化需求规约模板到形式化设计模型的自动转换方法
Delange et al. Validate, simulate, and implement ARINC653 systems using the AADL
CN109558117B (zh) 面向航天应用的aadl模型求精及其支持的c代码自动生成方法
EP3156899A1 (en) System and method for providing and using meta-data in a dynamically typed array-based language
Gilles et al. Expressing and enforcing user-defined constraints of AADL models
CN110597498B (zh) AADL模型精化方法及其支持的Ada可执行代码自动生成方法
CN112988124B (zh) 多视图平台无关模型系统
Medvidovic Architecture-based specification-time software evolution
Hu et al. Template-based AADL automatic code generation
CN110717268B (zh) 一种基于face架构的可移植组件单元封装方法
Villar et al. Mega-modeling of complex, distributed, heterogeneous CPS systems
Yang et al. C2AADL_Reverse: A model-driven reverse engineering approach to development and verification of safety-critical software
CN111176658B (zh) 基于元对象机制的AADL到Simulink模型自动转换方法
CN116048518B (zh) 一种面向天脉操作系统的综合化航空电子系统安全代码自动生成方法
Thomas et al. Software real-time resource modeling
Stankovic VEST: A toolset for constructing and analyzing component based operating systems for embedded and real-time systems
Mzid et al. From real-time design model to RTOS-specific models: a model-driven methodology
Hugues et al. Leveraging Ada 2012 and SPARK 2014 for assessing generated code from AADL models
Navas et al. Reconciling run-time evolution and resource-constrained embedded systems through a component-based development framework
Gao et al. Formal Verification of MILS Partition Scheduling Module Using Layered Methods
Qiu et al. Research on Real-Time Software Development Approach.
Drießen Modularity by design for safety-critical software systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant