This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMDX570LC43HDK:用于任务创建的 usStackDepth 的 FreeRTOS 问题

Guru**** 2079830 points
Other Parts Discussed in Thread: TMDX570LC43HDK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/648317/tmdx570lc43hdk-freertos-problems-with-usstackdepth-for-task-creation

器件型号:TMDX570LC43HDK

HY、

我将在 TMDX570LC43HDK 上使用 FreeRTOS 开发一个项目、

有些任务开始工作时、只需选择足够大的 usStackDepth 即可

 *@param usStackDepth 任务堆栈的大小指定为的数量
 *栈可以容纳的变量-不是字节数。  例如、如果
 *堆栈为16位宽、usStackDepth 定义为100、200字节
 将为堆栈存储分配*。

将示例从128更改为128*10

但是,这样做,只有2个任务128*10,创建第二个任务时会出现问题,

我知道代码优化可以是一种解决方案、但还有什么呢?

它也与此配置相关--> #define CONFIGTAL_HEAL_SIZE       (( size_t )8192 )

或许减小堆大小、我可以为堆栈留出更多空间? TMDX570LC43HDK 上堆和堆栈的可用空间为512KB

Antonio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Antonio、

    在 FreeRTOS 中,每个任务都有自己的堆栈,堆栈大小为 usStackDepth*4字节(32位设备)。 因此,每个任务的堆栈大小为128*10*4=5KB。

    任务堆栈来自"FreeRTOS 堆"。 任务上下文保存在此空间中。 FreeRTOSConfig.h 中的 configTOTAL_HEAP_SIZE 为任务、队列、信标等保留总空间 创建任务时、它会从该总空间中分配一个任务控制块。 因此、增加堆大小也可能是一个解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、谢谢、
    由于堆栈与堆之间的关系、我有疑问、但我将尝试增大堆大小、
    谢谢
    Antonio