功耗优化之Sensor功耗分析
- 一、Sensor功耗问题分类
- 二、Sensor功耗问题分析方法
-
- SSC子系统导致系统无法进入AOSD问题分析:
- SSC经常唤醒子系统AP问题分析方法
- SSC子系统的GPIO/PMIC配置错误导致系统漏电问题分析方法
- SSC子系统的sensor工作模式异常,导致系统功耗增加
一、Sensor功耗问题分类
:
- SSC子系统异常导致系统无法进入AOSD
- SSC子系统异常导致频繁唤醒AP
- SSC子系统的GPIO/PMIC配置错误导致系统漏电
- SSC子系统的sensor工作模式异常,导致系统功耗增加
- Android上层服务未正常关闭sensorservice,导致系统功耗增加
在sensor在功耗问题的分析中,sensor自身工作行为所产生的耗电是非常小的,大多数功耗问题都是由SSC(Snapdragon Sensor Core)子系统异常或Android异常调用上层服务sensorservice引起。
二、Sensor功耗问题分析方法
SSC子系统导致系统无法进入AOSD问题分析:
adb shell cat /sys/power/rpmh_stats/master_stats
APSS Version:0x1 Sleep Count:0x2bf90 Sleep Last Entered At:0x48e7ec7af00 Sleep Last Exited At:0x48e7ecfe85e Sleep Accumulated Duration:0x42b29deb96a
ADSP Version:0x1 Sleep Count:0xf17 Sleep Last Entered At:0x48a16986465 Sleep Last Exited At:0x48a16980931 Sleep Accumulated Duration:0x487a6e075f7
CDSP Version:0x1 Sleep Count:0x55 Sleep Last Entered At:0x1f39e3aadeb Sleep Last Exited At:0x1f39e3a6d3b Sleep Accumulated Duration:0x48e5fed220c
SLPI Version:0x1 Sleep Count:0x1e341a Sleep Last Entered At:0x48e7ed80b48 Sleep Last Exited At:0x48e7ed76c90 Sleep Accumulated Duration:0x473b8551197
基本可以断定子系统无法进入sleep
adb shell mv /vendor/lib64/libssc.so /vendor/lib64/libssc.so.bk adb shell mv /vendor/lib/libssc.so /vendor/lib/libssc.so.bk adb shell sync adb reboot
adb shell dumpsys sensorservice
adb shell 自研校准 -d <simple_time_ms> <SensorName> & ///使用校准工具
SSC经常唤醒子系统AP问题分析方法
All wakeup reasons: Wakeup reason Abort:Last active Wakeup Source: SensorService_wakelock, handle processSensorService: 16m 50s 349ms (1025 times) realtime Wakeup reason Abort:Wakeup IRQ detected during suspend: 103qcom,glink-smem-native-xprt-dsps: 2m 7s 108ms (126 times) realtime
adb shell mv /vendor/lib64/libssc.so/vendor/lib64/libssc.so.bk adb shell mv /vendor/lib/libssc.so/vendor/lib/libssc.so.bk adb shell sync adb reboot
adb shell dumpsys sensorservice
Connection Number: 4 Operating Mode: NORMAL com.qualcomm.qti.internal.telephony.DynamicSarController | WakeLockRefCount 0 | uid 1001 | cache size 0 | max cache size 0 sar_detector Non-wakeup 0x0000001e | statu: active | pending flush events 0
SAR ADUX1050 Wakeup0x00000025 | status: active | pending flush events 0
Hall Effect Sensor 0x00000034 | status: active | pending flush events 0