Ros*_*fun 1 embedded stack freertos
我正在使用基于 FreeRTOS 的 SDK 为嵌入式平台进行开发。我需要用 来创建一个任务xTaskCreate,但我不完全理解usStackDepth参数。FreeRTOS 文档说:
任务堆栈的大小指定为堆栈可以容纳的变量数 - 而不是字节数。例如,如果堆栈为 16 位宽,并且 usStackDepth 定义为 100,则将分配 200 个字节用于堆栈存储。堆栈深度乘以堆栈宽度不得超过可包含在 size_t 类型变量中的最大值。
那么,我如何获得堆栈宽度?是否依赖平台?我的目标是 32 位 RISC 处理器 Xtensa lx106
FreeRTOS 任务堆栈宽度取决于端口。查看 portmacro.h,您应该会找到portSTACK_TYPE.
如果您进一步深入了解 tasks.c(请记住您可以访问 FreeRTOS 源代码),您会发现堆栈的分配大小为( ( size_t ) usStackDepth ) * sizeof( StackType_t)。然后回到 portmacro.h 中,您会发现StackType_ttypedef 与portSTACK_TYPE.