电流
直播中

发财树

11年用户 457经验值
私信 关注
[问答]

待机电流过高bug如何解决

待机电流过高bug如何解决

回帖(1)

陈林

2021-10-13 10:19:17
前言:
待机电流达到30ma
用cat d/rpm_stats查看,结果如下:
  root@msm8916_64:/ # cat d/rpm_stats
cat d/rpm_stats
RPM Mode:xosd
count:0
time in last mode(msec):0
time since last mode(sec):481
actual last sleep(msec):0
client votes: 0x03030303
  RPM Mode:vmin
count:0
time in last mode(msec):0
time since last mode(sec):481
actual last sleep(msec):0
client votes: 0x00000000
  检查rpm_stats是否进入vdd min或者xo/no shutdown。
如果vmin的count是0,则表明设备从来没有进入vdd min;non-zero则说明设备进入过vdd_min。
现在是0,表明没有进入过vdd min模式,就是最低功耗模式。
  1.因为此项目只有wifi,不需要射频
因此:把msm8916-regulator.dtsi中的ldoa18,配置为status = “disable”;同时去掉regulator-always-on;
虽然不用modem,但是仍旧要刷qcn来配置其中的参数来使得modem可以正常休眠。否则休眠电流仍旧会达到30ma之大。
  2.抓一份dump的log,用qpst
步骤如下:
2.1把设备配置为可以进入dump模式,依照配置log
2.2接上u***,敲入以下命令
执行: adb root;
adb shell;
cd /sys/kernel/debug/spmi/spmi-0;
echo 0x844 > address;
echo 4 > count;
echo 0x00 0x00 0x01 0x00 > data;
echo 0x00 0x00 0x01 0x80 > data;
2.2执行完后,拔掉u***待机。待机完后,打开qpst,接上u***,按下 “音量减”键,就会抓取dump.
2.3解析后的RPM dump 和 QCAP 上传分析.
下载了火狐浏览器后,进入高通分析qcap的网址,把dump的目录输入,并且在dump目录中加入几个文件,例如加入vmlinux可以获得APPS的分析,加入RPM_AAAAANAAR.elf和qsee.elf可以获得RPM和TZ的分析。
下载并把分析报告发给高通。
  3.通过高通分析得到如下结论:
在上传的QCAP中的RPM分析中:
npa_resource (name: “/xo/cxo”) (handle: 0x95938) (units: Enable) (resource max: 1) (active max: 1) (active state: 1) (active headroom: 0) (request state: 1)
xo代表晶振,说明ap电源的晶振没有休眠,还处于active状态,因此属于ap没有休眠下去。
  ap:大多数的手机都含有两个处理器。操作系统、用户界面和应用程序都在Application Processor(AP)上执行,AP一般采用ARM芯片的CPU。
bp:而手机射频通讯控制软件,则运行在另一个分开的CPU上,这个CPU称为Baseband Processor(BP)。
  命令dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。
在dmesg的log中:
msm_mpm_interrupts_detectable(): gpio preventing system sleep modes during suspend hwirq: 8
从中可以看出在挂起的时候,是gpio 8 禁止了系统进入深度休眠。
  4.通过排查发现,我们的gpio 8被配置为home键
home {
label = “home”;
gpios = <&msm_gpio 8 0x1>;
linux,input-type = <1>;
linux,code = <102>;
gpio-key,wakeup;
debounce-interval = <15>;
};
gpio-key,wakeup: Boolean, button can wake-up the system.
  同时,用命令cat /proc/interrupts,查看系统中断发现,gpio 8正作为中断被使用
  高通人员回复:当gpio 8被设置为可以中断的时候,系统是不会进入最低功耗的。因此要把home键设置为其他引脚。
  最后把gpio 108作为home键的时候,成功进入vddmin模式,同时待机电流为5~8ma。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分