前言
在如今嵌入式可移动设备大热的时期,功耗是检测此设备一项重要的指标。如何能做到手机待机时间长久,而且用户还能玩的尽兴,这时候就必须对设备进行省电管理。那用什么省电方式呢? 比如在手机听音乐的时候关闭屏幕,在看电影的时候调节屏幕亮度等都可以用来省电。这些方法在linux操作系统中已经做了统一的实现: suspend/resume机制。本节就简单认识下linux下的电源管理。
电源状态
- On (on) S0-Working
- Standby (standby) S1- CPU and RAM are powed but not executed
- Suspend to Ram (mem) S2- RAM is powered and the running content is saved to RAM
- Suspend to Disk (disk) S3 - All content is saved to Disk and power down
S0状态也就是计算机正常工作状态。
S1状态简称standby状态,此状态下CPU处于低功耗状态,并且没有数据保存到RAM或者disk中,此状态待机和恢复通常很快。
S2状态简称STR,此状态下计算机会冻结所有的活动并将当前工作状态保存到RAM中,然后关闭屏幕进入低功耗模式,通常睡眠和唤醒需要几秒。
S3状态简称SRD或者Hibernate,代表冬眠,意识是比较长久,一般在window系统中常见到。此状态下计算机将所有活动的状态保存到磁盘中,然后处于关机状态,此模式下是不耗电的,而相比之前的模式,休眠和唤醒的速度都比较慢。
下图是四种状态的功耗和唤醒速度对比。
关于suspend/standby/hibernate的区别可以看此地址:http://blog.csdn.net/vaqeteart/article/details/4158058
睡眠唤醒体验
如果你用的系统是window,就可以直接在开始按钮出,选择各种睡眠类型。
如果你用的是linux,就可以直接通过命令行操作,以我的系统Ubuntu为例子:
1. 查看系统支持的睡眠方式
root@test:~$ cat /sys/power/state
mem disk
可以看到ubuntu系统支持的睡眠方式有,suspend to ram和suspend to disk
2. echo mem > /sys/power/state
此方式就可以达到睡眠,按任意按键可以唤醒计算机。
在android手机上查看睡眠方式。
root@test:/ # cat /sys/power/state
standby mem
可以看到手机上没有disk方式,因为嵌入式都不带disk设备的。
通过echo mem > /sys/power/state可以使手机睡眠,同时按下power按键可以唤醒手机。