在极小的RAM(2-3k)剩余情况下,如何追踪FreeRtos任务状态?
想问一下各位前辈的调试技巧。感慨有时候调试的技能比开发技能更加有用。
如果长时间运行,才出现问题。
情况如下:
1.所有任务一开始运行都是正常的。
2.所有任务的堆栈一开始运行都是正常的。
3.当前系统所剩余Ram只有1-2k。
4.长时间运行后,所有任务还是可以运行。但是出现某个任务运行时间特别卡顿。某些任务甚至不跑了。
想问下前辈们有什么技巧?
1.现在就是通过Ozone,备份代码,等问题出现,之后再去每个任务里面看哪些任务不跑,然后看哪些函数运行的比较久。
2.尝试使用RTT小幅度打印FreeRtos任务状态vTasklist。然后用RTT记录每个任务的堆栈,打印出数据保存。
3.尝试使用暗装变量,通过Ozone,修改变量值,某些任务直接continue不执行。判断哪些任务出问题概率。
使用我们TOOL也可以的,有专门的FreeRTOS Trace功能。无需你的目标板嵌入任何代码。实时监测。
下面所有这些都不需要你的目标板嵌入任何代码,且不会复位你的芯片。出问题了,随时接入查询即可。
1、基于H7-TOOL的硬件异常黑盒子功能V1.0版本操作说明,这个访问不会复位芯片。
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114792
2、锁定了初步位置后,需要判断堆栈问题,可以SWD接口函数读取内容判断,这个访问不会复位芯片。
https://www.armbbs.cn/forum.php?mod=viewthread&tid=118104
3、FreeRTOS Trace功能,可以链表形式展示这个运行架构。
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114824
https://img.anfulai.cn/dz/attachment/forum/202308/07/013516pbbuhw5585aop9h5.png
页:
[1]