Matlab/RTW EC面向MC9S12D64的自动代码生成
摘要:传统的电控软件开发模式已无法满足日益庞大、复杂的汽车电控系统的开发要求,基于模型的开发方法以及自动代码生成技术在汽车嵌入式软件开发中得到越来越广泛的应用。本文介绍使用Matlab/Real-Time Workshop Embedded Coder(Matlab/RTW EC)将Simulink控制模型生成C代码以及生成代码与Freescale MC9S12D64单片机底层代码的集成方法,通过测试验证了生成代码的有效性。
引言
随着汽车电子控制系统的日益复杂化,以及用户对产品安全性、可靠性的要求,嵌入式应用的开发难度与代码量都在迅速增加。目前,一台中高档汽车的软件控制代码就超过了500万行,通用雪佛兰Volt整车的代码量超过1 000万行,而一辆功能先进的医疗急救车甚至需要超过5 000万行的软件代码,而且随着设计内容的增加、多变的新特征、模糊的设计参数以及用户不断增加的需求,程序员的劳动量大大增加,传统的手工编程方式越来越不能适应现代汽车电控系统的设计开发要求。
Matlab/Real-Time Workshop Embedded Coder(Matlab/RTW EC)是MathWorks公司提供的嵌入式代码自动生成工具,它能够快速地将Matlab/Simulink控制器模型自动生成优化的、可移植的产品级C代码,并根据特定的目标配置自动生成嵌入式系统实时应用程序,从而大大减轻软件工程师的工作量,缩短嵌入式系统的开发周期,提高开发效率。本文以Freescale MC9S12D64单片机为目标芯片,说明从Simulink控制模型生成目标嵌入式代码的方法。
1 基于模型的设计
基于模型的设计是利用计算机建模仿真技术,快速完成嵌入式产品等产品开发过程中核心算法的开发和验证工作,利用自动代码生成技术快速完成产品开发中的逻辑功能、处理算法的实现,同时利用模型的方法构造出被控对象,方便、快捷、大量重复地进行产品控制效果的验证工作。相比于传统的开发模式,基于模型的设计开发流程具有以下一些优点:
①在统一的开发测试平台上,让设计从需求分析阶段就开始验证与确认,并做到持续不断地验证与测试,让设计的缺陷尽量暴露在开发的初级阶段。
②让工程师把主要精力放在算法和测试用例的研究上,嵌入式C代码的生成与验证留给计算机去自动完成。
③模型的复用性好,易于维护和移植。
④大大缩短开发周期并降低开发成本。
![](../img/eep/emb/emb-51008dploibjvf4a.jpg)
图1为基于模型的设计开发流程。在基于模型的设计方法中,系统工程师首先要建立一个系统模型来精确、无歧义地描述用户的需求,创建一个可执行、可跟踪的技术规范,并在系统模型与需求之间建立双向链接。在整个开发过程中,工程师利用测试用例追踪系统级模型和需求,了解系统模型的功能覆盖度。这些测试通常包括以下三种:
①软件在环测试(Software-in-the-Loop,SIL)是对模型生成的代码或者手写代码进行非实时仿真,目的是为了验证生成的代码和模型在功能上的等效性。
②处理器在环测试(Processor-in-the-Loop,PIL)是将自动生成的C代码下载到目标处理器中,与被控对象一起进行非实时的联合仿真,目的是为了测量模型生成的代码在目标处理器上的运行时间,即检查运行速度和资源消耗。
③硬件在环测试(Hardware-in-the-Loop,HIL)是把被控对象的模型生成C代码并编译成可执行的文件放到工控机上运行,然后把控制器和工控机通过线|连接,实现闭环控制,检查整个系统功能。
显然,算法的实现是联系系统模型和在环测试验证的重要纽带,这其中所涉及的代码自动生成技术是基于模型开发方法的关键技术之一。自动代码生成的基本流程包括:运行Model Advisor进行模型检查、配置代码生成选项、生成代码、检查生成的代码及报告以及测试生成的代码等5个环节。
![](../img/eep/emb/emb-51009cyurycn3kjm.jpg)
生成代码的过程如图2所示。用户在Matlab/Simulink/Stateflow建立的算法模型经过Simulink编译器生成rtw中间文件;rtw文件是一个描述整个模型的结构体文本,包含模型中的参数、变量、模块名称以及为代码生成所做的各种配置,rtw文件经过目标语言编译器(Target Lang uage Compiler,TLC)生成C语言代码,最后通过C编译器得到最终的可执行程序。
2 流水灯模型建立及嵌入式代码生成
流水灯Simulink功能验证模型,通过设置脉冲发生函数的周期和占空比,使LED灯按照一定的时间间隔顺时针方向轮流点亮。示意图略一一编者注。
将流水灯功能验证模型中的脉冲生成器和Goto模块分别使用In、Out模块替换后得到的自动代码生成模型如图3所示。
![](../img/eep/emb/emb-51010g32ta0pl50g.jpg)
在Configuration Parameters中对代码生成过程进行相关的配置并指定变量的数据类型后,Matlab/RTW EC依据上述的流水灯控制模型自动生成了ert_ main.c、LightsCtr.c、Li
嵌入式系统 基于模型设计 代码生成 RTW EC 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- WinCE下光电编码器的驱动程序设计(04-12)
- 为什么嵌入式开发人员要使用FPGA(05-13)
- VxWorks几种常用的延时方法介绍(05-16)