APP下载

MATLAB嵌入式软件开发

2020-02-02陈高辉张剑锋林潇付杰霖

电子技术与软件工程 2020年17期
关键词:程序开发仿真器嵌入式软件

陈高辉 张剑锋 林潇 付杰霖

(吉利汽车研究院(宁波)有限公司 浙江省宁波市 315336)

DSP(Digital Signal Processing)是一门以数字方式表示并处理模拟信号的理论和技术,它涉及许多学科并且广泛应用于许多领域。传统的DSP 软件开发需要开发者熟悉硬件构架、原理和算法,理解DSP 厂商提供的底层各类驱动的接口,在编译环境中逐行编辑代码,程序开发周期长,算法难于实现。

本文介绍一种基于MATLAB 的嵌入式软件开发方式,利用MATLAB 强大的建模仿真功能和丰富的数学函数库,在Simulink平台下搭建控制模型,编程过程采用图形化编辑,只需要配置不同模块的参数即可完成整个系统的建立,MATLAB 利用代码生成工具可自动生成目标代码。基于MATLAB 的嵌入式软件开发是集概念设计、目标代码生成、仿真、调试和运行于一体的快捷高效方式,使开发者彻底摆脱底层代码的困扰,专注于应用逻辑的实现、算法的研究和技术的突破。

1 开发工具

1.1 CCS简介

CCS(Code Composer Studio,代码调试器)是TI(Texas Instruments,德州仪器)推出的一套嵌入式软件集成开发环境,可用于开发和调试基于TI 芯片的嵌入式软件。它包含TI 器件系列的项目构建环境、源代码编辑器、编译器、调试器、仿真器和实时操作系统等,支持TI 主流DSP 芯片及各类型软件仿真器和硬件仿真器。在基于TI 的MCU 和DSP 嵌入式软件开发过程中,CCS 是一款应用十分广泛的开发工具。

1.2 MATLAB简介

MATLAB(MATrixLABoratory)是一款专业数学软件。开发环境、数学函数库、图形处理系统、M 语言和应用程序接口是MATLAB的五大构成部分。MATLAB 是一个非常实用且功能强大的系统,它将数值计算、图形管理、程序开发等融为一体,在控制设计、信号分析与处理等领域有十分广阔的应用。

在嵌入式软件开发过程中,使用MATLAB 的Simulink 工具进行应用程序开发,能够使开发者脱离底层硬件的束缚,专注于逻辑功能的实现。并且,Simulink 的图形开发环境能够提供更直观的逻辑实现视图,在Simulink 中直接调用对应的功能模块,大幅缩短了开发时间。

2 MATLAB与CCS联合开发

MATLAB 与CCS 的联合是基于MATLAB 应用程序接口支持CCS 的IDE LINK。MATLAB 的代码生成工具Embedded Coder在MATLAB 和CCS 的处理器之间提供了一种连接,可以利用MATLAB 强大的数值计算功能去控制一个信号处理应用程序,也可以通过创建MATLAB 脚本文件或者调用函数文件验证需要在目标芯片中执行的算法。在MATLAB 中设计需求对象的控制模型,调用对应的功能模块,将生成的代码导入CCS 进行集成,具体实现方式如下。

图1:目标芯片参数配置

图2:MATLAB 模型设计

2.1 环境参数配置

为了让Embedded Coder 生成的目标代码移植到CCS 中能够识别目标板和仿真器,需要在CCS 中创建一个.ccxml 格式的目标配置文件,目标芯片和仿真器型号在这个文件中选择。应用程序的编译顺序和链接规则需要在MATLAB 中指定,以保证生成的目标代码在CCS 或MATLAB 环境下都能够执行。在MATLAB 的命令窗口输入xmakefilesetup,在XMakefile 用户配置界面,配置子菜单编译器、链接器、函数库及工具路径,完成上述参数配置后,即可完成MATLAB 和CCS 的无缝对接。

图3:电机母线电流曲线

2.2 模型构造与设计

在模型设计之前,需要根据硬件原理图确定嵌入式应用程序的处理器。Simulink 平台中的工具箱Embedded Coder 只支持TI 的C2000,C5000,C6000 三个系列的部分芯片,目标芯片须在这个范围内选择。在Simulink 平台下创建模型,将Target Preference 添加到模型中,在Target Preference 参数配置界面,可以选择目标芯片及系统时钟,同时也可以完成芯片的内存管理和外设配置。确定目标芯片后,需要实现芯片的不同功能,TI 芯片的功能在MATLAB中以不同的模块形式表现,在建模过程中,将需要使用的模块添加到模型中,根据应用程序需要实现的功能配置各个模块的参数。通过实线或CPU 内部逻辑可以完成模块间的连接。在建立复杂模型时,可以嵌套子系统,可以灵活实现不同的功能,而且使得系统的层级更清晰。目标芯片参数配置如图1所示。

2.3 生成目标代码

在系统模型设计完成后,直接编译模型工程,代码生成工具Embedded Coder 将在工程路径下自动生成工程的.cmd 文件、.c 文件和.h 文件。工程编译完成后,可以在工程的当前文件下查看已生成的目标文件,MATLAB 生成的.c、.h 以及cmd 文件可以被导入到CCS 中集成,以生成最终的可执行文件。

2.4 执行和验证

Embedded Coder 生成的目标代码有两种执行方式。第一种方式是将这些代码移植到CCS 中执行。先在CCS 开发环境建立一个空白的软件工程,将Simulink 生成的目标文件(cmd、.c 及.h)移植到该空白工程中,在CCS 环境下编译、调试和运行。这种方式可以充分利用CCS 的集成开发环境进行程序的调试,可以利用CCS 的变量窗口、反汇编窗口、断点工具、内存管理工具等实时调试MATLAB 生产的目标代码,非常方便开发者判断程序的变量是否符合既定要求以及程序运行结果的正确性,这种方式充分融合了MATLAB 生成目标代码的快捷性与CCS 调试程序的高效性。

第二种方式目标代码直接在MATLAB 环境下执行,工程编译完成后,连接仿真器,Simulink 自动执行已生成的目标代码,可以在硬件电路板上看到程序执行的结果。这种方式程序的编辑、链接和执行都是在MATLAB 环境下完成。程序开发过程中不需要启动CCS,在调试程序过程需要多次修改参数时,可以避免每次修改参数后都需要将MATLAB 生成的目标代码移植到CCS 中的繁琐过程。

3 电机驱动应用实例

3.1 模型设计

根据上文阐述,基于TMS320F28035 芯片,在MATLAB 中开发一个直流有刷电机驱动程序,采用开环控制方式,在Simulink平台下建立模型,采用正弦波激励信号,通过PWM(Pulse With Module,脉冲宽度调制)控制电机输入电压的幅值,AD 模块采集电机母线电流,通过CAN(Controller Area Network,控制器局域网)将电机母线电流传输到上位机,通过上位机软件实时监测电机的电流曲线,如图2所示。

3.2 运行结果分析

通过仿真器连接硬件电路板,选择在MATLAB 环境下执行已设计的程序。程序执行后,在MATLAB 工程的文件夹下可以看到生成的目标代码,检测目标板输出的电压,电压波形的幅值、频率及占空比符合设计目标值,通过上位机软件观测电机的线电流曲线,如图3所示,与输入的正弦函数趋势基本一致,幅值符合预期值。这充分说明了程序的正确性以及在MATLAB 环境下进行嵌入式程序开发的可行性与可靠性。

4 结束语

基于MATLAB 的嵌入式应用软件开发,充分体现了在Simulink 平台下建模和生成代码的快捷性和高可靠性。在搭建初始化环境后,建模过程只需配置不同功能模块的参数即可完成程序设计,大幅提高了编程的效率;系统设计采用图形化编程,各个模块、信号流之间的逻辑关系一目了然,便于理解,不容易出错;在MATLAB 中建立目标模型可以利用其强大的仿真功能帮助检查系统的正确性,这是CCS 所不具备的优点。

总之,在满足一定的应用环境下,MATLAB 与CCS 联合编程进行嵌入式系统开发,是一种不同于传统嵌入式软件开发的高效可靠的编程方法。

猜你喜欢

程序开发仿真器嵌入式软件
AI仿真器将大大提高科学领域的仿真模拟速度
APP应用程序开发模式探究
基于TestStand的自动检测程序开发
实时嵌入式软件的测试技术
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于嵌入式系统Windows CE的应用程序开发
基于App inventor 2手机程序开发过程的学习与实——以“喵喵定时器”APP开发为例
基于多线程的惯导逻辑仿真器设计
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制