1、休眠问题定位
1.1、wake_lock 导致无法休眠
可以通过 cat /sys/
power/wake_lock(只能看到
Android 的锁无法看到
kernel 中设置的锁) 和 cat /sys/kernel/debug/wake_source(有锁都可以看到,即使你通 过命令行 echo xxxxx> /sys/power/wake_lock 输入的)
1.2、休眠的过程中断产生,或者驱动的休眠函数里面有 wake_lock
1.3、判断出 2S 内会有闹钟中断产生
1.4、实验
在驱动代码的休眠函数中加 wake_lock 阻止系统休眠(从对应的 log 可以看到, 虽然休眠失败,带他会去执行对应驱动 resume 函数)
二、休眠唤醒流程时间
以 rk3399 为例,从按下 power 键到背光
PWM 有波形输出的时间在 972mS。
若发现休眠唤醒时间太长可以通过以下方法定位:
2.1、命令行形式定位
echo N > /sys/module/printk/parameters/console_suspend
echo 1 > /sys/power/pm_print_times
打印出每个设备休眠的耗时
2.2、打开 DPM_WATCHDOG_TIMEROUT
三、Pm-test 使用说明:
3.1、/sys/power/pm_test
可以设置 pm-test 唤醒的间隔时间,默认是 5s
rk3399:/ # cat /sys/power/pm_test
[none] core processors platform
devices freezer
# echo 30 > /sys/module/suspend/parameters/pm_test_delay
# echo core > /sys/power/pm_test
# echo mem > /sys/power/state
......
更多详细内容下载附件查看