OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...

ucosiii 一个任务异常不运行

查看数: 12213 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-5-9 09:45

正文摘要:

1.系统有数个任务,开机运行正常,但是运行一段时间(偶发不确定具体时间,反正至少好几个小时~1天),有一个显示任务Dis_task不运行了,其他任务(优先级有比显示任务高的,也有低的)正常。2.显示任务Dis_task调用 ...

回复

dujunqiu 发表于 2020-10-29 16:36:12
我也遇到了,其中一个任务突然消失了;
我这边应该是内存的原因,因为刚好改了一些数据包的长度之后就出现这种现象;用回之前的老版本程序就没问题;

具体原因还不知道,继续查看分析;
空白 发表于 2019-3-18 14:25:34
我也出现了同样的情况。
请求消息队列的任务某一个时刻后持续就绪,调度次数不再增加。
hanzixi_angel 发表于 2018-5-11 11:19:32
roarghy 发表于 2018-5-10 12:57
目前进展:在其他任务中添加语句:发现未处理的消息过多时把显示任务挂起在解挂。这方法可纠正显示任务不运 ...

建议你给成Free RTOS  这个好用  结合stm32cubemx  开发起来还是很快的  如果你坚持使用ucos  建议你重新移植一下
mygod 发表于 2018-5-10 16:47:52
相对来说Frtos 好用,如果对 UCOS不是很熟悉的新手,经常陌名BUG问题。特别是这个信号,邮箱。UCOS 不像Frtos 有专门用于中断中的ISR 信号操作,所以在UCOS中最好不要在中断进行信号量操作,
mygod 发表于 2018-5-10 16:44:16
没看到源码部分,不好判断问题,以我看来你这是出现任务间死锁了。尝试办法,删除其他多余任务,只保留一个收发。
roarghy 发表于 2018-5-10 12:57:52
本帖最后由 roarghy 于 2018-5-10 12:59 编辑

目前进展:在其他任务中添加语句:发现未处理的消息过多时把显示任务挂起在解挂。这方法可纠正显示任务不运行的问题。但是没治本。

在发生异常的情况下,查看显示任务的TCB的成员变量,发现其处于就绪状态且没有等待任何内核对象,这个状态只有在运行显示任务的时候才可能出现。推断应该是任务调度执行显示任务,在显示任务执行期间偶然发生了“什么事情”导致本任务出现异常的。通过将其挂起再解挂的方法“纠正”了这个异常。

下一步我打算好好看看显示任务内部,逐块排查最终找到原因。但这个显示任务的代码量好大好大~~~~
roarghy 发表于 2018-5-10 12:48:30
hanzixi_angel 发表于 2018-5-10 12:15
你用的是不是原子大哥的移植好的模板?

是正点原子103的板子,然后我改了改用在了105上的
hanzixi_angel 发表于 2018-5-10 12:15:22
roarghy 发表于 2018-5-9 15:31
又进行了一些测试,发现:RTC的消息不停的在发布,直到满。而这期间显示任务一直处于就绪状态。好像显示任 ...

你用的是不是原子大哥的移植好的模板?
正点原子 发表于 2018-5-10 01:46:07
BD
roarghy 发表于 2018-5-9 15:31:25
又进行了一些测试,发现:RTC的消息不停的在发布,直到满。而这期间显示任务一直处于就绪状态。好像显示任务“看不到”发布的消息。并且显示任务处于就绪状态一直得不到执行,好像任务调度把这个任务给“忘记了”一样,而显示任务优先级低的任务都在执行。总之一句话,好像显示任务消失了一样。
好奇怪~~~



关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-8-23 17:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表