Android linux(earlysuspend、lateresume)睡眠唤醒机制简介

发 布 时 间 : 2013/6/3    来 源 :     作 者 : ,   浏 览 :235
背景介绍:

睡眠/唤醒嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以是嵌入式设备尽可能的进入休眠状态来延长电池的续航时间(这在移动终端消费类电子设备中是非常重要和有意义的!!)。但标准的Linux睡眠唤醒机制有其自身的一些缺陷(所有模块必须同时睡下或者唤醒),在某些情况下,这会导致能耗的白白浪费。因此Android在标准Linux睡眠唤醒的机制上作了新的改动(wake_lock唤醒、early_suspend和late_resume机制),从而很好的解决上面的问题。Android2.3.1版本为例,详细介绍标准Linux睡眠/唤醒是如何工作的, 并且Android中如何把其自身特有的机制和Linux中标准的联系起来的

  标准Linux睡眠唤醒机制简介:

    在标准Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数,其调用顺序是按照驱动加载时的注册顺序。(3)休眠核心设备和使CPU进入休眠态冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文。 当这些进程被解冻的时候,它们是不知道自己被冻结过的,只是简单的继续执行。

    那么是如何让Linux进入休眠的呢?其实很简单,因为Androidkernel已经做了很多复杂的工作,所以用户只需可以通过读写sys文件/sys /power/state 就可以实现控制系统进入休眠。 

比如: echo  mem  /sys/power/state               使系统进行睡眠

       # echo  on   /sys/power/state     使系统从睡眠中唤醒过来

广州南嵌电子科技有限公司     官方网站  技术支持Email:NQARM2011@163.com