• 高通平台抓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

    如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
    若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
    博客地址:https://www.cnblogs.com/schips/
  • 相关阅读:
    Python super() 函数
    Python中的多继承
    sub eax, _PAGESIZE; decrease by PAGESIZE test dword ptr [eax],eax ; probe page
    ubuntu中的samba配置
    linux 相关命令
    Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义
    结构之法,算法之道:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
    C++ 构造函数和析构函数
    C++ 友元函数总结
    C++ 动态存储空间的分配和释放 new与malloc的区别
  • 原文地址:https://www.cnblogs.com/schips/p/capture_ram-dump-in_qualcomm.html
Copyright © 2020-2023  润新知