本文結合該文檔簡單的總結了AP端功耗問題分析手段。shell
首先是官方功耗分析流程圖:debug
注意幾個關鍵的名詞:3d
Modem 調制解調器芯片日誌
RPM Resource Power Manager是高通MSM平臺另外加的一塊芯片,控制整個電源相關的shared resourcescode
APSS 應用處理器子系統,就是日常咱們說的APblog
功耗問題通常分爲低電流太高,或者異常喚醒形成。文檔
本文只站在AP的角度分析功耗問題,也就是Android系統的角度。ast
低電流太高首先要驗證系統是否進入了最低功耗狀態。VDD最小狀態。module
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最小狀態。cli
這一塊主要查看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 查看喚醒鎖,哪一個鎖形成沒法休眠