Android 功耗(3)---高通功耗问题分析方法
时间:2022-07-24
本文章向大家介绍Android 功耗(3)---高通功耗问题分析方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文结合该文档简单的总结了AP端功耗问题分析手段。
首先是官方功耗分析流程图:
注意几个关键的名词:
Modem 调制解调器芯片
RPM Resource Power Manager是高通MSM平台另外加的一块芯片,控制整个电源相关的shared resources
APSS 应用处理器子系统,就是平常我们说的AP
功耗问题一般分为低电流过高,或者异常唤醒造成。
本文只站在AP的角度分析功耗问题,也就是Android系统的角度。
低电流过高首先要验证系统是否进入了最低功耗状态。VDD最小状态。
mount -t debugfs none /sys/kernel/debug/
cat /sys/kernel/debug/rpm_stats 获取系统是否休眠。验证XO关闭和VDD最小化
RPM Mode:xosd
count:0
time in last mode(msec):0
time since last mode(sec):1275
actual last sleep(msec):0
client votes: 0x03030303
RPM Mode:vmin
count:0 //有计数则说明系统进入最低功耗状态
time in last mode(msec):0
time since last mode(sec):1275
actual last sleep(msec):0
client votes: 0x00000000
如果系统没有进入VDD最小状态,则要检查那一项阻止了终端进入VDD最小状态。
这一块主要查看RPM的外部日志。分析,略。
下面分析异常唤醒造成的功耗问题
查看AP端的异常唤醒源,查看modem那块的略过。
echo 1 >/sys/module/msm_show_resume_irq/parameters/debug_mask
echo "8 8 8 8">/proc/sys/kernel/printk
通过查看唤醒锁的状态主要查看active_since字段可以查看,哪个锁造成系统无法休眠。
总结:对于AP端判断功耗问题,一般从低电流状态判断。
排除方法:移除一些外部驱动程序,如sensor,tp,camera,LCD等。
cat /sys/kernel/debug/rpm_stats 获取系统是否休眠。验证XO关闭和VDD最小化
echo 1 >/sys/module/msm_show_resume_irq/parameters/debug_mask
查看log获取异常唤醒源
echo "8 8 8 8">/proc/sys/kernel/printk
adb shell cat/sys/kernel/debug/wakeup_sources > j:777.txt 查看唤醒锁,哪个锁造成无法休眠
- uva------(11464)Even Parity
- java SE学习之线程同步(详细介绍)
- java多线程的常用方法(以及注意事项)
- MFC学习之窗口基础
- java多线程下如何调用一个共同的内存单元(调用同一个对象)
- java之多线程(Thread)
- HDUOJ------3336 Count the string(kmp)
- hduoj------2594 Simpsons’ Hidden Talents
- 通过Xtrabackup日志来恢复检查点文件
- POJ--2158--------------Milking Grid(最小覆盖字符矩阵)---(开二维kmp)
- poj-------------(2752)Seek the Name, Seek the Fame(kmp)
- hust--------The Minimum Length (最短循环节)(kmp)
- hdu-----(3746)Cyclic Nacklace(kmp)
- javaSE之如何将一个文件复制到另一个文件
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释