高通平台ramdump-parse工具生成
- 1. 获取GNU-TOOLS
- aosp-caf 源码目录下:
- 自行下载GNU-Tools:
- 2. 获取ramdump-parser
- aosp-caf 源码目录下:
- 自行下载ramdump-parser:
- 3. 修改linux-ramdump-parser-v2/local_settings.py
- 4. 编写执行脚本
- 5. 输出解析结果
1. 获取GNU-TOOLS
aosp-caf 源码目录下:
aosp-caf/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin目录下,
或者:
aosp-caf/out/.path 目录下:
aosp-caf/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin$ ls aarch64-linux-android
-*
aarch64-linux-android-addr2line aarch64-linux-android-gcc-ar aarch64-linux-android-ld aarch64-linux-android-ranlib
aarch64-linux-android-ar aarch64-linux-android-gcc-nm aarch64-linux-android-ld.bfd aarch64-linux-android-readelf
aarch64-linux-android-as aarch64-linux-android-gcc-ranlib aarch64-linux-android-ld.gold aarch64-linux-android-size
aarch64-linux-android-c++filt aarch64-linux-android-gcov aarch64-linux-android-nm aarch64-linux-android-strings
aarch64-linux-android-dwp aarch64-linux-android-gcov-tool aarch64-linux-android-objcopy aarch64-linux-android-strip
aarch64-linux-android-elfedit aarch64-linux-android-gprof aarch64-linux-android-objdump
自行下载GNU-Tools:
git clone https://android-git.linaro.org/git/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9-linaro.git
或者通过Linaro Releases 下载 toolchain,请注意下载正确的对应版本
https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu/
2. 获取ramdump-parser
aosp-caf 源码目录下:
aosp-caf/vendor/qcom/opensource/tools/linux-ramdump-parser-v2
自行下载ramdump-parser:
git clone https://gitlab.com/Codeaurora/platform_vendor_qcom-opensource_tools.git
git clone https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/tools.git
3. 修改linux-ramdump-parser-v2/local_settings.py
参考以下内容修改:
将gdb,nm,objdump和ramdump解析工具放到下面路径中,需要区分32/64位.
import parser_util,os,sys
gdb_path = "/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb"
nm_path = "/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm"
objdump_path = "/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdump"gdb64_path = "/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb"
nm64_path = "/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm"
objdump64_path = "/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdump"
4. 编写执行脚本
将gdb,nm,objdump和ramdump解析工具放到下面路径中,需要区分32/64位.
# ramdump-parser.sh#! /bin/bashecho ""
echo "Start ramdump parser.."local_path=$PWD
ramdump=$local_path/
vmlinux=$local_path/vmlinux
out=$local_path/outgdb=/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb
nm=/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm
objdump=/opt/toolchain/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdumpramparse_dir=~/tools/ramdump/tools/linux-ramdump-parser-v2
########################################################################################echo "cd $ramparse_dir"
cd $ramparse_dir
echo ""echo -e "python3 ramparse.py --force-hardware msmnile --auto-dump ./ -x -g $gdb -n $nm -j $objdump -v $vmlinux -o $out"
echo ""# python 3.5
python3 $ramparse --force-hardware msmnile --auto-dump ./ -x -g $gdb -n $nm -j $objdump -v $vmlinux -o $outcd $local_path
echo "out: $out"
echo ""
exit 0
5. 输出解析结果
将Ramdump + vmlinux文件放在同一级目录:
$ ls
CD_BTDDR.BIN DCC_CFG.BIN DDRCS1_0.BIN FSM_CTRL.BIN IPA_SEQ.BIN MSGRAM11.BIN MSGRAM2.BIN MSGRAM8.BIN PMIC_PON.BIN smmu_s1_fault.txt
CD_BTIMM.BIN DCC_SRAM.BIN DDRCS1_1.BIN FSM_STS.BIN IPASHRAM.BIN MSGRAM12.BIN MSGRAM3.BIN MSGRAM9.BIN PMON_HIS.BIN vmlinux
CD_SHIMM.BIN DDRCS0_0.BIN DDRCS1_2.BIN IPA_GSI.BIN IPA_SRAM.BIN MSGRAM13.BIN MSGRAM4.BIN OCIMEM.BIN rdp
CD_STRCT.BIN DDRCS0_1.BIN DDRCS1_3.BIN IPA_HRAM.BIN load.cmm MSGRAM14.BIN MSGRAM5.BIN out RST_STAT.BIN
CODERAM.BIN DDRCS0_2.BIN DDR_DATA.BIN IPA_IU.BIN MSGRAM0.BIN MSGRAM15.BIN MSGRAM6.BIN PART_BIN.BIN run.sh
DATARAM.BIN DDRCS0_3.BIN dump_info.txt IPA_MBOX.BIN MSGRAM10.BIN MSGRAM1.BIN MSGRAM7.BIN PIMEM.BIN SHRM_MEM.BIN
执行ramdump-parser.sh脚本:
Start ramdump parser..
/opt/linux-ramdump-parser-v2[1/66] --sched-info ... 1.996608s[2/66] --cbmem ... 0.066669s[3/66] --clock-dump ... 3.496971s[4/66] --print-svm-vcpu-ctx ... 0.000497s[5/66] --cpr3-info ... 0.080281s[6/66] --cpr-info ... 0.034651s[7/66] --cpu-state ... 0.015171s[8/66] --ddr-compare ... 2.181965s[9/66] --check-for-watchdog ... 0.024302s[10/66] --watchdog ... 3.379377s[11/66] --parse-debug-image ... 1.904012s[12/66] --dmesg ... 0.523119s[13/66] --dtb ... 0.012884s[14/66] --print-f2fs ... 2.409996s[15/66] --print-filetracking ... 229.818691s[16/66] --print-tasks ... 3.656492s[17/66] --print-tasks-timestamps ... 0.008771s[18/66] --check-for-panic ... 0.021907s[19/66] --hotplug ... 0.606848s[20/66] --hyp-log ... FAILED! 0.000963s[21/66] --print-iommu-pg-tables ... 28.634773s[22/66] --ipa ... 13.098149s[23/66] --ipc_logging ... 0.119332s[24/66] --print-irqs ... 1.744312s[25/66] --kbootlog ... 0.034949s[26/66] --print-kconfig ... 0.001530s[27/66] --l1-compare ... 0.000360s[28/66] --lockdep-heldlocks ... 0.000016s[29/66] --properties ... found process init 1.947400s[30/66] --logcat ... found process logdfound process init 1.229178s[31/66] --logcat-mini ... FAILED! 0.021597s[32/66] --logcat-v2 ... FAILED! 0.367746s[33/66] --print-zram ... 1.469001s[34/66] --lpm ... 6.359503s[35/66] --print-mdssinfo ... FAILED! 2.530681s[36/66] --print-memstat ... 0.290634s[37/66] --print-memory-info ... 1.025709s[38/66] --mmcdoctor ... 0.024299s[39/66] --modules_table ... FAILED! 0.533833s[40/66] --dump-page-tables ... 0.000180s[41/66] --print-pagealloccorruption ... 0.000016s[42/66] --print-pagetracking ... FAILED! 0.390792s[43/66] --print-pagetypeinfo ... 0.912549s[44/66] --pstore ... 0.000029s[45/66] --qrtr-ports ... 2.015823s[46/66] --regulator ... 6.260499s[47/66] --print-reserved-mem ... 0.413587s[48/66] --print-cma-areas ... 4.174209s[49/66] --print-softirq-stat ... 0.203490s[50/66] --print-qsee-log ... 0.337449s[51/66] --rm-log ... FAILED! 0.001325s[52/66] --check-rodata ... 0.110045s[53/66] --print-rtb ... 0.088392s[54/66] --print-runqueues ... 2.967548s[55/66] --smmu-s1-fault ... Unknown message disregarded, line says: non-coherent table walkUnknown message disregarded, line says: (IDR0.CTTW overridden by FW configuration)Unknown message disregarded, line says: stream matching with 6 register groupsUnknown message disregarded, line says: non-coherent table walkUnknown message disregarded, line says: (IDR0.CTTW overridden by FW configuration)Unknown message disregarded, line says: stream matching with 95 register groups0.089600s[56/66] --spm ... FAILED! 0.129877s[57/66] --thermal-info ... 3.124397s[58/66] --thermal-temp ... 0.044073s[59/66] --timer-list ... 1.348593s[60/66] --ubwcp ... 0.044256s[61/66] --uevent ... 1.204906s[62/66] --vm-minidump-sample ... FAILED! 0.001175s[63/66] --print-vmalloc ... 2.237236s[64/66] --print-vmstats ... 6.545621s[65/66] --wakeup ... 1.427594s[66/66] --print-workqueues ... 1.106207sout: /home/test/work/temp/Port_COM19/out
最终解析结果如下:
$ ls
anomalies.json cprinfo.txt
arm_iommu_domain_00__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF96579C5000.txt DDRCacheCompare.txt
arm_iommu_domain_01__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF9657A7F000.txt devicetree.dtb
arm_iommu_domain_02__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF9699E8F000.txt dmesg_TZ.txt
arm_iommu_domain_03__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF966931D000.txt f2fs_info.txt
arm_iommu_domain_04__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF96A36DB000.txt fcm.bin
arm_iommu_domain_05__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF9655A1D000.txt file_tracking.txt
arm_iommu_domain_06__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF967AF98000.txt hotplug.txt
arm_iommu_domain_07__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF967AFCF000.txt ipalog.txt
arm_iommu_domain_08_soc_qcom_msm_audio_apr_qcom_msm_audio_ion_0xFFFFFF9683926000.txt ipc_logging
arm_iommu_domain_09__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF9686BBA000.txt kconfig.txt
arm_iommu_domain_10__qcom_msm_npu_0xFFFFFF9687534000.txt kernel_boot_log.txt
arm_iommu_domain_11_aa_qcom_vidc_secure_pixel_cb_0xFFFFFF9687A84000.txt kva_output.txt
arm_iommu_domain_12_aa_qcom_vidc_secure_bitstream_cb_0xFFFFFF9687A81000.txt l1_cache.txt
arm_iommu_domain_13_aa_qcom_vidc_secure_non_pixel_cb_0xFFFFFF9687A7C000.txt launch_t32.sh
arm_iommu_domain_14_aa_qcom_vidc_non_secure_cb_0xFFFFFF9687A78000.txt logcat.bin
arm_iommu_domain_15_a_ssusb_0xFFFFFF9688871000.txt lpm.txt
arm_iommu_domain_16___0xFFFFFF96888BA000.txt memory.txt
arm_iommu_domain_17___0xFFFFFF96888AD000.txt mem_stat.txt
arm_iommu_domain_18_a_ssusb_0xFFFFFF9688F01000.txt modules_table.txt
arm_iommu_domain_19__c_qcom_qupv_geni_se_0xFFFFFF968967E000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x0
arm_iommu_domain_20_cc_qcom_qupv_geni_se_0xFFFFFF9689DF2000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x1
arm_iommu_domain_21_ac_qcom_qupv_geni_se_0xFFFFFF9689DEF000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x2
arm_iommu_domain_22__c_qcom_qupv_geni_se_0xFFFFFF968A9D4000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x3
arm_iommu_domain_23_soc_qcom_cam_smmu_msm_cam_smmu_ife_cp_0xFFFFFF968AD69000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x4
arm_iommu_domain_24_soc_qcom_cam_smmu_msm_cam_smmu_lrme_0xFFFFFF968AD63000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x5
arm_iommu_domain_25_soc_qcom_cam_smmu_msm_cam_smmu_fd_0xFFFFFF968AD60000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x6
arm_iommu_domain_26_soc_qcom_cam_smmu_msm_cam_smmu_cpas_cdm_0xFFFFFF968AD5A000.txt MSM_DUMP_DATA_L1_DATA_CACHE_0x7
arm_iommu_domain_27_soc_qcom_cam_smmu_msm_cam_smmu_icp_0xFFFFFF968B49D000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x0
arm_iommu_domain_28_soc_qcom_cam_smmu_msm_cam_smmu_jpeg_0xFFFFFF968BC47000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x1
arm_iommu_domain_29_soc_qcom_cam_smmu_msm_cam_smmu_ife_0xFFFFFF968BC42000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x2
arm_iommu_domain_30_soc_qcom_smmu_sde_unsec_cb_0xFFFFFF968BC38000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x3
arm_iommu_domain_31_soc_qcom_smmu_sde_sec_cb_0xFFFFFF968B434000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x4
arm_iommu_domain_32__qcom_ethernet_ethqos_emb_smmu_0xFFFFFF968BD90000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x5
arm_iommu_domain_33__ca_qcom_kgsl_iommu_gfx_d_secure_0xFFFFFF968FBAB000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x6
arm_iommu_domain_34__ca_qcom_kgsl_iommu_gfx_d_secure_0xFFFFFF968FBA9000.txt MSM_DUMP_DATA_L1_INST_CACHE_0x7
arm_iommu_domain_35__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF968FBA6000.txt page_tables.txt
arm_iommu_domain_36__ca_qcom_kgsl_iommu_gfx_d_user_0xFFFFFF968FBA4000.txt pagetypeinfo.txt
arm_iommu_domain_37__c_a_qcom_gmu_0xFFFFFF968FB97000.txt Properties.txt
arm_iommu_domain_38__c_a_qcom_gmu_0xFFFFFF968FB92000.txt qrtr_port.txt
arm_iommu_domain_39_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF89A05AE000.txt qsee_log.txt
arm_iommu_domain_40_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF89A05AA000.txt regulator.txt
arm_iommu_domain_41_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF89A05A6000.txt reserved_mem.txt
arm_iommu_domain_42_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF89A05A1000.txt roareadiff.txt
arm_iommu_domain_43_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF89A059D000.txt scratch.bin
arm_iommu_domain_44_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF89A0598000.txt sde_evtlog.txt
arm_iommu_domain_45_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF89A0594000.txt sde_regdump.txt
arm_iommu_domain_46_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF969119A000.txt sde_reglog.txt
arm_iommu_domain_47_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF969076E000.txt sdi_dump_table.txt
arm_iommu_domain_48_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF969074E000.txt secure_world_core0_regs.cmm
arm_iommu_domain_49_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF9691113000.txt secure_world_core1_regs.cmm
arm_iommu_domain_50_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF96AA9FA000.txt secure_world_core2_regs.cmm
arm_iommu_domain_51_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF9690787000.txt secure_world_core4_regs.cmm
arm_iommu_domain_52_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF96907B7000.txt secure_world_core5_regs.cmm
arm_iommu_domain_53_soc_qcom_msm_fastrpc_qcom_msm_fastrpc_compute_cb__0xFFFFFF96AAEC2000.txt secure_world_core6_regs.cmm
arm_iommu_domain_54_soc_ipa_smmu_uc_0xFFFFFF96AAF5B000.txt secure_world_core7_regs.cmm
arm_iommu_domain_55_soc_ipa_smmu_wlan_0xFFFFFF96AAF50000.txt spm.txt
arm_iommu_domain_56_soc_ipa_smmu_ap_0xFFFFFF96AAF2C000.txt t32_config.t32
ClockDumps.txt t32_startup_script.cmm
cma_report_adsp_region.txt tasks_highlight.txt
cma_report_cdsp_region.txt tasks_sched_stats
cma_report_dma_contiguous_default_area.txt tasks.txt
cma_report_mem_dump_region.txt thermal_info
cma_report_qseecom_ta_region.txt timerlist.txt
cma_report_secure_display_region.txt tmc-etf.bin
cma_report_simple.txt tmc-etf-swao.bin
cma_report_sp_region.txt tmc_etf_swao.txt
cma_report_user_contig_region.txt tmc_etf.txt
core0_regs.cmm tmc-etr.bin
core1_regs.cmm tmc_etr.txt
core2_regs.cmm uevent.txt
core4_regs.cmm vmalloc.txt
core5_regs.cmm vmstats.txt
core6_regs.cmm vm_vcpu_context.txt
core7_regs.cmm wakeup_resource.txt
cpr3_info.txt