TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

该讨论已被锁定。
您不能再向该讨论中发布新回复。如果您有问题可以开始新讨论

[参考译文] TM4C1290NCPDT:尽管堆空间足够、GateMutex 上仍阻止任务(优先级4)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1465577/tm4c1290ncpdt-task-priority-4-blocked-on-gatemutex-despite-sufficient-heap-space

器件型号:TM4C1290NCPDT

工具与软件:

您好!

我正在对我的 TI-RTOS 应用程序中的一个关键问题进行故障排除。 以下是详细信息:
任务名称:操作员任务
任务优先级:4
任务用途:每50ms 馈送一次看门狗。
观察到的问题:GateMutex 上的运算符任务保持阻止、未能按预期执行、从而导致看门狗无法馈送。

RTOS 对象视图(ROV)中的观察结果:

GateMutex (0x200377fc)上阻止了操作员任务。


2.堆内存:
总大小:0x10000
总可用大小:0x7550
最大空闲块:0x74C0
•堆内存看起来足够了。


3.调用堆栈(附加的屏幕截图):
•在尝试分配内存时、操作员任务出现阻塞。
•该故障似乎与 std :: string 操作有关 Var_Presenter ,特别是在 std :: replace 操作期间。



4.代码上下文(附加的屏幕截图):
•阻塞点对应于 Var_Presenter :: Update()函数中 std :: string 对象的 std :: replace 运算。


所采取的调试步骤:
1.已验证 HeapMem ROV 模块中的堆内存—可用空间和最大的可用块似乎足够了。
2.检查调用栈,这表明内存分配问题,可能是由于 std ::字符串操作 涉及操作字符串,用于在 Var_Presenter :: Update ()函数中的显示更新。
3.我们看了 HeapTrack 以查看任务的时间安排,对任何基于操作员任务的信息都没有帮助。

请求帮助:
在 TI-RTOS 中调试或解决 GateMutex 和堆分配故障时、是否有具体建议?


非常感谢您提供任何见解或指导!

谢谢!
Mahima