vesperW · 12月2日

RTOS 环境下低功耗设计思路

别小看那种几块钱的的电子产品,特别是那种一节电池可以用两年的电子产品,这里面的低功耗设计有很大的“学问”。

低功耗产品看似很简单,其实,要做好一款低功耗产品,特别是做到超低功耗,难度相对更高。

今天就来讲讲在 RTOS 环境下低功耗设计的思路。

写在前面:编程思维

嵌入式产品的设计具有多样性、定制性,很多时候都要结合需求来实现软硬件设计。

可能你写的一套软件架构,在“近似”的产品中软件架构、代码模块能复用,但如果跨度较大,你的软件架构就不一定适用了。

但是,嵌入式软件设计有很多地方都是相通的,也许软件架构虽不能用了,但设计思路同样适用。

image.png

就好比:你学会了某项技能,这家公司不要你了,领一家公司也会要你,而两家公司的设计的产品不相同。

所以说,有一个良好的编程思维很重要,包括软件架构、编程模块、低耦合高内聚等。

说回来 RTOS 低功耗设计思路,常见的有:

  • 普通低功耗:运行 Idle 任务时,进入低功耗模式。
  • 超低功耗:在空闲状态进入低功耗,通过中断或者外部事件唤醒。

普通低功耗

普通低功耗,指处理器间歇性进入低功耗状态,但会定期唤醒,这种功耗就做不到很低。

在 RTOS 中,实现这种普通低功耗,通常是在任务处于 Idle(空闲任务)中实现其低功耗功能。

大概示意图:

Image

大概意思:Idle 空闲任务定期进入低功耗,但会定期唤醒,检测是否有更高优先级任务响应。在处于低功耗状态下,也可以通过外部事件或中断欢迎处理器。

提示:

有些 RTOS 可以通过“HOOK 钩子函数”进行低功耗操作。同时,有些 RTOS 的空闲任务可能需要进行一些配置。

超低功耗

上面那种通过定期唤醒 CPU 的方式,即使没有其他事做,CPU 也要醒来“看一眼”,肯定做不到超低功耗。

要想做到超低功耗,没事时别来打扰 CPU,有才把它叫醒。

大概示意图:

Image

这种 CPU 进入“深入低功耗”的方式,和上面不一样,这与 CPU 的低功耗模式有关。

比如:睡眠、停机、待机等。不同的处理器各种低功耗模式可能有差异,具体如何实现,如何唤醒,要结合具体 CPU 实现方法完成。

Image

最后

低功耗产品的设计相对更难,需要结合软硬件解决各种“功耗异常”的问题,但整体的应用相对不复杂。

当然,还有更多实现低功耗的方法:比如降频、0 功耗待机等。欢迎大家留言说出你产品低功耗是如何实现的。

END

作者:strongerHuang
来源:strongerHuang

推荐阅读

欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
2891
内容数
284
分享一些在嵌入式应用开发方面的浅见,广交朋友
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息