作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 cortex M0 MCU 上的一些 FreeRTOS 演示中 configMINIMAL_STACK_SIZE
设置为 60,而其他一些设置为 70。使用 STM32Cube 软件将其设置为 128。
我的问题是最小堆栈大小实际上是多少?
查看 STM32 Cortex-M0 编程手册,我看到处理器寄存器是
R0-R12、MSP、PSP、LR、PC、PSR、ASPR、IPSR、EPSR、PRIMASK、控制。这不是意味着最小堆栈大小只有 23 个字吗?还是需要为上下文切换保存更多信息?
最佳答案
根据这里的描述:http://www.freertos.org/a00110.html#configMINIMAL_STACK_SIZE就 RTOS 而言,该常量只不过是设置空闲任务使用的堆栈大小。
堆栈必须足够大以容纳任务的上下文,以及任务使用的任何普通堆栈项(局部变量、函数调用开销等),因此所需的实际大小取决于空闲任务正在做什么- 如果空闲任务什么都不做,它将处于最低限度。另一方面,如果有一个空闲任务钩子(Hook)函数正在使用(http://www.freertos.org/a00016.html),那么所需的堆栈大小将取决于钩子(Hook)函数正在做什么(它的函数调用深度等)。
演示任务也使用常量作为在多个架构上使用相同演示任务的便捷方式,但这不会影响 RTOS,它只是演示代码。
关于stack - FreeRTOS 配置MINIMAL_STACK_SIZE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542392/
我是一名优秀的程序员,十分优秀!