基于Android的Linux内核的电源管理:概述.doc

基于Android的Linux内核的电源管理:概述.doc

ID:27870000

大小:40.00 KB

页数:5页

时间:2018-12-06

基于Android的Linux内核的电源管理:概述.doc_第1页
基于Android的Linux内核的电源管理:概述.doc_第2页
基于Android的Linux内核的电源管理:概述.doc_第3页
基于Android的Linux内核的电源管理:概述.doc_第4页
基于Android的Linux内核的电源管理:概述.doc_第5页
资源描述:

《基于Android的Linux内核的电源管理:概述.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于Android的Linux内核的电源管理:概述    1.电源管理的状态  Android的Linux内核为系统提供了4种电源状态,内核的源代码为其中的3种定义了名字和对应的宏定义,名字定义在kernel/power/suspend.c中:  [cpp]viewplaincopyconstchar*constpm_states[PM_SUSPEND_MAX]={  #ifdefCONFIG_EARLYSUSPEND  [PM_SUSPEND_ON]=“on”,  #endif  [PM_SUSPEND_STANDBY]=“standby”,  [

2、PM_SUSPEND_MEM]=“mem”,  };  对应的宏定义在:include/linux/suspend.h中:  [cpp]viewplaincopytypedefint__bitwisesuspend_state_t;  #definePM_SUSPEND_ON((__forcesuspend_state_t)0)  #definePM_SUSPEND_STANDBY((__forcesuspend_state_t)1)  #definePM_SUSPEND_MEM((__forcesuspend_state_t)3)  #define

3、PM_SUSPEND_MAX((__forcesuspend_state_t)4)  很奇怪的是,第四种状态(disk)没有具体的定义,而是硬编码在代码中,不明白为什么会这样做,至少我现在看的版本是这样(2.6.35),这种就是所谓的suspendtodisk或者叫hibernate。不过这不是重点,再说,目前也很少有Android的设备支持hibernate。  顾名思义:  PM_SUSPEND_ON--设备处于全电源状态,也就是正常工作状态;  PM_SUSPEND_STANDBY--设备处于省电状态,但还可以接收某些事件,具体的行为取决与具体

4、的设备;  PM_SUSPEND_MEM--suspendtomemory,设备进入睡眠状态,但所有的数据还保存在内存中,只有某些外部中断才可以唤醒设备;  目前,大多数的Android设备都只支持其中的两种:PM_SUSPEND_ON和PM_SUSPEND_MEM,所以下面的讨论说道suspend的地方,均是指PM_SUSPEND_MEM。    2.EarlySuspend、LateResume  EarlySuspend和LateResume是Android在标准Linux的基础上增加的一项特性。当用户空间的向内核请求进入suspend时,这时

5、候会先进入earlysuspend状态,驱动程序可以注册earlysuspend的回调函数,当进入该状态时,内核会逐一地调用这些回调函数。例如显示屏的驱动程序通常会注册earlysuspend,在他的回调函数中,驱动程序会把屏幕和背光都关闭。在这种状态下,所有的后台进程都还在活动中,该播放歌曲的播放歌曲,该下载数据的依然在下载,只是显示屏不良而已。进入earlysuspend状态以后,一旦所有的电源锁(wakelock)被释放,系统马上会进入真正的suspend流程,直到最后系统停止工作,等待外部事件的唤醒。    图2.1电源状态的转换    3.

6、Android的电源锁机制:wakelock  Android相比标准的Linux内核,在电源管理中加入了wakelock机制。一旦申请了某种类型的锁,电源管理模块将会“锁住”某一种电源状态,目前,Android提供了两种类型的锁:  WAKE_LOCK_SUSPEND--阻止系统进入suspend状态;  WAKE_LOCK_IDLE--阻止系统进入idle状态;  wakelock也可以设定超时,时间一到,自动释放该锁。  有关wakelock的代码在:kernel/power/wakelock.c中。    4.电源状态迁移  内核启动完成以后

7、,电源管理系统会在sysfs文件系统中建立3个文件:  /sys/power/state  /sys/power/wake_lock  /sys/power/wake_unlock  电源状态的迁移首先由用户空间的应用程序发起,当系统应用检测到一定时间内没有用户活动后(例如触摸屏、按键),可以向/sys/power/state文件写入相应的电源状态名称(请参考第一节内容),如果写入“mem”,将会触发内核启动suspend的流程,内核将会按照图2.1进行状态的迁移。应用程序也可以通过/sys/power/wake_lock申请一个WAKE_LOCK_

8、SUSPEND类型的锁,相应地,通过/sys/power/wake_unlock则可以释放一个锁。内核在进入

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。