搜索
bottom↓
回复: 9

求助: 关于uCOS-II 多个周期性任务的实现

[复制链接]

出0入0汤圆

发表于 2011-2-14 17:19:14 | 显示全部楼层 |阅读模式
本人属于菜鸟级别的请各位高手帮帮忙
先假设有3个周期性的任务 T1,T2,T3 周期分别为10ms,20ms,30ms 优先级T1>T2>T3 也就是说当T3在运行的时候 T2的周期来了 T2就会抢占T3 同样的T1可以抢占T2,T3 这个周期具体要怎么实现? 仅仅是用 OSTimeDly( )或 OSTimeDlyHMSM( ) 来延时相应的时间来达到周期性吗 没有别的办法了吗

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-2-15 08:44:35 | 显示全部楼层
周期性任务只能使用OSTimeDly( )或 OSTimeDlyHMSM( )进行任务切换。

     只是延时时间需要注意。要确保 任务1和任务2退出CPU控制权后,任务3能够接管CPU。

出0入0汤圆

 楼主| 发表于 2011-2-15 10:31:07 | 显示全部楼层
回复【1楼】ba_wang_mao
    周期性任务只能使用ostimedly( )或 ostimedlyhmsm( )进行任务切换。
     只是延时时间需要注意。要确保 任务1和任务2退出cpu控制权后,任务3能够接管cpu。
               
                  
               
-----------------------------------------------------------------------

我想要的结果是任务1和2正常被调度,然后让任务1和2的周期尽量的小,使任务3不被调度,在屏幕上打印“TASK X has been scheduled!” 但是怎么试任务3总能被调度,周期设1 tick都没用 不知道怎么回事,是因为软实时的原因吗?可以改硬实时吗?应该怎么改法?
另外,用ostimedly( )或 ostimedlyhmsm( )的话,是从该任务结束的时候开始延时,那要达到周期性运行的话,延时的时间是不是该任务的周期要减去任务执行的时间才对?? 因为一般的周期不都是从任务开始运行时开始计算的么?

出0入0汤圆

发表于 2011-2-15 10:47:20 | 显示全部楼层
那要达到周期性运行的话,延时的时间是不是该任务的周期要减去任务执行的时间才对?? 因为一般的周期不都是从任务开始运行时开始计算的么?
   
   1、那要达到周期性运行的话,延时的时间是不是该任务的周期要减去任务执行的时间才对??
      延时的时间和任务执行的时间没有任何关系,只跟《ostimedly(延时时间)》的入口参数“延时时间”有关系。

      应该是从调用系统函数:ostimedly(延时时间)  ,开始计算时间。  操作系统另外一个系统函数在节拍中断中开始递减计时单元的值,当计时单元的值减到0时,该周期性任务进入就绪状态,如果进入就绪状态后,该任务为最高优先级任务,则该任务将被再次调度。

   2、一般的周期不都是从任务开始运行时开始计算的么 ?
      参考上面的解释。

出0入0汤圆

发表于 2011-2-15 10:54:11 | 显示全部楼层
低优先级任务被抢占之后,如果CPU占用率不很高的话,下次延时的时候就自动错开了,因为延时函数调用的时间不同。结果就是没有抢占了,大家都自己干自己的,干完睡觉,谁也不欺负谁。

出0入0汤圆

发表于 2011-2-15 12:07:14 | 显示全部楼层
对于周期性任务,edf调度法比较适合。lz自己google一下:edf调度

出0入0汤圆

 楼主| 发表于 2011-2-15 12:54:56 | 显示全部楼层
回复【5楼】John_Lee
对于周期性任务,edf调度法比较适合。lz自己google一下:edf调度
-----------------------------------------------------------------------

我这不才起步么,貌似也没有看到有关uCOS-II里用RM的参考材料,所以想试着先在uCOS-II里用RM调度做做看,一方面也能熟悉一下uCOS-II。 想等成功了下一步就换EDF调度的。

出0入0汤圆

 楼主| 发表于 2011-2-15 15:05:53 | 显示全部楼层
回复【3楼】ba_wang_mao
-----------------------------------------------------------------------

有点明白了,谢谢

出0入0汤圆

 楼主| 发表于 2011-2-15 15:06:59 | 显示全部楼层
回复【4楼】syuanwang
-----------------------------------------------------------------------

恩 延时函数调用的时间不同是关键

出0入0汤圆

发表于 2011-2-15 16:35:06 | 显示全部楼层
ucosii 里面有周期唤醒任务的函数,干什么不用啊?  仔细看看datesheet先
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 19:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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