a2412462142 发表于 2023-11-1 08:55:13

在极小的RAM(2-3k)剩余情况下,如何追踪FreeRtos任务状态?

想问一下各位前辈的调试技巧。
感慨有时候调试的技能比开发技能更加有用。


如果长时间运行,才出现问题。

情况如下:
1.所有任务一开始运行都是正常的。
2.所有任务的堆栈一开始运行都是正常的。
3.当前系统所剩余Ram只有1-2k。
4.长时间运行后,所有任务还是可以运行。但是出现某个任务运行时间特别卡顿。某些任务甚至不跑了。

想问下前辈们有什么技巧?
1.现在就是通过Ozone,备份代码,等问题出现,之后再去每个任务里面看哪些任务不跑,然后看哪些函数运行的比较久。
2.尝试使用RTT小幅度打印FreeRtos任务状态vTasklist。然后用RTT记录每个任务的堆栈,打印出数据保存。
3.尝试使用暗装变量,通过Ozone,修改变量值,某些任务直接continue不执行。判断哪些任务出问题概率。

eric2013 发表于 2023-11-1 09:17:32

使用我们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]
查看完整版本: 在极小的RAM(2-3k)剩余情况下,如何追踪FreeRtos任务状态?