欢迎来到天天文库
浏览记录
ID:32864468
大小:152.40 KB
页数:4页
时间:2019-02-16
《android电源管理文件组织结构》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、AndroidPMArchitectureAndroid的电源管理主要是通过锁和定时器来切换系统的状态,使系统的功耗降至最低,整个系统的电源管理架构图如下:电源管理模块分为四大部分:应用层,框架层,HAL层和Kernel层。应用层:这里所谓的应用层主要是指应用程序和其他使用电源管理的Service,包括但不限于以下Services:frameworks/base/services/java/com/android/server/WindowManagerService.javaframeworks/base/services/java/com/and
2、roid/server/Watchdog.javaframeworks/base/services/java/com/android/server/HeadsetObserver.javaframeworks/base/services/java/com/android/server/WifiService.javaframeworks/base/services/java/com/android/server/AlarmManagerService.java……框架层:框架层的电源管理文件主要有:frameworks/base/core/java/
3、android/os/PowerManager.javaframeworks/base/services/java/com/android/server/PowerManagerService.javaframeworks/base/core/java/android/os/Power.javaframeworks/base/core/jni/android_os_Power.cpp其中PowerManagerService.java是核心,Power.java提供底层的函数接口,与JNI层进行交互。PowerManager.java是提供给应用层调
4、用的(图画的有点问题啊)。android_os_power.cpp是jni交互文件。这一层的功能相对比较复杂,比如系统状态的切换,背光的调节及开关,WakeLock的申请和释放等等,但这一层跟硬件平台无关。具体功能实现以后分析。HAL层:HAL层的文件只有一个:hardware/libhardware_legacy/power/power.c该文件通过sysfs的方式与kernel进行通信。主要功能有申请wake_lock,释放wake_lock,设置屏幕状态等。用户空间的native库绝不能直接调用Android电源管理(见上图)。绕过Androi
5、d运行时的电源管理政策,将破坏该系统。所有对电源管理的调用应通过Android的PowerManagerAPIs来完成。Kernel层:Kernel中电源管理好像有两种实现方法,其电源管理的核心文件是在{kernelsourcetree}/kernel/power/文件夹下。按照android的官方说法,在内核电源管理部分增加了一个android的driver文件:{kernelsourcetree}/drivers/android/power.c作为底层和sysfs系统之间的通信接口,实现了/sys/state/sys/request_state/
6、sys/acquire_full_wake_lock/sys/acquire_partial_wake_lock/sys/release_wake_lock然而,通过看G6的kernel源代码,并发现没有该文件。而是将电源管理的文件放在了arch目录下,直接与kernel/power/中的模块进行交互,主要文件有:{legend-G6kernelsourcetree}/arch/arm/mach-msm/pm.c{legend-G6kernelsourcetree}/arch/arm/mach-msm/htc_battery.c其与sysfs系统之间
7、的通信接口为:/sys/power/wake_lock/sys/power/wake_unlock/sys/power/state使用adb查看过K3手机的文件系统,就是生成这三个节点。HAL层对这两种sysfs接口都支持。最后是一张Android电源管理的状态转移图,具体细节以后分析。
此文档下载收益归作者所有