收稿日期
:
-
01
-
02
收修改稿日期
:
-
02
-
01
基金项目
:
国家自然科学基金项目
(51405270)
资助
.
作者简介
:
陈
攀
,
男
,1991
年
生
,
硕士研究生
,
研究方向汽车电子
;
张承瑞
,
男
,1957
年生
,
博士
,
教授
,
研究方向数字智能制造理论和系统
、
汽车电控系统等
;
罗
映
,
男
,1980
年生
,
硕士
,
讲师
,
研究方向汽车电子
.
利用
MATLAB
/
RTW
的嵌入式代码自动生成与整合
陈
攀
1
,
张承瑞
1
,
罗
映
2
1
(
山东大学
机械工程国家级实验教学示范中心
,
济南
250061)
2
(
山东建筑大学
机电工程学院
,
济南
250101)
:
sduchenpan
@
163
.
com
摘
要
:
自动代码生成技术是基于模型的开发的重要技术
,
也是
V
流程设计的重要组成部分
,
利用
MATLAB
生成代码的方式
最为普遍
.
为满足开发的不同需求
,
往往需要设计代码生成的过程
.
而对
MATLAB
工具的代码生成过程控制不够常常会导致
生成代码不如预期
,
生成代码需要手动整合等问题
.
借助
MATLAB
/
RTW
工具
,
然后利用
MATLAB
的
ActiveX
,
通过
COM
接口
执行编译器命令
,
可摆脱手动整合的麻烦
,
同时实现底层驱动代码与应用代码的整合
,
自动代码生成和一键下载
.
关
键
词
:
V
流程
;
COM
;
MATLAB
/
RTW
;
驱动代码
;
自动代码生成
中图分类号
:
TP
391
文献标识码
:
A
文
章
编
号
:
1000
-
1220
(
)
04
-
0738
-
04
Automatic
Generation
and
Integration
of
Embedded
Code
with
MATLAB
/
RTW
CHEN
Pan
1
,
ZHANG
Cheng-rui
1
,
LUO
Ying
2
1
(
National
Demonstration
Center
for
Experimental
Mechanical
Engineering
Education
,
Shandong
University
,
Jinan
250061
,
China
)
2
(
School
of
Mechanical
and
Electrical
Engineering
,
Shandong
Jianzhu
University
,
Jinan
250101
,
China
)
Abstract
:
Automatic
code
generation
technology
is
the
key
technology
based
on
model
development
and
also
an
important
part
of
V-
flow
design.
The
way
to
generate
code
by
MATLAB
is
the
most
common.
To
meet
the
special
needs
of
development
,
it
is
often
neces-
sary
to
complete
the
design
of
the
build
process.
However
,
insufficient
control
of
code
generation
process
of
MATLAB
often
leads
to
problems
such
as
poor
code
generation
and
manual
integration
of
generated
code.
With
MATLAB
/
RTW
tools
,
the
MATLAB
Ac-
tiveX
,
and
compiler
commands
through
the
COM
interface
,
the
trouble
of
manual
integration
can
be
gotten
rid
of
,
while
achieving
con-
trol
of
the
underlying
driver
code
,
application
code
integration
,
automatic
code
generation
and
one-click
download.
Key
words
:
V-flow
;
COM
;
MATLAB
/
RTW
;
driver
code
;
automatic
code
generation
1
引
言
随着软
件
工
具
的
发
展
,
自
动
代
码
生
成
技
术
在
工
业
控
制
[1]
、
汽车电子
[2]
、
航天和导弹制导
[3]
等领域得到广泛的应
用
.
自动代码生成相比于手工编程
,
能够减少偶然的
bug
,
减
少重复劳动的时间
,
提高嵌入式系统的可靠性
[4]
.
在
MAT-
LAB
/
Simulink
下
,8051、
飞思
卡
尔
DSP
563
XX
、
英
飞
凌
C
166
和
ARM
系列等芯片都有对应的
toolbox
支持
,
在创建
MAT-
LAB
/
Simulink
模型后
,
通过
RTW
工具
,
可直接生成控制代
码
.
而外围器件选型或布置等设计变化可能导致用户不能直
接通过工具生成代码
.
为了满足不同项目的嵌入式控制器的
设计需求
,
需要
根
据
MATLAB
/
Simulink
和
RTW
的
工
作
原
理
,
结合实际需求设计代码生成工具
,
进而使代码的生成符合
预期
,
同时提高代码质量
.
本文从
RTW
的工作原理出发
,
以
飞思卡尔
S
12
X
系列单片机为例
,
利用
COM
技术连接
MAT-
LAB
/
Simulink
与
CodeWarrior
IDE
,
整合驱动层与应用层
,
最
后实现自动代码生成
,
并且代码无需手动修改
,
能够直接下载
到目标板上
.
2
MATLAB
/
RTW
与代码生成
RTW
(
Real-Time
Workshop
)
是基于
Simulink
的代码自动
生成环境
.
Simulink
软件生成一个包含框图执行语义的高级
表示文件
—
—
—
model.
rtw
文件
.
model.
rtw
文件是一个
ASCII
格式数据库
,
其中的内容描述了
Simulink
模型中的各个块的
包括属性名称和属性值等
.
目标语言编译器
(
TLC
)
读取
mod-
el.
rtw
文件并将其转换为内部表示
,
并根据其他模块
TLC
文
件等修改最初的
model.
rtw
文件
.
在
RTW
下能直接从
Simu-
link
的模型中产生优化的
、
可移植的和个性的代码
,
并根据目
标配置自动生成多种环境下的程序
[5]
.
RTW
环境下的代码生
成过程有如下四个部分
:
1)
RTW
读取模型文件
model.
mdl
,
生成模型的描述文件
model.
rtw
,
该文件以
ASCII
码存储
;
2)
TLC
读取
model.
rtw
,
并根据的系统
TLC
与模块
TLC
文件
,
生成指定目标的代码
,
如
ANSI
C
/
C
+
+
代码
;
3)
RTW
代码生成器根据给定的模型
,
将
makefile
模板
生成具体的
makefile
文件
(
model.
mk
),