• [转]设置Android手机以使用ARM Streamline进行性能分析(二)


     

    2从手机中获得内核配置文件和Android init.rc启动脚本 现在,可以开始正式工作了。 
    编译Linux内核前,通过USB电缆连接Android设备与PC,然后在终端窗口内获得如下的内核配置文件: 

    $ cd /path/to/android-sdk/tools 
    $ ./adb pull /proc/config.gz 
    $ gunzip ./config.gz 
    $ cp config /path/to/kernel/.config

    从手机的Android根文件夹中获得init.rc启动脚本:

    $ cd /path/to/android-sdk/tools 
    $ ./adb pull /init.rc

    3 编译Linux内核和gator模块
    下一步,将Linux内核源代码包解压至PC的工作文件夹。将目录更改为刚刚解压的内核文件夹,然后输入此命令进入内核配置菜单。

    $ make ARCH=arm menuconfig

    使用箭头键到达目标子菜单,然后按下“Enter”。以下所列出的每个子菜单内包含了所需要的动作说明。
    • General Setup(常规设置),确保启用了Profiling Support (分析支持)选项。
    • Kernel Hacking(内核开发),在子菜单中,导航至Tracers子菜单,然后按下“Enter”。确保启用Trace进程上下文开关选项。
    • Kernel Features(内核功能),确保启用High Resolution Timer Support (高分辨率定时器支持)。如果正在使用对称多处理器(SMP)设备,则启用Use local timer interrupts (使用本地定时器中断)。

    保存并退出配置菜单后,必须重新编译内核和相关模块,如下所示: 

    $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- zImage -j4
    $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules -j4

    要在Android目标手机使用Streamline,还必须构建gator内核模块gator.ko。gator内核模块源代码位于DS-5安装文件夹: 

    installdir/arm/gator/driver-src/gator-driver.tar.gz

    在安装DS-5 CE Eclipse时,可通过Help(帮助)->ARM Extras…(ARM附加选项)菜单来确定源文件的位置。将源代码包转移至工作文件夹,并进行解压。输入下列命令来编译gator模块: 

    $ make -C <path/to/kernel/source> M=`pwd` ARCH=arm 
    CROSS_COMPILE=arm-none-linux-gnueabi- modules

    要在Android系统上使用Streamline,还需运行gator守护程序。预先编译好的gatord二进制程序位于DS-5安装文件夹: 

    installdir/arm/gator/android/gatord

    在DS-5 CE中,通过再次选择Help(帮助)->ARM Extras…(ARM附加选项)菜单来确定源文件的位置。要在Android文件系统运行该程序,将gatord复制到Android手机,并放置在相同路径(例如:/system/xbin 或/system/bin)下作为gator驱动程序gatord.ko即可。

    (可选)要Android手机启动时启用gator服务,则必须修改init.rc脚本文件,该文件可从Android设备中的根目录获得。并在该文件末尾添加下列行

    service ds5_gatord /system/xbin/gatordexec /system/xbin/gatord &oneshot
    如果不希望在启动时运行gatord的守护程序,也可以在Android设备启动后再运行gatord。例如,可以在启动后使用adb shell命令来运行/system/xbin/gatord&。

    4创建Android update.zip程序包来刷机
    update.zip放置于SD卡根文件夹上的压缩文件,在手机启动时由Android恢复系统加载。该文件通常具有供应商的数字签名,在紧急情况或系统升级时使用该文件可用来恢复系统。Android手机处于解锁状态时,则可以使用自定义的压缩包来升级系统。现在,我向您展示如何创建update.zip程序包来更新Linux内核和init.rc脚本。
    • 为加快工作速度,先下载一个内核更新包作为模板。对于HTC Sensation 4G手机,可通过Google来查找某些kernel update packages(内核更新包)。
    • 将其解压至工作文件夹<workdir>
    • 用重新编译的内核文件zImage来替换<workdir>/kernel文件夹中的zImage文件。
    • 将init.rc复制到<workdir>/kernel 文件夹
    • 在<workdir>/kernel文件夹中编辑或创建mkbooting.sh脚本来更新启动镜像

    #!/sbin/sh
    # repleace init.rc in ramdisk
    mkdir /tmp/newramdisk
    cd /tmp/newramdisk
    busybox gunzip -c /tmp/boot.img-ramdisk.gz | busybox cpio -i
    busybox cp /tmp/init.rc /tmp/newramdisk/
    chmod 750 /tmp/newramdisk/init.rc
    busybox find . | busybox cpio -o -H newc | busybox gzip > /tmp/newramdisk.gz
    cd /tmp
    rm -r /tmp/newramdisk
    # generate createnewboot.sh
    echo #!/sbin/sh > /tmp/createnewboot.sh
    echo /tmp/mkbootimg --kernel /tmp/zImage --ramdisk /tmp/newramdisk.gz --cmdline "$(cat /tmp/boot.img-cmdline)" --base $(cat /tmp/boot.img-base) --output /tmp/newboot.img >> /tmp/createnewboot.sh
    chmod 777 /tmp/createnewboot.sh
    /tmp/createnewboot.sh
    return $?
    • 将重新编译的内核模块(wifi驱动程序)复制到<workdir>/system/lib/modules文件夹
    • 将gator.ko和gatord复制到<workdir>/system/xbin 文件夹
    • 在<workdir>/META-INF/com/google/android/updater-script文件夹中编辑updater-script文件。添加下列行来更新系统分区,并将gatord程序的权限设置成可执行。

    ui_print("Extracting system files...");
    package_extract_dir("system", "/system");
    set_perm(0, 0, 0755, "/system/xbin/gatord");
    unmount("/system");
    • 在<workdir>/META-INF/com/google/android/updater-script文件夹中编辑updater-script文件。添加下列行来更新启动分区(内核及init.rc)。

    ui_print("Building new boot.img...");
    run_program("/tmp/dd", "if=/dev/block/mmcblk0p20", "of=/tmp/boot.img");;
    run_program("/tmp/unpackbootimg", "/tmp/boot.img", "/tmp/");
    run_program("/tmp/mkbootimg.sh");
    • 将<workdir>文件夹压缩为update.zip文件。请注意!切勿将<workdir>文件夹本身包括在内。
    • 将update.zip文件复制到目标手机的SD卡根文件夹下。

    注意!在继续操作前,请为手机充满电!!! 

    关闭手机电源,然后以HBOOT模式开启。(同时按下电源按钮和音量调低按钮) 

    进入Recovery(恢复)菜单。系统会提示您,并自动进行更新。 

    在重新启动后,Streamline准备就绪,可进行性能分析。 


    5使用Streamline对Android手机进行性能分析
    Streamline支持通过以太网与目标手机的连接。使用Android Debug Bridge (ADB)实用程序,可通过USB连接将TCP端口从目标手机网络转发到PC localhost本机网络。ADB也可配置用于以太网或Wi-Fi环境。有关Android SDK以及ADB设置的详细信息,请参见Android网站。一旦设置好了ADB,就使用下列命令将Streamline使用的网络端口转发到localhost网络上。

    adb forward tcp:8080 tcp:8080

    现在运行PC上的DS-5程序,并打开Streamline数据视图窗口。如果在Window(窗口)->Show View(显示视图)菜单处未显示,则选择Window(窗口)->Show View(显示视图)->Other(其他),在对话框中找到“ARM Streamline”,然后打开ARM Streamline Data(数据采集对话框)。在Eclipse或DS-5的ARM Streamline数据视图的Capture Options (采集选项)对话框中输入设备的以太网地址。如果通过USB使用Android Debug Bridge (ADB)来转发端口,则在地址字段中输入localhost,如图2所示。

    图2 ARM Streamline Data数据采集对话框



    最后,按照ARM网站上的ARM DS-5 Using ARM Streamline使用说明,使用Streamline对Android手机开始进行性能分析。图3是使用Streamline对Android手机进行性能分析的截图。

    图3 Streamline性能分析窗口 



    6 总结
    Streamline是一款功能强大、经济高效的解决方案,用于对ARM Linux和Android平台进行系统级性能分析。希望本文能助您一臂之力,通过Streamline加快您的Android开发工作。一旦开始使用,您很快会喜欢上这款工具。如需进一步了解使用Streamline的方法,请访问ARM Streamline website 和 ARM DS-5 info center 
  • 相关阅读:
    Hdu 2564 单词缩写(字符串输入流的使用)
    Hdu2824 快速求欧拉函数和
    hdu 1787 欧拉函数模板
    Hdu2558(欧拉函数)
    hdu 1175连连看 (bfs带方向变化次数)
    pandas 使用总结
    APScheduler 定时任务使用总结
    watchdog 监控文件变化使用总结
    js 鼠标特效
    js 生成雪花间隔
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/enable_arm_ds_5_part_two.html
Copyright © 2020-2023  润新知