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

高通平台抓ram dump的更多相关文章

  1. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  2. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  3. 高通平台的bootloader过程【转】

    ====================基本知识=======================LK是(L)ittle (K)ernel的缩写.高通平台android普遍采用LK作为其bootloade ...

  4. 高通平台Bootloader启动流程【转】

    本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...

  5. 高通平台msm8909 LK 实现LCD 兼容

    前段时间小米出现红米note2 换屏门,现在我们公司也要上演了:有两个供应商提供不同IC 的LCD panel. 软件区分的办法是读取LCD IC 的ID 寄存器,下面解析高通平台LK中LCD兼容的过 ...

  6. [修改高通平台WIFI MAC 地址] & [adb over wifi]

    [修改高通平台WIFI MAC 地址]fccmd --helpfccmd startfccmd getwifimacfccmd setwifimac 74:AC:5F:F5:D7:40 [adb ov ...

  7. 高通qxdm抓取sensor的log【学习笔记】

    高通qxdm抓取sensor的log 打开qxdm,打开设置界面,去掉其他无关的log,打开Log packets .Message packets的SNS的log 之后需要把端口打开,把端口打开之后 ...

  8. Android : 高通平台Camera调试之SetpropKey/camxoverridesettings.txt

    高通相关网址:Createpoint: https://createpoint.qti.qualcomm.com(可下载文档,Release Note等)Chipcode: https://chipc ...

  9. android 6.0 高通平台sensor 工作机制及流程(原创)

    最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...

  10. 高通平台MSM8916LCM模块移植(一)-bootloader部分

    此次移植打算分成两个模块来说,bootloader部分和kernel部分.在实际的移植调试过程中也是这么分成了两个部分分别调试. 高通平台中的bootloader叫做LK(Little Kernel, ...

随机推荐

  1. vue-单独引入css文件,设置公共的css样式或者修改默认的vant,mint样式

    1.css文件夹下新建global.css文件并粘贴复制: ======================= :root{     --bgColor : #d3252a;     --pinkColo ...

  2. 8.7K+ Star!快速搭建个人在线工具箱

    大家好,我是 Java陈序员. 作为一名 "CV 工程师",每天工作中需要用到各种各样的工具来提高效率. 之前给大家安利过一款离线的开发工具集合,今天给大家推荐一款在线的开发工具箱 ...

  3. 【爬虫+数据清洗+可视化分析】Python舆情分析哔哩哔哩"狂飙"的评论

    目录 一.背景介绍 二.爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间 ...

  4. 等保测评--postgresql修改默认超级用户,建立普通用户使用

    1.postgresql权限说明 SELECT INSERT UPDATE DELETE TRUNCATE REFERENCES TRIGGER CREATE CONNECT TEMPORARY EX ...

  5. StarCoder2-Instruct: 完全透明和可自我对齐的代码生成

    指令微调 是一种技术,它能让大语言模型 (LLMs) 更好地理解和遵循人类的指令.但是,在编程任务中,大多数模型的微调都是基于人类编写的指令 (这需要很高的成本) 或者是由大型专有 LLMs 生成的指 ...

  6. 九、.net core(.NET 6)添加通用的Redis功能

     .net core 编写通用的Redis功能 在 Package项目里面,添加包:StackExchange.Redis: 在Common工具文件夹下,新建 Wsk.Core.Redis类库项目,并 ...

  7. mybatis-plus id在高并发下出现重复

    mybaits-plus ASSIGN_ID生成 id生成策略 在分布式高并发环境下出现重复id https://github.com/baomidou/mybatis-plus/issues/307 ...

  8. python openstacksdk

    调用方法 参考地址 https://github.com/openstack/openstacksdk 注意事项 1.需要安装openstacksdk.我这里装的好像是1.5版本的.opentask接 ...

  9. 一文了解npm install -g和npm install --save-dev的关系

    本文分享自华为云社区<npm install -g 和 npm install --save-dev 的关系>,作者: SHQ5785. 一.npm install 本地安装 将安装包放在 ...

  10. django中实现Markdown

    分为两个部分: ------------后台使用Markdown编辑 ------------前端使用Markdown展示 准备工作: pip install django-mdeditor # 用于 ...