0. 前言

鉴于研发人员当遇到底层稳定性问题时(主要为Linux kernel crash),不知道如何分析或者不知道使用哪些工具进行分析,所以本文主要介绍这方面的基础知识点。

1. 复位类型

首先我们需要了解高通pmic的几种复位类型:

复位类型解释备注
warm resetMany power rails are not reset, for example DDR这种等级的reset将保留DDR memory以及一部分的PMIC寄存器
hard resetIt will not reset digital/analogic power domain inside PMIC,but will reset power rails that are exported externally将清空DDR memory,以及保留和warm reset一样的部分PMIC寄存器
Dvdd hard resetIt will reset digital power supplied domain inside PMIC将清空DDR memory,以及保留更多的PMIC寄存器,类似拔电池并保留VCOIN的状态
Xvdd hard resetIt will reset digital and analog power supplied domain in side PMIC将清空DDR memory和PMIC寄存器

简单来说:

  1. 如果想达到拔电池的reset效果,可以通过配置DVDD hard reset来实现
  2. 如果要达到拔掉纽扣电池的效果,配置XVDD hard reset。
  3. 如果要想触发reset后可以抓dump,需要warm reset。

所以当我们出现 Linux kernel crash时,需要抓的dump能够被抓到,实际上也就是因为进入了 warm reset模式,当 warm reset重启后进入了抓log的模式,然后配合高通的QPST工具就可以将异常现场的 ramdump抓取出来。

2. 解析dump的工具

输入符号表解析器路径输出
FulldumpVmlinux*.koLinux-Ramdump-Parservendor\qcom\opensource\tools\linux-ramdump-parser-v2(通用部分)
vendor\qcom\proprietary\ramdump-parser(芯片相关部分)
dmesg_TZ.txt
tasks
tasks_sched_stats
ftrace
logcat
msm_rtb
qsee_log
hyp_log
ipc_log
memory status
FulldumpMinidumpAOP_AAAAANAZO_aop.elfhansei.pyAOP.HO.4.0\aop_proc\core\bsp\aop\scripts\hansei\hansei.pyaop-summary.txt
aop-log.txt
OCIMEM.BINmd_TZ_IMEM.BINprint_tz_log.pyTZ.XF.5.16\trustzone_images\ssg\bsp\tz\build\tz\A53_64\WAPIONAA\print_tz_log.pytzlog-parsed.txt
tzlog-parsed.txtNoC_error_decode_log.pyTZ.XF.5.16\trustzone_images\core\systemdrivers\icb\scripts\nocerrorh\NoC_error_decode_log.pynoc.txt
devicetree.dtbdtcdevicetree.txt
DCC_SRAM.BINdcc_parser.pyvendor\qcom\opensource\tools\dcc_parserdcc_captured_data.xml

3. Linux ramdump parser

4. TRACE32的使用

5. 系统异常分类及原因