AliOS Things电源管理框架怎么满足物联网设备低功耗需求

alios things电源管理框架使用介绍,主要针对物联网设备低功耗需求。
一、电源管理框架简介
电源管理框架的目的在于节约cpu的功耗。传统上,当操作系统处于空闲状态时,比如所有用户任务和系统任务处于阻塞状态,将执行idle task。idle task的通常做法是一个while(1)空循环,从汇编视角看是不断执行跳转指令,也就是说当操作系统空闲时,cpu将处于空转状态。使能电源管理框架后,当系统进入idle task后,将设置cpu进入低功耗状态,从而节省cpu的功耗。
alios things电源管理框架具有如下特点:
(1)应用配置电源管理框架并添加初始化代码后,整个框架的运行对应用透明,用户无需为了支持电源管理框架而修改应用代码;
(2)支持多级低功耗状态;
在某些mcu上,根据不同的节电程度和唤醒时间分为多级睡眠,电源管理框架提供了对该特性的支持,在进入低功耗状态时将根据睡眠时间和节电程度选择最佳睡眠等级。
(3)支持tickless机制
当mcu决定进入低功耗状态时,将关闭系统tick中断,并在醒来的时候恢复系统tick中断并补偿睡眠过程中丢失的tick数。这种策略通过减少系统时钟中断来最大程度降低系统空闲时的功耗。
(4)支持精简的低功耗模式
当mcu进入低功耗后,不关闭系统tick中断,系统tick也能唤醒系统。它的优点是实现简单,但当系统长时间空闲时,由于系统时钟频繁唤醒系统,不利于节能。
在某基于nrf52832 mcu的开发板上测试电源管理框架的运行效果如下:
在普通运行模式下nrf52832 mcu的平均运行电流在4ma左右,在添加电源管理模块后mcu的电流测试如下表所示:
从测试结果可以看出,在对功耗敏感的系统上,比如依靠电池供电的系统,非常有必要使用电源管理框架,它可显著降低系统功耗,增加系统待机时间。
二、应用配置(为应用添加低功耗支持)
应用若要使用电源管理框架,需进行如下配置:
(1)应用目录的.mk文件中添加对电源管理模块的依赖,示例:
global_defines += rhino_config_cpu_pwr_mgmt=1
$(name)_components := rhino/pwrmgmt
(2)在应用初始化函数中(比如application_start(int argc, char *argv[]))调用电源管理模块初始化函数。
cpu_pwrmgmt_init();
三、示例应用(app/example/pwr_test)
目前alios things 2.0版本在developerkit和pca10040平台上对电源管理框架进行了适配,可用如下命令编译示例应用并下载到develoerkit上运行:
aos make pwr_test@developerkit
aos upload pwr_test@developerkit
示例应用创建了2个任务demo1和demo2。demo1的主要逻辑是一个while循环:count1增1,同时打印count1和g_idle_count[0]的值,然后睡眠1秒。demo2的主要逻辑也是一个while循环:count2增1,同时打印count2的值,然后睡眠2秒。
其中g_idle_count[0]是一个全局变量,idle任务在执行时会累加该值。
若没有开启低功耗模块,那么当demo1和demo2处于睡眠状态时,idle任务持续执行,g_idle_count[0]不断增加。输出示例如下:
count1 = 0, idle = 0
count2 = 0
count1 = 1, idle = 2347298
count1 = 2, idle = 4693421
count2 = 1
count1 = 3, idle = 7036926
count1 = 4, idle = 9383049
count2 = 2
count1 = 5, idle = 11726554
count1 = 6, idle = 14072465
开启低功耗时,当demo1和demo2处于睡眠状态时,idle任务执行g_idle_count[0]增1后,调用cpu_pwr_down()进入低功耗状态。因此系统每次进入空闲状态,g_idle_count[0]只增加1。输出示例如下:
count1 = 0, idle = 0
count2 = 0
count1 = 1, idle = 1
count2 = 1
count1 = 2, idle = 3
count1 = 3, idle = 4
count2 = 2
count1 = 4, idle = 6
count1 = 5, idle = 7
说明:如果条件允许,直接测试功耗,比如测试mcu的电流,效果更直观。
四、电源管理框架的适配
由于电源管理框架的运行依赖于硬件能力,因此在适配时首先要分析目标硬件是否有能力支持,然后要基于硬件能力为电源管理框架提供相关驱动。
4.1 硬件要求
要想支持电源管理框架,目标mcu需要支持如下特性:
(1)至少支持一种低功耗模式。在该低功耗模式下,ram和寄存器的值能够被维持。
(2)在低功耗模式下,存在可用的定时器,且该定时器能唤醒系统。在tickless机制下,该定时器用于计算低功耗时间,以补偿系统时钟。
4.2 适配接口
为了支持电源管理模块需完成如下接口适配:
注:可参考developerkit和pca10040平台上的适配示例(pwrmgmt_hal目录)。
作者:云栖社区 jianniu

仙工智能迎来了今年的收官展会:东莞智博会
信号放大器的原理及作用
ADI的µModule技术正在加快工业4.0革命
将开发套件从原型转变为解决方案
换代升级成主流选择,海信AI电视引领新潮流
AliOS Things电源管理框架怎么满足物联网设备低功耗需求
矢量网络分析仪器简介
华硕GT-AC5300电竞路由器评测 配置信号确实讲究
城市级智慧停车解决方案实现线上线下全场景闭环功能
OPTIGA Trust X:为物联网安全保驾护
温度传感器好坏的检测及检测方法
音乐椅的制作教程
第三代半导体材料的特性及应用
旷视新推出针对城市专用的物联网操作系统
我国已颁发首个工控安全设备认证
金立S10四摄拍照功能如何
PLC远程调试模块
深智云智能照明方案为灯饰厂商量身定制物联网新商业模式
GTC4825-352RMB双线差模电感做成共模电感的外形
家庭医疗保健电子产品中安全隔离的未来发展