发现 PM设计有一个不太合理的地方:当尝试进入 低功耗时,需要检测最近的唤醒时间,如果唤醒时间 < RT_PM_TICKLESS_THRESH 则不应该进 低功耗
PM
< RT_PM_TICKLESS_THRESH
上述源码,这个判读是不是应该放在最开始比较好,而且当 < RT_PM_TICKLESS_THRESH后立刻退出,不用再跑后面的了,而且这里强制改为 PM_SLEEP_MODE_IDLE 可能会导致BUG,因为用户可能没有请求进入 PM_SLEEP_MODE_IDLE
PM_SLEEP_MODE_IDLE
BUG
查看更多
这个不算BUG,没有任何问题。
1、立即退出更不好,因为睡眠模式没有更改,idle依旧会循环的进入,影响睡眠质量。2、IDLE模式一般是WFI或是空(什么都不做),由用户适配决定。3、建议多实践,了解1S 1ms的细分,也就是了解假如1ms中,CPU一直工作与CPU只有100uS工作,哪个功耗更低。4、建议多了解IDLE模式的特点(快速唤醒)与深睡眠DeepSleep的特点(进入退出需要较长的切换时间)。
发布 问题
分享 好友
手机 浏览
回到 顶部
嗯,有道理,不过那个 强制设置成 PM_SLEEP_MODE_IDLE 模式的可能要多注意,因为这们会导致 _pm_notify.notify 的 RT_PM_ENTER_SLEEP 与 RT_PM_EXIT_SLEEP 时 sleepmode 会不一样
PM2.0 是不推荐使用PM Device与变频的,这不是规避问题或简化框架,而是让框架更好的工作,用户只关心外设、引脚的功耗调优。