工具与软件:
您好!
我正在对我的 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