搜索
bottom↓
回复: 9

RTOS在等待时可否让其CPU休眠?

[复制链接]

出0入0汤圆

发表于 2011-2-15 10:56:26 | 显示全部楼层 |阅读模式
最近在耍RTX,UCOS,也耍了Z-stack。
然后发现Z-stack有个厉害的地方,直接用RTC来做系统时钟。如果所有的任务都在延时等待,则进入休眠任务。在进休眠任务前先查看最近即将运行的任务还剩多少时间,再把唤醒定时器设置成那个时间。这样的效果就是:如果多个任务都在延时等待,那么系统进入低功耗模式,到了超时时间才唤醒。
UCOS不是也有个IDEL任务吗?这个任务可否有类似功能?

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

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

出0入0汤圆

发表于 2011-2-15 11:10:22 | 显示全部楼层
可以的,我就这么用过,在cpu负担小的时候降低功耗的效果还是很明显的

出0入0汤圆

发表于 2011-2-15 11:48:49 | 显示全部楼层
UCOS不是也有个IDEL任务吗?这个任务可否有类似功能?

    应该可以在空闲任务中实现上述功能。

出0入0汤圆

发表于 2011-2-16 00:44:04 | 显示全部楼层
IdleTask里面用Hook来实现休眠

出0入0汤圆

 楼主| 发表于 2011-2-16 17:06:35 | 显示全部楼层
不上OS的系统会用RTC来做睡眠定时唤醒,低功耗可以到几个微安。
如果上了OS,假如有几个任务都在Delay或者处于等待状态,可否让CPU休眠?休眠了怎么唤醒?能否在Delay到来后或者有其它信号量触发后唤醒?

出0入0汤圆

发表于 2011-2-16 17:27:59 | 显示全部楼层
是不是这样?用RTC定时器做系统滴答定时,空闲任务中,关闭主时钟,进入休眠模式即可,RTC唤醒后(系统滴答),检测是否有任务就绪,无则切换到空闲任务,进入休眠模式,有任务就绪再检测是否是休眠模式,如果是休眠模式,就唤醒后,切换到就绪任务……。

出0入0汤圆

发表于 2011-2-16 17:37:59 | 显示全部楼层
如果工作任务是等待其他事件而进入等待模式,那么这个事件应该具有唤醒功能才行。

出0入0汤圆

发表于 2011-2-16 21:38:35 | 显示全部楼层
LZ CPU唤醒是需要时钟启动时间的。

出0入0汤圆

 楼主| 发表于 2011-2-19 01:22:08 | 显示全部楼层
我的设想是通过RTC和tick混合使用,通常任务延时,记录延时时的tick,然后再计算延时到达后的tick。如果进入了IDEL任务,就将剩下的延时交给中断唤醒,再sleep。唤醒后立即触发那个任务

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-15 16:40

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

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