FreeRTOS配置MINIMAL_STACK_SIZE

7

在一些面向Cortex M0微控制器的FreeRTOS演示中,configMINIMAL_STACK_SIZE被设置为60,而在其他一些演示中则设置为70。使用STM32Cube软件时,它被设置为128。

我的问题是什么才是实际的最小堆栈大小?

查看STM32 Cortex-M0编程手册,我发现处理器寄存器有R0-R12、MSP、PSP、LR、PC、PSR、APSR、IPSR、EPSR、PRIMASK、CONTROL。这难道不意味着最小堆栈大小只是23个字吗?还是需要保存更多信息以进行上下文切换?

1个回答

4
根据此处的描述:http://www.freertos.org/a00110.html#configMINIMAL_STACK_SIZE,就RTOS而言,该常量仅设置空闲任务使用的堆栈大小。
堆栈必须足够大以容纳任务的上下文,以及任务使用的任何普通堆栈项(本地变量、函数调用开销等),因此所需的实际大小取决于空闲任务正在执行的内容-如果空闲任务什么也不做,则最小。另一方面,如果使用了空闲任务挂钩函数(http://www.freertos.org/a00016.html),则所需的堆栈大小将取决于挂钩函数正在执行的内容(其函数调用深度等)。
该常量还被演示任务用作一种方便的方式,以能够在多个体系结构上使用相同的演示任务,但这不会影响RTOS,它只是演示代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接