FreeRTOS 配置MINIMAL_STACK_SIZE

eva*_*ing 5 stack cpu-registers freertos

configMINIMAL_STACK_SIZECortex M0 MCU 上 FreeRTOS 的一些演示中设置为 60,而在其他一些演示中设置为 70。使用 STM32Cube 软件时设置为 128。

我的问题是实际上最小堆栈大小是多少?

查看STM32 Cortex-M0编程手册,我看到处理器寄存器是R0-R12、MSP、PSP、LR、PC、PSR、ASPR、IPSR、EPSR、PRIMASK、CONTROL。这不是意味着 MINIMAL 堆栈大小只有 23 个字吗?或者是否需要为上下文切换保存更多信息?

小智 4

根据此处的描述: http: //www.freertos.org/a00110.html#configMINIMAL_STACK_SIZE就 RTOS 而言,该常量只不过是设置空闲任务使用的堆栈大小。

堆栈必须足够大才能容纳任务的上下文以及任务使用的任何正常堆栈项(局部变量、函数调用开销等),因此所需的实际大小取决于空闲任务正在执行的操作- 如果空闲任务不执行任何操作,则该值将处于最低值。另一方面,如果正在使用空闲任务挂钩函数(http://www.freertos.org/a00016.html),则所需的堆栈大小将取决于挂钩函数正在执行的操作(其函数调用深度等) .)。

演示任务也使用该常量作为能够在多个架构上使用相同演示任务的便捷方式,但这不会影响 RTOS,它只是演示代码。