Qcom ramdump解析方法简介-- ramdump parser

首先得先抓取ramdump, 如何抓取qcom ramdump这里不再赘述。

进入本文正题:

拿到ramdump后,

首先需要拿到相应的符号文件, 如vmlinux放到ramdump的文件夹。

然后从source code中拿到解析ramdump的几个gnu工具,

aarch64-linux-android-gdb,aarch64-linux-android-nm,aarch64-linux-android-objdump

aarch64-linux-android-gdb不知在哪个版本开始android 源码中已不再提供了,所以需要自己从网上下载。

然后下载ramdump parser,  高通给文档里面写的是

git clone git://codeaurora.org/quic/la/platform/vendor/qcom-opensource/tools

但是下的版本往往过时的,所以建议使用source code里面的ramdump parser工具

路径如下:

vendor/qcom/opensource/tools/

工具准备好之后需要在ramdump parser 目录下新建一个local_settings.py,内容示例如下:

gdb_path = "gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gdb"
nm_path = "gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm"
objdump_path = "gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objdump"
gdb64_path = "gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdb"
nm64_path = "gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm"
objdump64_path = "gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-objdump"

再编写一个sh脚本用于执行解析:

# ramdump-parser.sh
#! /bin/bash
echo ""
echo "Start ramdump parser.."
local_path=$PWD
ramdump=$local_path/
vmlinux=$local_path/vmlinux
out=$local_path/out
gdb=~/Ramdump_tools/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdb
nm=~/Ramdump_tools/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm
objdump=~/Ramdump_tools/tools/gnu-tools/aarch64-linux-android-4.9/bin/objdump
# git clone git://codeaurora.org/quic/la/platform/vendor/qcom-opensource/tools
ramparse_dir=~/Ramdump_tools/tools/ramdump/tools/linux-ramdump-parser-v2
 
echo "cd $ramparse_dir"
cd $ramparse_dir
echo ""
echo -e "python ramparse.py -v $vmlinux -g $gdb -n $nm  -j $objdump --force-hardware 630 --phys-offset=0x40000000 -a $ramdump -o $out -x"
echo ""

# python 2.7.5
python ramparse.py -v $vmlinux -g $gdb -n $nm  -j $objdump --force-hardware 630 --phys-offset=0x40000000 -a $ramdump -o $out -x
cd $local_path
echo "out: $out"
echo ""
exit 0
 
 
 
错误提示:
1:
!!! A bogus hardware id was specified: 630
!!! Supported ids:
9615
8625
8626
8627
9635
8260
8909
8908
californium
8916
8960
8929
8610
9607
8064
8060
8630
8026
9640
9625
8084
8952
8953
8992
8996
8994
8936
8937
8930
8917
8974
8939
8976

——版本老了,建议使用source code里的工具。

 2:

TZ address: 146bf658
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/DDRCS0_0.BIN 40000000--9fffffff
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/DDRCS1_0.BIN a0000000--ffffffff
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/OCIMEM.BIN 14680000--146bffff
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/PIMEM.BIN 1c000000--1c1fffff
The kaslr_offset extracted is: 0x55c600000
The kimage_voffset extracted is: ffffff84e4600000
Using 64bit MMU
!!! Could not match version!
!!! Could not get the Linux version!
!!! Your vmlinux is probably wrong for these dumps
!!! Exiting now

——需要你指定--phys-offset, 如--phys-offset=0x40000000

猜你喜欢

转载自www.cnblogs.com/rainey-forrest/p/12162216.html
今日推荐