Memory dump是系统出现crash时常用的分析故障原因的方法,qualcomm 各子系统运行时,为方便debug,都会开辟ram log和debug variable用于保存各系统运行信息及健康状态,就像飞机黑盒子用于记录飞行器飞行状态。当出现crash时,可以将ram log 、debug variable所在的memory region dump出来分析导致故障的原因。所以当需要分析crash故障、功耗问题等,qualcomm都会要求客户提供正确的memory dump。Memory dump抓取分两种方法,一种是使用trace32 online抓取,这个比较简单,前提是需要trace32工具正确连接到主板jtag,并能正确通信,这样就可以直接读取需要的memory region,另一种方法是通过qpst offline抓取,这里重点讲述qpst offline抓取方式。
当系统crash会进入Sahara Memory Dump Mode如下图:
这时qpst会自动抓取memory dump ,如下
Memory dump 信息:
pref base length region file name
-------------------------------------------------------------------
1 0xFE800000 262144 OCIMEM OCIMEM.BIN
1 0xFC100000 131072 RPM Code RAM region CODERAM.BIN
1 0xFC190000 65536 RPM Data RAM region DATARAM.BIN
1 0xFC428000 16384 RPM MSG RAM region MSGRAM.BIN
1 0xFE090000 65536 LPASS LPM region LPM.BIN
1 0xF80498F0 8 Pmic PON stat PMIC_PON.BIN
1 0xF80498E8 4 Reset Status Region RST_STAT.BIN
1 0x0FE91000 2048 DDR Training Data DDR_DATA.BIN
1 0x00000000 1073741824 DDRCS0 Memory DDRCS0.BIN
当需要分析系统待机功耗问题,qualcomm需要确认系统是否进入xco shutdown模式,会需要分析rpm ram dump (RPM Code RAM region、RPM Data RAM region、RPM MSG RAM region),这时可以通过将ps_hold快速短地人为进入Sahara Memory Dump Mode