zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    js面向对象实现Tab切换
    js中的面向对象基础1
    js正则表达式
    Ajax的基础使用
    JS完美运动框架
    JS实现链式运动
    js实现多物体运动框架
    js实现多物体运动
    JS运动应用
    JavaScript中的高阶函数
  • 原文地址:https://www.cnblogs.com/rainey-forrest/p/12162216.html
Copyright © 2011-2022 走看看