4 基于模型开发的集成环境
4.1 Matlab工具特点
传统的软件开发模式如图8所示,直接在嵌入式芯片上进行算法的设计验证,存在着开发周期长、调试环境不友好等各方面的问题。
而新兴的开发模式如图9所示。借助Matlab仿真工具(Simulink/Stateflow),首先在仿真环境下进行算法的仿真、验证,然后再利用其RTW及Embedded Coder直接将算法模型生成C语言代码,所见即所得,快速、便捷、可靠,本论文也是利用此工具进行实现。将车身控制器所需的底层驱动、I/O输入输出、总线接口通信等接口代码封装成Simulink下面的模型库,可以直接将算法模型和驱动模型连接,为最终产品代码的生成做准备。
4.2软件总体框架
车身控制器的软件总体框架如图10所示,标准通用模块需要供应商开发并封装成Simulink模型库,应用层软件进行设计由整车厂工程师完成,BootLoader音仔分是实现烧录入车身控制器底层的引导程序,主要负责在上位机生成可执行代码之后,通过Bootloader可以将代码引导入车身控制器内部存储器上,从而实现最新应用代码的更新。
5 软件开发环境设计实现
本文的主要工作就是实现车身控制器各个底层驱动模块程序的设计及封装,然后完成和CPtJ-MPC5604B编译器的链接,直接实现可执行代码的生成。
5.1 I/O模块的封装
GPIO模块,是CPU底层驱动的基本模块。根据功能使用的不同,划分为3个类别。①Digital Input模块:主要用于MCU管脚作为普通I/O功能的输入状态的采集;2;Digitaloutput模块:主要用于MCU管脚作为普通I/O功能输出状态的控制;(3)PWM Output模块:主要用于MCU管脚配置为EMIOS功能且作为PWM输出功能的控制。
在Simulink中封装接口示例如图11所示。
双击点开GUI配置参数界面如图12所示,可以设置输入、输出、PWM等配置参数,从而实现不同的应用选型。
5.2 AD采集模块封装
AD采集模块主要负责采集模拟量开关或是模拟量传感器信号,其Simulink模型示例如图13所示。
把ADC GetValue模块拖到目标模型中,双击打开ADCGetValue模块的配置界面,在Channel项选择目标通道,即可完成不同通道信号采集的设置,如图14所示。