收稿日期: 2011唱05唱15 修回日期: 2011唱06唱26 基金项目: 核高基资助项目(2009ZX01045唱005唱002) ;总装备部“十二五” 某预研项目
作者简介: 朱江(1987唱) ,男,江苏泰州人,硕士研究生,主要研究方向为软件工程、软件测试( zhujiang2005.com@163.com) ;张 茂 林(1959唱),
男,副教授,主要研究方向为软件工程、软件测试.
AADL 构 件 到 RTLinux 平 台 C 代 码 的 转 换 方 法 研 究
倡
朱 江, 张茂林
(北京航空航天大学 计算机学院, 北京 100191)
摘 要: 为了提高嵌入式软件开发的自动化程度,代码自动生成是一种值得采用的有效方法。 在研究体系结构
分析与设计语言(AADL)和 RTLinux( real唱time Linux) 平台 C 代码的特性的基础上,提出了 AADL 构件到 RTLinux
平台 C 代码的转换规则;然后用一个实例实现了代码自动生成,从而验证了转换规则的有效性。
关键词: 体系结构分析与设计语言; 构件; 转换规则; 代码自动生成
中图分类号: TP311 文献标志码: A 文章编号: 1001唱3695(2011)12唱4613唱03
doi:10.3969 /j.issn.1001唱3695.2011.12.055
Research of transformation method from AADL
components to C code in platform of RTLinux
ZHU Jiang, ZHANG Mao唱lin
( School of Computer, Beihang University, Beijing 100191, China)
Abstract: In order to increase the degree of automation of the development of embedded software,code generation technology
is worthy of using and is an effective method.After researching the characteristics of AADL and C code in the platform of
RTLinux(real唱time Linux),this paper gave a group of transformation rules from the components of AADL to C code in the plat唱
form of RTLinux.Then an instance was shown to implement the code generation.So it proves the effectiveness of the transforma唱
tion rules.
Key words: AADL(architecture analysis and design language);component; transformation rules; code generation
嵌入式系统广泛应用于航空电子、航天器、汽车控制等领
域。 随着嵌入式系统规模和复杂程度的提高,开发时间和开发
费用也在不断增长,开发过程日趋繁琐、复杂且易出错。 对象
管理组织 OMG(Object Management Group) 提出的模型驱动架
构 MDA(model driven architecture)是一种用来解决该问题的有
效方法。 MDA 与传统的软件开发方法不同,它以模型为中心,
可以对软件进行设计、验证、代码生成、维护和升级,使得开发
人员把注意力转移到模型上,而无须过早地陷入具体的实现细
节当中
[1]
。 2004 年,美国汽车工程师协会 SAE( Society of Au唱
tomotive Engineers)提出了一种基于 MDA 方法的针对安全关键
嵌入式实时系统 的软 /硬件 分析和 设计的建模语 言 AADL。
AADL 可以详细描述嵌入式系统性能相关的属性,如可靠性、
有效性、时间性、响应性、吞吐量、安全性。
1 RTLinux 平台 C 代码的特性
RTLinux 是源代码开放的具有硬实时特性的多任务操作
系统。 它充分利用了 Linux 的系统服务,因此适合于需要比较
复杂的系统服务、对时间有严格要求的应用领域,如航空航天、
科学研究、机器人技术等
[2]
。
本文所使用的是 RTLinux 3.2 版本。 在 RTLinux 中,实时
程序以模块的形式装载入 Linux 内核空间运行。 实时程序模
块是用 gcc 唱c 命令编译生成的目标文件。 实时程序中没有普
通 C 程序中必有的入口函数 main,但是必须有 int init_module
()和 void cleanup_module( )这两个函数。 前者在模块第一次
加载进内核时被调用;后者在模块被卸载时被调用。 RTLinux
中有其特有的一些 API,支持 POSIX 1003.13 标准。
2 AADL 构件到 C 代码的转换规则
AADL 定义了三类构件
[3]
:a) 软件构件,用于软件体系结
构建模,主要包括进程(process)、线程(thread)、线程组(thread
group)、子程序(subprogram)、数据(data) 构件;b) 执行平台构
件,用于硬件体系结构建模,主要包括处理器(processor)、存储
器(memory)、总线(bus)、外设(device)构件;c)系统构件,组合
所有的构件,层次化地建立系统的体系结构。 除此以外,AADL
还不断地发展出一些附件,如行为附件( behavioral annex)、故
障模型附件(error model annex)等。 本文主要针对 AADL 的系
统构件、进程构件、线程构件、子程序构件、行为附件构件、数据
构件,建立其到 RTLinux 上的 C 代码的转换规则。
2畅1 系统构件转换
AADL 系统构件的描述如下:
system 系统类型名
end 系统类型名;
system implementation 系统类型名.系统实现名
end 系统类型名.系统实现名;
规则 1 系统构件在 C 语言中对应生成一个名为系统类
型名_系统实现名的文件夹。
2畅2 进程构件转换
AADL 进程构件描述如下:
process 进程类型名
end 进程类型名
process implementation 进程类型名.进程实现名
subcomponents
第 28 卷第 12 期
2011 年 12 月
计 算 机 应 用 研 究
Application Research of Computers
Vol.28 No.12
Dec.2011