请选择 进入手机版 | 继续访问电脑版
查看: 231|回复: 3

[单片机资料] 使用Matlab+Simulink开发Cortex-M系列嵌入式处理器应用程序

[复制链接]

签到天数: 411 天

[LV.9]元老将成

发表于 2018-8-7 21:26:23 | 显示全部楼层 |阅读模式
本帖最后由 小马哥-1650185 于 2018-8-16 20:48 编辑

1 总述

Matlab为嵌入式处理器应用程序的开发提供了强大的功能,包括Embedded Coder代码生成、Simulink模型转换,Processor-In-the-Loop(PIL)处理器闭环开发等。同时提供了硬件支持包Embedded Coder Support Package for ARM Cortex-M Processors以及DSP System Toolbox Support Package for ARM Cortex-M Processors,并根据流行的开发板提供了对STM32-Discovery、FRDM-K64F以及QEMU模拟器等的硬件支持包。


本文主要通过Matlab相应的支持包提供的范例,学习基于Matlab+Simulink开发Cortex-M系列嵌入式处理器的应用程序的开发流程,记录学习笔记

2 ARM Cortex-M处理器的Ecoder支持包学习

Embedded Coder Support Package for ARM Cortex-M Processors提供了多个范例来演示学习如何使用Matlab+Simulink来开发ARM Cortex-M嵌入式处理器的应用程序。

2.1 ARM Cortex-M处理器的Ecoder支持包范例学习2.1.1 arm_cortex_m_gettingstarted范例学习

该范例建立一个最简单的Simulink模型,然后完成针对ARM Cortex-M处理器开发的设置,生成代码,最后运行在QEMU模拟器中。

使用Simulink打开arm_cortex_m_gettingstarted范例,设置后编译并运行。


模型生成的代码如下:

  1. <font color="#000000" size="3">/* Model step function */

  2. void arm_cortex_m_gettingstarted_step(void)

  3. {

  4. /* Outport: '<Root>/Out1' incorporates:

  5.    *  Constant: '<Root>/Constant'

  6.    *  Gain: '<Root>/Gain'

  7.    */

  8.   arm_cortex_m_gettingstarted_Y.Out1 = arm_cortex_m_gettingstarted_P.Gain_Gain *

  9.     arm_cortex_m_gettingstarted_P.Constant_Value;

  10. }

  11. /* Model initialize function */

  12. void arm_cortex_m_gettingstarted_initialize(void)

  13. {

  14. /* Registration code */

  15. /* initialize error status */

  16.   rtmSetErrorStatus(arm_cortex_m_gettingstarted_M, (NULL));

  17. /* external outputs */

  18.   arm_cortex_m_gettingstarted_Y.Out1 = 0.0;

  19. }

  20. /* Model terminate function */

  21. void arm_cortex_m_gettingstarted_terminate(void)

  22. {

  23. /* (no terminate code required) */

  24. }</font>
复制代码

停止使用QEMU仿真运行Matlab模型命令为:codertarget.arm_cortex_m.stopQemu

2.1.2 arm_cortex_m_pil_block范例学习

arm_cortex_m_pil_block范例模型演示了如何使用PIL,即通过PC软件仿真和硬件处理器仿真进行两者的闭环控制,可以直接对比PC仿真与硬件处理器仿真的差别。

该范例首先需要编译PIL子系统,并将编译后的生成的PIL模块复制到原模型中然后进行PIL仿真。


2.1.3 arm_cortex_m_model_pil_block范例学习

arm_cortex_m_model_pil_block范例使用单个模块的子系统设置为PIL方式并分别运行仿真的方式,无需额外生成PIL模块并复制。


2.1.4 arm_cortex_m_top_model_pil范例学习

arm_cortex_m_top_model_pil范例演示了在顶层模型中