来源 | HaaS技术社区
1、背景
随着芯片技术的不断发展,CPU的主频越来越高,随之而来的高功耗及发热等问题也日益显现出来,因此低功耗设计也成为了智能硬件中必须面对的重大课题。业界在低功耗的设计方面有许多优秀的实践案例,值得我们借鉴和学习,本文总结了一些经典的低功耗设计方法,同时也会详细阐述AliOS Things在IPC中采用的低功耗方案。
2、智能硬件的低功耗设计
2.1、功耗产生的原因
芯片的功耗可理解为在单位时间内所消耗的电量,因此功耗的高低主要取决于产品中器件或模块消耗电量的大小。
功耗来源分类:
静态功耗:和芯片制造工艺相关,通过提升芯片采用的工艺、降低芯片面积等方法,但同时也增加了芯片的成本。
浪涌功耗:开机和唤醒时的瞬时功耗,和芯片本身的启动电流以及和元器件有关。
动态功耗:以上两种超出了本文的讨论范畴,本文主要讨论如何通过软硬件的设计来降低动态功耗。
2.2、降低智能硬件功耗的一般方法
2.2.1、CPU动态调频和调压
对于大多数SoC系统,都可以支持动态调整CPU运行频率和电压,根据当前系统承载的业务,当CPU负载较重时,可以使用较高的运行频率和电压,当CPU处于低业务量或空闲状态时,可降低运行频率和电压,达到降低功耗的目的。
2.2.2、关闭不用的模块和外设
当前SoC系统功能越来越复杂,集成的模块也越发丰富,从GPIO、Uart、SPI,到音视频、网络等。SoC中每个模块都需要一个对应的时钟来保证模块的正常运行,如下图所示的一种简化的SoC的时钟系统,时钟信号的翻转是产生动态功耗的主要原因之一,因此关闭系统不用的模块对于降低功耗也是行之有效的方法之一。
3、基于AliOS Things的低功耗IP Camera
3.1、总体架构
本方案的核心是通过将主控的网络保活等功能释放到wifi模组,在非业务模式下仅保留wifi模组工作,让主控SoC掉电,从而达到降低功耗的目的。wifi模组在主控SoC掉电时和服务器保持连接,当有业务需要进行时,则由wifi模组立即唤醒主控。
3.2、软件设计
3.2.1、主控快速启动
主控的快速启动是实现本低功耗方案的前提,只有能够做到主控快启并快速出图,才能让主控在空闲模式下掉电,从而节省功耗。从内核驱动和用户态应用两个方面对系统的启动速度进行优化:
(1)驱动模块初始化加速
将内核驱动模块做并行化处理,加速系统的启动。在设备驱动在初始化的延时过程中,切换到其他设备的初始化流程,可达到并行化的效果。
(2)应用程序分段加载技术
开机过程中仅加载应用.elf镜像的部分内容到内存中,结合缺页中断等CPU特性,在需要时唤入其他部分,可实现应用程序的分段加载,从而缩短应用的启动时间。
3.2.2、网络链路保活机制
IP Camera在低功耗状态没有主流程业务,但仍需要和服务器之间保持连接状态,当有业务触发时,则可以快速发起业务。本低功耗方案将主控做了掉电处理,因此保活的工作释放给wifi模组进行,由wifi模组周期性向服务器发送保活数据包。
3.2.3、休眠和唤醒方案
从IP Camera的应用场景出发,IP Camera在绝大多数时间内,是不需要启动的,只有当用户通过手机App远程查看视频,或者当Camera检测(一般是红外检测)到有人经过时,才会启动IP Camera进行正常业务。所以让IP Camera的主控在不用的时候进入低功耗模式甚至断电,可以大大增加IP Camera的待机时间。
4、总结
本文介绍了智能硬件中低功耗设计的一般方法,通过降频降压、关闭不用的模块等方法可以达到降低功耗的目的。此外,还介绍了一套基于AliOS Things的IP Camera解决方案,该方案通过实现主控快启,以及关闭主控的方法,实现深度降低IP Camera整体功耗的目的,同时该方案具备很好的可复制性。
开发者支持
如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号。
更多技术与解决方案介绍,请访问HaaS官方网站https://haas.iot.aliyun.com。