打印
[uCOS/RTOS]

探讨下uCos下丢任务的问题

[复制链接]
2298|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
li880wert|  楼主 | 2013-11-4 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
硬件是 STM32平台,几个月前的一个项目,当时总共 跑了 12个任务,除掉启动任务就只剩 11个TASK。
  丢失任务的是 RTC 1s显示 task, 实现过程 就是设置个OSSemPend(RTC_Sem, 0, &err); 然后在秒中断 释放信号。
记得当时设计的这个任务 先级是 10 或是 11(就是最低那个),一般前30分钟正常运转,到30分钟以后基本就停止了
  (秒中断有产生中断,也释放了信号量,但就是一直阻在OSSemPeng);

  此时只要按下按键(任务级别7),RTC task又正常运行了,再过个 半小时以上 就又停止了。后面 自己也在网上 查了很多相关资料。
  最后看了本 UCOS 任务设计一书,才想到是优先级强占原因,因为当时 有个 最高级任务,调度度非常 频繁 (每 15 tick)最后 把这RTC 任务先级提高 到(7)才没有发生停止现像.
  
  感觉 ucos 不太适合在 大于 12个Task以上的调度,因为抢占的原因(每时每刻都运行最高级别),导致最低任务没时间运行。除非各个任务设计的时间非常合理.
  


相关帖子

沙发
guangbiao| | 2013-11-4 16:01 | 只看该作者
楼主任务优先级分配策略需要优化一下,这样就不会出现问题了。UC/OS还是不错的系统。。。用多了就会有更深的认识。。。

使用特权

评论回复
板凳
yyql008| | 2013-11-4 16:22 | 只看该作者
你任务周期设置的过小吧,我程序一般20多个任务都没问题.
任务周期过小的,用定时器就是了... ...


也有可能是这个问题,,,看这个帖子  https://bbs.21ic.com/icview-438460-1-1.html

使用特权

评论回复
地板
li880wert|  楼主 | 2013-11-5 11:59 | 只看该作者
我用的 是2.51的版本,觉得应该 和版本关系 不大, 主要就是 时间 分配问题

使用特权

评论回复
5
yyql008| | 2013-11-5 19:29 | 只看该作者
li880wert 发表于 2013-11-5 11:59
我用的 是2.51的版本,觉得应该 和版本关系 不大, 主要就是 时间 分配问题

还问题不大,问题大的很... ...
就这个问题,UCOS作者升级了一下操作系统

使用特权

评论回复
6
li880wert|  楼主 | 2013-11-6 09:06 | 只看该作者
yyql008 发表于 2013-11-5 19:29
还问题不大,问题大的很... ...
就这个问题,UCOS作者升级了一下操作系统

用的是2.52的,号称最稳定版本,美国航天器上都跑的这个

使用特权

评论回复
7
qinhuan7| | 2013-11-6 09:10 | 只看该作者
时间分配的确是个问题,不过分配合理了跑起来还是不错的

使用特权

评论回复
8
yyql008| | 2013-11-6 12:59 | 只看该作者
li880wert 发表于 2013-11-6 09:06
用的是2.52的,号称最稳定版本,美国航天器上都跑的这个

美国航天器用的估计不是是STM32吧?那个BUG只针对STM32才有的... ...

使用特权

评论回复
9
黄小俊| | 2013-11-9 19:11 | 只看该作者
呵呵。。不是号称能跑64个的吗

使用特权

评论回复
10
sidafuzhihe| | 2013-11-11 18:14 | 只看该作者
楼主任务优先级分配策略需要优化一下,这样就不会出现问题了。

使用特权

评论回复
11
棋哥| | 2013-11-12 13:18 | 只看该作者
有可能是任务优先级设置不好,被高优先级的任务占用了!UCOS本身不会出这样的问题!

使用特权

评论回复
12
文峰聊书斋| | 2014-4-26 10:11 | 只看该作者
都支持时间片轮转了。UCOS-III给力呀。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

509

帖子

7

粉丝