对于移动设备,电源管理是相当重要的一部分,因为现在在公司主要负责电源管理部分,所以借用Google对其研究了一下,再结合自己的工作经验,准备接下来写一系列相关的文章。因为现在还研究得不够,所以最初的文章会不够深入。不过我会慢慢研究,然后写一些比较详细的解读。
高通的引导体系结构
SBL- Second BootLoader
电源管理框图
这里先借用网上一张老版本的图片,后面再自己绘制一张详细的框图补上来。
主要文件及路径
1 | kernel\kernel\power\* |
Android结构
Android的电源管理主要通过锁和定时器来切换系统的状态(即三种低功耗状态),使系统功耗降到最低。 电源管理架构分为四大部分: APP,Framework,Hal,Kernel。
应用层(APP)
应用层主要指应用程序及其他使用电源管理的service。
架构层(Framework)
Framework层为APP提供API接口及协调电源的管理工作,主要包含:
1 | PowerManager.java // 提供给应用层调用 |
这一层的功能相对比较复杂,比如系统状态的切换,背光的调节及开关,Wake Lock的申请和释放等等,但这一层跟硬件平台无关。
Hal层
Hal层为一个Power.c文件,该文件通过sysfs的方式与kernel进行通信。主要功能有申请wake_lock,释放wake_lock,设置屏幕状态等。所有对电源管理的调用应通过Android的PowerManager API来完成。
Kernel层
Kernel层的电源管理方案实现主要包含三部分:
1 | Kernel\power\:实现了系统电源管理框架机制 |
android提供了三种低功耗状态:
1 | earlysuspend //让某些设备选择进入某种功耗较低的状态,如LCD灭掉 |
电源管理机制
Android的电源管理主要通过锁和定时器来切换系统的状态(如上述三种低功耗状态),使系统功耗降到最低.
实现流程