一种aadl到c语言的代码自动生成方法

文档序号:9217046阅读:2028来源:国知局
一种aadl到c语言的代码自动生成方法
【技术领域】
[0001] 本发明涉及软件开发工具,特别涉及一种AADL到C语言的代码自动生成方法。
【背景技术】
[0002] 基于模型的软件开发是继面向对象技术后,又一次软件设计理念和方法的跨越。 基于模型的软件开发思想是:将"模型"作为软件设计和开发的核心要素,通过模型清晰地 刻画软件系统的功能、性能和安全性等关键特征,准确描述系统的解决方案;通过形式化方 法对系统模型加以验证,以确保软件设计的正确性;通过模型驱动方法生成代码,以保证软 件设计与实现的一致性。
[0003] 2004年,美国汽车工程师协会SAE (society of automotive engineers)基于15 年的研宄和工业实践,提出嵌入式实时系统体系结构分析与设计语言AADL(architecture analysis&design language),提供了一种标准而又足够精确的方式设计与分析嵌入式实 时系统的软、硬件体系结构及功能与非功能性质。但是基于AADL进行嵌入式系统代码自动 生成非常具有挑战性,因为生成的代码要运行在不同的目标平台,满足各平台有不同的特 征,如软硬件体系结构、编程接口等。模型较为抽象地表达了在特定平台上各要素的组织方 式和特征,易于理解和验证,但与实现之间有语义鸿沟,给代码生成增加了负担,而且建模 语言的抽象语义不一定能够与目标平台匹配。
[0004] AADL模型到代码的自动生成,能够有助于提高嵌入式实时系统的软件开发的自动 化水平,缩短软件开发周期,减少人工写代码的工作量和编码过程中出错的可能性。目前欧 美模型驱动软件开发环境的代码自动生成主要支持Ada语言、Java语言的代码生成,面向 符合ANRINC 653规范的P0K操作系统、汽车行业标准的0SEK操作系统,各领域在使用AADL 进行代码生成时,需根据自身平台的运行时环境进行代码生成工具开发。我国航天领域广 泛采用SZ0S等嵌入式实时操作系统,但是尚未出现AADL到SZ0S等特定运行时环境的C语 言的代码自动生成方法。

【发明内容】

[0005] 发明目的:本发明针对上述现有技术存在的问题做出改进,即本发明公开了一种 AADL到C语言的代码自动生成方法,使用该方法可以面向特定运行时环境实现AADL到C语 言的代码自动生成。
[0006] 技术方案:一种AADL到C语言的代码自动生成方法,包括以下步骤:
[0007] 1)根据AADL元模型的语义、目标运行环境的语义和C语言语法语义定义AADL元 模型到C语言的转换规则;
[0008] 2)根据AADL模型能够获取的所使用的元模型及其语义、步骤1)得到的AADL元模 型到C语言的转换规则制定代码自动生成模板;
[0009] 3)根据步骤2)得到的代码自动生成模板编写模板转换引擎;
[0010] 4)输入AADL模型后,自动对输入的AADL模型解析,提取AADL元模型信息,按照步 骤2)中的代码自动生成模板,通过步骤3)得到的模板转换引擎将AADL元模型信息生成C语言代码。
[0011] 进一步地,步骤1)中AADL元模型到C语言的转换规则包括:
[0012] 11)4401数据类型8&%_17口6生成(:语言程序中的*.11头文件;
[0013] 12)系统构件不对应具体的可执行代码,仅将系统构件的功能接口转换为函数的 输入参数和输出参数,且将所定义的数据构件转换为C语言程序中的变量定义,系统构件 的名称作命名空间使用;
[0014] 13)线程构件、线程组构件以及子程序构件对应具体的可执行代码,线程构件、线 程组构件以及子程序构件均转换为C语言程序中的函数定义;线程构件的功能接口转换为 函数的输入参数和输出参数,线程组构件的功能接口转换为函数的输入参数和输出参数, 子程序构件的功能接口转换为函数的输入参数和输出参数,子程序构件定义中的数据构件 转换为局部变量定义;
[0015] 14)处理器构件中定义调度算法,调度算法转换为C语言程序中的函数定义;
[0016] 15)进程构件转换为C语言程序中的主函数,进程构件所包含的子构件之间的连 接关系转换为源端函数和目标端函数,并将进程构件所包含的子构件之间的连接名称转换 为变量定义,用于源端函数和目标端函数之间的数据传递;
[0017] 16)对于系统调用,需在AADL模型中进行定义。
[0018] 有益效果:本发明公开的一种AADL到C语言的代码自动生成方法具有以下有益效 果:
[0019] 1、详细描述了代码自动生成的实施步骤,为特定运行时环境实现AADL到C语言代 码自动生成提供解决方案;
[0020] 2、定义了AADL模型到C语言的转换规则,有效解决AADL与C语言语义映射;
[0021] 3、使用Xtend语言定义模板,并通过封装等方式提供灵活的模板操作;
[0022] 4、通过模板引擎提高代码转换效率。
【附图说明】
[0023] 图1为本发明公开的一种AADL到C语言的代码自动生成方法的流程图。
【具体实施方式】:
[0024] 下面对本发明的【具体实施方式】详细说明。
[0025] 如图1所示,一种AADL到C语言的代码自动生成方法,包括以下步骤:
[0026] 1)根据AADL元模型的语义、目标运行环境的语义和C语言语法语义定义AADL元 模型到C语言的转换规则;
[0027] 2)根据AADL模型能够获取的所使用的元模型及其语义、步骤1)得到的AADL元模 型到C语言的转换规则制定代码自动生成模板;
[0028] 3)根据步骤2)得到的代码自动生成模板编写模板转换引擎;
[0029] 4)输入AADL模型后,自动对输入的AADL模型解析,提取AADL元模型信息,按照步 骤2)中的代码自动生成模板,通过步骤3)得到的模板转换引擎将AADL元模型信息生成C 语言代码。
[0030] 下面对AADL元模型到C语言的转换规则、AADL元模型到C语言的转换规则制定 代码自动生成模板、模板转换引擎、模板解析分别进行说明:
[0031] 关于步骤1)中AADL元模型到C语言的转换规则的说明:
[0032] 生成运行于特定运行环境的C语言应用程序代码时,软件体系结构模型生成应用 软件代码框架,运行时模型则主要考虑调度算法,并生成相应的调度程序。
[0033] AADL语言通过自顶向下的方式对系统进行建模,一般可以分为四个层次:最高层 为系统构件,对应一个系统或子系统;一个系统构件包括多个进程构件及连接(用于表达 任务执行的虚拟地址空间)、处理器构件(用于表达调度)以及其它硬件构件(如外设构 件、存储构件、总线构件等);一个进程构件代表任务的虚拟地址空间,可以执行多个线程 构件或线程组构件及连接(用于表达任务及任务之间的通信),一个线程可以访问子程序 构件,多个线程可以共享访问一个数据构件;线程构件、子程序构件的内部行为可以用行为 附件来表达,用户也可以直接给出源代码。
[0034] AADL元模型到C语言的转换规则如下:
[0035] 步骤1)中AADL元模型到C语言的转换规则包括:
[0036] 11)AADL数据类型Base_Type生成C语言程序中的h头文件;
[0037] 12)系统构件不对应具体的可执行代码,仅将系统构件的功能接口转换为函数的 输入参数和输出参数,且将所定义的数据构件转换为C语言程序中的变量定义,系统构件 的名称作命名空间使用;
[0038] 13)线程构件、线程组构件以及子程序构件对应具体的可执行代码,线程构件、线 程组构
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1