微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Matlab/RTW EC面向MC9S12D64的自动代码生成

Matlab/RTW EC面向MC9S12D64的自动代码生成

时间:09-12 来源:互联网 点击:

ghtsCtr.h、LightsCtr_private.h、LightsCtr_types.h、LightsCtr_private.h、rt wty pes.h等6个文件。其中,ert_main.c提供了算法函数调用的样例程序,它包括main()、rt_OneStep()函数。LightsCtr.c包含了Lights Ct rinitialize()、LightsCtrstep()、LightsCtr_terminate()函数,是整个模型的算法实现代码。

3 应用层底层代码集成

Matlab/RTW EC生成的应用层代码和特定芯片的驱动代码集成目前主要有两种方式:一种方式是在建模过程中,将驱动程序封装为S函数模块,代码自动生成的过程中建立相应芯片的TLC模板文件,实现一键从模型到编泽代码下载到控制器芯片中。第二种方式是在集成开发环境(Integrated Development Environment,IDE)中手工进行代码集成。

在产品化的项目开发中,采用第一种方式集成代码,需要对底层驱动建模,存在以下的困难:①底层驱动在Simulink环境下不能仿真;②底层驱动建模需要熟悉TLC脚本语言;③产品化项目的底层软件往往很大,开发一个安全、可靠的底层模块库,针对特定的目标板定制TLC文件等,都需要大量的时间投入,不易操作。

从项目开发的角度考虑,一般的项目多是采用第二种方式,也就是先进行产品化代码生成然后手工进行代码集成,节省了“目标板模型化”的成本和时间,有利于项目代码文件的管理与维护,而且问题追溯和代码调整也更为方便和灵活。

基于上述考虑,本文采用将自动生成的代码在CodeWarrior中进行手工代码集成,在crt_main.c中添加必要的与硬件相关的代码,例如头文件、中断服务程序、硬件初始化代码、算法与硬件接口代码、循环语句等。集成后的ert_main.c源代码如下:

将集成后的代码通过inDART-one在我校开发的汽车电子技术实验系统上进行了测试,实现了预期LED灯顺时针明灯流动,验证了整个开发流程的可行性。

结语

本文建立了LED流水灯的Simulink控制模型,使用Matlab/RTW EC将该控制模型生成嵌入式C代码,并将自动生成的C代码与Freescale MC9S12D64单片机底层代码进行了集成和测试,得到了预期的LED灯控制效果。这种基于模型的开发方式以及自动代码生成技术使得控制算法具有更高的可移植性、更快的开发迭代速度,从而能够大大地提升电子控制系统的开发效率,降低开发成本。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top