高通平台抓ram dump


高通平台抓ram dump

原文(有刪改):https://blog.csdn.net/m0_37166404/article/details/80821600

背景

高通平台下提供了一個工具,專門用來抓取內核死機以后的dump信息。如果只是非系統層面的crash(例如底層應用,安卓程序),則不能抓取dump信息。

在閱讀一些文檔的時候知道有這個功能,但是一直沒時間嘗試。

介紹

流程為:

1、進入dump模式:系統需要觸發crash, 同時機器需要進行warm reset

2、用QPST工具抓取dump:當進入warm reset的時候,QPST可以開始抓取ram dump了,此時電流應該為82.58mA(固定某個值)

3、使用QCAP進行解析。

注意,不要輕易重新上電,會導致現場丟失而錯失調試機會。

觸發Crash

這里有三種方法可以觸發crash,然后進入warm reset:

手動輸入命令

輸入以下命令

echo c > /proc/sysrq-trigger

之后按下音量下鍵,就會主動觸發crash 和 warm reset,之后就會抓取到ram dump了

路徑: 這里寫圖片描述

硬件觸發法

任何時候,拉低pmic的PS_HOLD引腳不超過200ms,就會觸發crash 和 warm reset

錯誤的驅動

例如:修改驅動代碼以及dts。

這個方法還沒有驗證

在msm-pm660.dtsi中修改

qcom,pon_2 {
        qcom,pon-type = <1>;
        qcom,support-reset = <1>;
        //qcom,pull-up = <1>;  --- 去掉
        qcom,s1-timer = <0>;   --- Specify if this pon type needs to handle bark irq
        qcom,s2-timer = <2000>;  ---- 2ms
        qcom,s2-type = <1>;   --- WARM(1)的type
        //linux,code = <114>; --- 去掉
        qcom,use-bark;
};

之后再按下音量下鍵兩秒

如果是在vddmin狀態下抓取的,可能需要在下面的代碼中注釋掉按鍵的觸發喚醒,否則抓到的就是喚醒的ram dump,而不是vdd min下的ram dump

kernel/msm-3.18/drivers/platform/msm/qpnp-power-on.c

在qpnp_pon_request_irqs中
/* mark the interrupts wakeable if they support linux-key */
 if (cfg->key_code) {
         //enable_irq_wake(cfg->state_irq);--------------注釋
         /* special handling for RESIN due to a hardware bug */
         if (cfg->pon_type == PON_RESIN && cfg->support_reset)
                 //enable_irq_wake(cfg->bark_irq);--------注釋
                 ;
 }

接下來就是解析抓到的ram dump

解析ram dump

參考文檔80-NR964-54SC(中文) 80-NR964-54

使用CrasScope分析:打開網站會提示調到java官網下載java,按提示安裝,並重啟瀏覽器。

1、軟件產品在aboot.html的Product項。

2、子系統分析選擇部分或者全部

3、選擇meta build的路徑,即modem代碼路徑或者單獨將需要的symbol文件放到dump抓取到的

log文件夾中,symbol文件的查找可參考下來提示。

 -Summary: 
 1) You can check your contexts.xml, such as : 
 <file_ref symbol="modem"> 
 <file_name>M8936FAAAANYZQ*.elf</file_name> 
 <file_path>modem_proc/build/ms/</file_path> 

在modem的contexts.xml文件中,查找sysbol或者elf的字符串對應的文件:

  • 如果機器的代碼跟編譯的代碼 不一致或者查找到的代碼不一致,會提示紅字體的解析失敗。
  • 成功后會生成一份文檔
## 附錄:Smart平台AT 命令查驗dump功能

輸入命令,查驗死機后是否直接開機而沒有進入dump

指令:at+qcfg="dumpenable"

[2021-01-25_14:20:39:547]at+qcfg="dumpenable"

[2021-01-25_14:20:39:578]DumpEnable: 0 

[2021-01-25_14:20:39:578]OK
  • at+qcfg="dumpenable",0 :表示死機后直接開機
  • at+qcfg="dumpenable",1:表示死機后進入dump

全部擦除再刷機,值應是為0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM