OpenEdv-开源电子网

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

ucosii跑任务5个多钟后就不切换任务,几秒钟后恢复正常,希望路过的各位高手能给点建议

[复制链接]

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2017-8-10 11:35:21 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 lzq12 于 2017-8-10 11:35 编辑

407探索者的板子,程序是在原子哥综合实验例程上面改的,开了4个ucos任务,1个ucos软件定时器,使用到的资源是音乐播放和UDP,还有就是7寸电容屏显示和触摸功能
程序功能描述:通过UDP获取MP3数据,在音乐播放线程里把数据进行解码播放
任务1:7寸电容屏显示和检测触摸功能
任务2:音乐播放,从UDP获取buf,然后进行MP3解码播放
任务3:闪灯程序
任务4:监视线程,监视某些变量的变化从而判断某些程序是否在正常运行,变量在程序的多个地方放置自加,比如在音乐播放的DMA中断
ucos软件定时器:50ms一次,主要做计时变量的自加(供界面显示播放时间等地方用),并运行LwIP_Periodic_Handle()函数。

问题现象:通过UDP获取MP3数据并进行播放,播放了五个多钟头后,在某个时刻,任务1到任务4全都不切换4-6秒钟,此时音乐播放没声音(音乐播放任务都没运行了),触摸屏触摸失效(检测触摸的任务1没有运行了),UDP正常接收,音乐播放用到的DMA正常,串口收发正常,ucos软件定时器运行正常.任务1到任务4都暂停切换了4-6秒钟后,又自己恢复了,又能够正常切换线程,播放和触摸屏显示那些都正常了。

由于每次都是五个多钟头以后才出现该问题,而且出问题的时间不固定,播放的音乐文件数据都是正常的,排查问题很困难,不知道路过的大侠们有没有碰到过ucos任务暂停切换的情况,希望多给点建议。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-8-12 01:23:16 | 显示全部楼层
这种问题不好找哦,加入printf,打印关键数据试试吧
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-8-12 10:51:11 | 显示全部楼层
正点原子 发表于 2017-8-12 01:23
这种问题不好找哦,加入printf,打印关键数据试试吧

在很多关键节点都加入了,在ucos暂停切换任务时把ucos的那些任务队列什么的都打出来了,结果就看到,所有任务都处于就绪状态,软件定时器也出于就绪状态,最奇怪的就是,这期间软件定时器一直处于就绪状态,50ms的软件定时器好像都不把cpu交出来一样
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-8-12 11:02:10 | 显示全部楼层
正点原子 发表于 2017-8-12 01:23
这种问题不好找哦,加入printf,打印关键数据试试吧

在综合实例的基础上,不适用网络线程,就是不用tcpip_thread(),在lwip_comm_init()中就只是修改两个地方,把tcpip_init(NULL,NULL);改成lwip_init();,把Netif_Init_Flag=netif_add(&lwip_netif,&ipaddr,&netmask,&gw,NULL,&ethernetif_init,&tcpip_input);改成Netif_Init_Flag=netif_add(&lwip_netif,&ipaddr,&netmask,&gw,NULL,&ethernetif_init,&ethernet_input);,然后其他地方不改。目前网络方面是能够正常使用,但不知道 和目前的现象有没有关系?或者说这样用会有什么问题不?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-8-12 20:02:52 | 显示全部楼层
lzq12 发表于 2017-8-12 10:51
在很多关键节点都加入了,在ucos暂停切换任务时把ucos的那些任务队列什么的都打出来了,结果就看到,所有 ...

慢慢查了,这种问题是不好找
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2017-8-14 10:09:49 | 显示全部楼层
很久之前遇到过这样问题
1-1
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-8-14 11:03:00 | 显示全部楼层
mygod 发表于 2017-8-14 10:09
很久之前遇到过这样问题

那大神可否还记得出现这种问题的原因和解决办法呢
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-8-14 11:03:37 | 显示全部楼层
正点原子 发表于 2017-8-12 20:02
慢慢查了,这种问题是不好找

确实啊,现在一个个方法去试去排除了
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2017-8-14 11:25:38 | 显示全部楼层
你用了信号量,消息,或邮箱
1-1
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-8-14 13:10:40 | 显示全部楼层
mygod 发表于 2017-8-14 11:25
你用了信号量,消息,或邮箱

我一个都没有用呢,连LWIP的线程都没有用,就是开了ucos的软件定时器
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-8-9
在线时间
6 小时
发表于 2019-8-29 11:49:08 | 显示全部楼层
lzq12 发表于 2017-8-14 13:10
我一个都没有用呢,连LWIP的线程都没有用,就是开了ucos的软件定时器

我也遇到了差不多的情况,我的就是8个线程 跑了几天 结果就出现了低优先级线程不再执行的情况, 现在不知道从何入手了 现在也在寻求解决方案
回复

使用道具 举报

8

主题

185

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-15
在线时间
47 小时
发表于 2019-8-30 16:27:17 | 显示全部楼层
感谢分享,求告知问题得根源是如何产生
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-16 10:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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