在新项目中,关机充电时,由于AP没有休眠,功耗过大,导致关机充电时间过长。于是想到一下解决办法。
具体措施如下:
(1) 背光关闭后,进入EARLY_SUSPEND,并且停止刷屏。
(2) 使CPU的频率进入动态管理模式,这样的话,在关闭背光后CPU的主频会降到最小频率122M。
经过上述措施,关机充电的耗流能降低到<40ma。
-------------------------------------------
背光关闭后,进入EARLY_SUSPEND状态
1>进入关机充电显示之前,申请一个wake_lock
write_file("/sys/power/wake_lock","charger_suspend",sizeof("charger_suspend"));
退出时释放wake_lock。
write_file("/sys/power/wake_unlock","charger_suspend",sizeof("charger_suspend"));
2>在设置背光的API中,如果设置背光为0,则往"/sys/power/state"写入"mem"(suspend to memory),将系统设置为睡眠状态,当设置
背光不为0时,往"/sys/power/state"写入"on",将系统设置为正常工作状态。
由于进入关机充电显示之前申请了一个wack_lock,所以系统不会完全进入休眠状态,系统会进入EARLY_SUSPEND状态
注:由于关机充电时,系统休眠时,将它设为suspend状态,当有拔USB或充电器事件发生时会出现系统崩溃,所以将系统设置为EARLY_SUSPEND状态,如果出现拔USB,会先唤醒设备再做关机操作。
-------------------------------------------
设置CPU的频率调节方式为ondemand
只要往"/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"写入"ondemand"即可。
ondemand, userspace, performance 分别是linux系统中三种CPU频率调节方式。
ondemand指的是平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。
performance指满速运行,即使系统负载非常低cpu的频率也为最高。则性能很好,但是电量消耗较快,温度也高一些。
userspace我基本没用过,应该是指用户指定居中的频率运行。