原文因为arm社区改版访问不到了,原作者鲍方,原文地址,这篇是从google cache里挖出来的,希望能帮到要对cocos2dx优化的各位
 
Posted by Fang Bao,

11 June 2012

 
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 

[转]设置Android手机以使用ARM Streamline进行性能分析(二)的更多相关文章

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

    本博客第一次转载的文章,原文访问不到了,这篇是从google cache里挖出来的,为有需要的同学准备.原文地址     Posted by Fang Bao,(鲍方) 4 Comments 11 J ...

  2. ubuntu下设置Android手机驱动

    如果下面的文章不好使,建议读一这个文章:http://forum.xda-developers.com/xperia-u/general/howto-usb-connection-to-ubuntu- ...

  3. 如何设置Android手机的sqlite3命令环境

    1.在PC环境下启动一个模拟器(不是手机) 2.查看模拟器 /systen/xbin是否有sqlite3命令 adb shell cd /system/xbin ls 3.把模拟器 /system/x ...

  4. Android手机app启动的时候第一个Activity必须是MainActivity吗

    原文:Android手机app启动的时候第一个Activity必须是MainActivity吗 Android手机APP启动的第一个Activity是可以自己设置的,不是必须的MainActivity ...

  5. win7 cmd终端连接android手机运行adb shell脚本命令

    win7 cmd终端连接android手机运行adb shell脚本命令 (2013-03-22 20:13:57) 转载▼ 标签: android it shell 连接 linux 分类: 嵌入式 ...

  6. 如何使用 sqlite3 访问 Android 手机的数据库

    如何设置Android手机的sqlite3命令环境 http://www.cnblogs.com/linjiqin/archive/2011/11/28/2266619.html SQLite3 为a ...

  7. 以C#编写的Socket服务器的Android手机聊天室Demo

    内容摘要 1.程序架构 2.通信协议 3.服务器源代码 4.客户端源代码 5.运行效果 一.程序架构 在开发一个聊天室程序时,我们可以使用Socket.Remoting.WCF这些具有双向通信的协议或 ...

  8. Android 手机卫士--设置界面&功能列表界面跳转逻辑处理

    在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...

  9. Android 手机设置CMWAP 接入点

    Android 手机设置CMWAP 接入点 设置--- 无限控件---移动网络设置---接入点名称----再按菜单---选择新apn 第一步,设置CMNET 上网APN 新建 APN 1.名称:cmn ...

随机推荐

  1. IE浏览器bug罪魁祸首--hasLayout

    IE浏览器一直都是前端程序员最头疼的,IE的表现与其他浏览器不同的原因之一就是,显示引擎使用一个称为布局(layout)的内部概念. 认识hasLayout--haslayout是Windows In ...

  2. Oracle10g_Dataguard__161031

    1.查看  redo log 信息 1.1.desc v$log ZC: 不明白这是查看什么信息... 1.2. 查看redo log file SQL> select * from v$log ...

  3. Android开发之各个语言

    Android开发之各个语言 1.进行源码开发遇到一个最基础的问题就是各个语言下的字串翻译,所以我们必须得清楚res文件夹下各个资源文件夹 2.如图:

  4. KindEditor4.1.10,支持粘贴图片(转载!)

    本人扩展了KindEditor4.1.10,使得他能够在Chrome和IE11中直接粘贴复制的图片(比如通过截图工具把图片直接保存在剪切板中),然后调用上传URL上传图片 方法,修改kindedito ...

  5. Merkle Patricia Tree (MPT) 树详解

    1.    介绍 Merkle Patricia Tree(简称MPT树,实际上是一种trie前缀树)是以太坊中的一种加密认证的数据结构,可以用来存储所有的(key,value)对.以太坊区块的头部包 ...

  6. ASCII十进制字符集

    <script> for(var i=33;i<=6000;i++){ document.write("&nbsp"+i+"&nbsp ...

  7. mysql 删除重复数据保留一条

    验证:mysql 5.6版本 方法一: delete a from table a left join( select (id) from table group by studentName,cla ...

  8. 原生态AJAX详解和jquery对AJAX的封装

    AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript    JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...

  9. iOS开发UI篇—UITableviewcell的性能优化和缓存机制

    iOS开发UI篇—UITableviewcell的性能问题 一.UITableviewcell的一些介绍 UITableView的每一行都是一个UITableViewCell,通过dataSource ...

  10. Input 值改变触发事件

    $('#keyword').bind('input propertychange', function() { $('.close-search').show();});