为基于 STM32 处理器的板设置调度选项
您可以使用 Baremetal 或 FreeRTOS 操作系统运行您的模型,这些选项可以在配置参数 > 硬件实现 > 硬件板设置 > 操作系统/调度器 > 操作系统中选择。
要为您的模型设置调度选项以在目标硬件上运行,请按照以下步骤操作:
在“配置参数”对话框中,选择硬件实现。
从硬件板下拉列表中,选择任何基于 STM32 处理器的板。例如:STM32F7xx Based (Double precision FPU)。
在“操作系统”参数中选择 Baremetal 或 FreeRTOS。
注意
当您在“配置参数”中选择
FreeRTOS
作为操作系统时,请确保在 STM32CubeMX 工程中的 中间件 > FREERTOS > 接口 > CMSIS_V2 下对接口选择CMSIS_V2
。从编译操作下拉列表中选择选项以作为代码生成期间的编译过程。
点击应用。
裸机调度
Baremetal 以多任务、多速率模式运行调度器。您还可以在求解器窗格中为模型选择单任务。模型模块以周期性方式运行,由周期性中断钟控触发,中断周期设置为模型的基础采样时间。使用 Baremetal 可以加速上下文切换,提高堆栈内存使用效率,并获得调度器代码的可见性。
以下示例说明如何针对基于 STM32 处理器的板生成代码,该板使用 SysTick 调度器作为基本速率触发器:
SysTick 计时器配置为使模型的基本速率采样时间对应于中断速率。为了生成所需的速率,需要计算计时器周期并设置预分频器。
可实现的最小基本速率采样时间取决于模型复杂度。最大值取决于最大计时器周期值(对于 SysTick,为 224 - 1)和 CPU 时钟速度。
FreeRTOS 调度
使用 FreeRTOS,您可以根据模型中存在的速率进行调度以运行代码。FreeRTOS 提供标准的编程接口以及支持线程管理和时间管理的函数。
FreeRTOS Simulink 配置
使用 FreeRTOS 时,请确保将模型基本速率设置为大于或等于
1
毫秒的值。FreeRTOS
支持最多56
个线程优先级(即 0 - 55 之间),其中1 - 40
个线程优先级可用于调度模型速率。41-55
个线程优先级保留用于用户自定义的更高优先级线程。空闲线程优先级保留用于外部模式仿真。注意
软件计时器用于调度模型速率。计时器任务优先级应设置为高于最高调度速率的优先级(40 是基本速率)。
使用 FreeRTOS 时,您在配置参数 > 代码生成 > 优化 > 高级参数 > 最大堆栈大小列表中指定的值应用于每个线程。但是,指定的堆栈大小在某些线程中可能未得到充分利用。
注意
线程的堆栈大小在配置参数 > 代码生成 > 优化 > 高级参数 > 最大堆栈大小和 STM32CubeMX > 中间件 > FREERTOS > 内核设置 > 配置参数 > 最小堆栈大小中设置为最大值。
FreeRTOS STM32CubeMX 工程配置
当您选择 FreeRTOS 作为操作系统时,请确保在 STM32CubeMX 工程中配置以下设置。
在 STM32CubeMX > 中间件 > FREERTOS > 接口中将接口选择为 CMSIS_V2。
确保分配足够的堆大小,并将计时器任务优先级设置为大于
40
。