[Cortex-M0技术交流] UCOSII任务调度问题 某个任务突然不执行

[复制链接]
5875|6
 楼主| jiandandan168 发表于 2012-4-5 19:33 | 显示全部楼层 |阅读模式
我用的板子是STM32,程序已经连续运行多天,某天开始其中一个任务没有执行,其余任务运行正常。我的系统中自己定义的任务有5个,没有执行的是优先级最低的任务。前期一直正常,突然出现这种情况,最可能的原因可能是什么?有方向吗,盲目不知道怎么找问题?任务中有一个看门狗任务,看门狗任务也很正常,系统运行期间没有复位。
 楼主| jiandandan168 发表于 2012-4-5 20:10 | 显示全部楼层
能不能给我点方向性指导,是在不知道怎么入手解决这个问题了??
kyzb001 发表于 2012-4-6 14:57 | 显示全部楼层
看看堆栈是不是溢出了。
john_lee 发表于 2012-4-6 16:00 | 显示全部楼层
这类不容易复现故障的错误非常难找,你可以开一个任务,再需要时输出内存印象(就是dump),然后根据map文件的定位信息,检查各个TCB,任务栈和同步对象,分析一下,应该能找到问题的原因。
 楼主| jiandandan168 发表于 2012-4-9 16:13 | 显示全部楼层
楼上的能把方法具体描述一下吗,怎样做这个内存印象,怎样查,我实在是不知道怎么弄了,这方面懂得太少,如果方便留个联系方式,想具体请教一下
john_lee 发表于 2012-4-11 01:40 | 显示全部楼层
做一个任务,最高优先级,平时就阻塞着,等待唤醒,唤醒后,就使用通信线路(如串口等),把RAM的所有内容,全部发出来,串口另一端就接PC接收。由于使用了通信线路,所以,这个平时阻塞着的任务,也最好使用通信线路来唤醒。当然,系统运行正常的时候,不要去唤醒这个任务。

PC端收到全部数据后,就可以参考编译链接输出的map文件,分析数据中的各个对象了(TCB,任务栈,同步对象等),特别是TCB中的任务状态和阻塞对象指针,表明了此任务是处于什么状态,如果是阻塞,那么是阻塞在哪个同步对象上的。

知道了异常的任务和任务阻塞的同步对象,那么就可以查看源程序,找到与此任务访问这个同步对象的所有代码,仔细检查逻辑,最后应该能确认故障点在何处。

另:希望查到最后,你不要跟我说是你的ucos移植有问题。:lol
haitao10086 发表于 2012-4-12 10:17 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部