学习笔记 之 android 电源管理学习
2019-07-13 23:17发布
生成海报
一、电源管理文件组织结构
1、首先介绍一下android系统的结构:
应用程序(application)
应用程序框架(Application Framework)
各种库和android运行环境(HAL)
Linux操作层OS
可以参考下面的文章了解android的文件层次结构:
《android体系结构介绍 》
而电源管理模块贯穿了android的四大部分:应用层,框架层,HAL层和Kernel层。
参考下面:《Android电源管理文件组织结构》
二、android 的电源管理机制(参考:《Android 技术内幕》系统卷 扬丰盛著)
android 的电源管理机制只要是通过锁和定时器来切换系统的状态,是系统的功耗降至最低。
在应用层:android 提供了android.os.PowerManager类供应程序使用,用于控制设备的电源状态切换。
在框架层 :是再java中通过JNI 访问C++函数->HAL层->sysfs文件系统->调用内核提供的支持来实现。
三、android 的电源管理机制的具体实现
Linux 设备驱动模型最底层的数据结构:kobject、kset、kobj_type等。
kobject:
kset:
kobj_type:
1、电源管理模块的初始化
/kernel/kernel/power
kobject_create_and_add
static int __init pm_init(void) //初始化电源管理模块
{
int error = pm_start_workqueue();
if (error)
return error;
hibernate_image_size_init();
hibernate_reserved_size_init();
touch_evt_timer_val = ktime_set(2, 0);
hrtimer_init(&tc_ev_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
tc_ev_timer.function = &tc_ev_stop;
tc_ev_processed = 1;
power_kobj = kobject_create_and_add("power", NULL); //创建一个power的kobject
if (!power_kobj)
return -ENOMEM;
return sysfs_create_group(power_kobj, &attr_group); //是电源管理进入内核的接口,这里会建立几个文件,书上说:生成power的sys文件并返回
}
core_initcall(pm_init);
kobject_creat_and_add
sysfs_create_group
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮