[Android稳定性] 第001篇 [方法篇] 高通Android平台稳定性分析介绍

0. 前言

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

1. 复位类型

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

复位类型 解释 备注
warm reset Many power rails are not reset, for example DDR 这种等级的reset将保留DDR memory以及一部分的PMIC寄存器
hard reset It 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 reset It will reset digital power supplied domain inside PMIC 将清空DDR memory,以及保留更多的PMIC寄存器,类似拔电池并保留VCOIN的状态
Xvdd hard reset It 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的工具

输入 符号表 解析器 路径 输出
Fulldump Vmlinux*.ko Linux-Ramdump-Parser vendor\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
FulldumpMinidump AOP_AAAAANAZO_aop.elf hansei.py AOP.HO.4.0\aop_proc\core\bsp\aop\scripts\hansei\hansei.py aop-summary.txt
aop-log.txt
OCIMEM.BINmd_TZ_IMEM.BIN print_tz_log.py TZ.XF.5.16\trustzone_images\ssg\bsp\tz\build\tz\A53_64\WAPIONAA\print_tz_log.py tzlog-parsed.txt
tzlog-parsed.txt NoC_error_decode_log.py TZ.XF.5.16\trustzone_images\core\systemdrivers\icb\scripts\nocerrorh\NoC_error_decode_log.py noc.txt
devicetree.dtb dtc devicetree.txt
DCC_SRAM.BIN dcc_parser.py vendor\qcom\opensource\tools\dcc_parser dcc_captured_data.xml

3. Linux ramdump parser

4. TRACE32的使用

5. 系统异常分类及原因