原文因为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. C语言面试题(二)

    上篇对嵌入式中C语言基本数据类型,关键字和常用操作进行了汇总,这篇我们将侧重字符串操作.请看下面的字符串处理函数:    a.库函数    1)将字符串src拷贝到字符数组dest内        c ...

  2. IOS开发数据库篇—SQLite模糊查询

    IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03- ...

  3. Redis - 发布和订阅

    一.概述 1). 发布和订阅是一种消息通信模式. 2). 优点:使消息订阅者和消息发布者耦合度降低,类似设计模式中的观察者模式. 二.发布和订阅 订阅命令: // 订阅一个或多个频道 // 返回值:v ...

  4. Logistic回归模型和Python实现

    回归分析是研究变量之间定量关系的一种统计学方法,具有广泛的应用. Logistic回归模型 线性回归 先从线性回归模型开始,线性回归是最基本的回归模型,它使用线性函数描述两个变量之间的关系,将连续或离 ...

  5. XAF学习资源整合大全

    近期有很多XAF初学者与我联系,我多数时间在重复很多入门问题,所以决定整理一篇XAF资源列表,方便大家查找资料,也请知晓其他资源的人留言或与我联系,我将新资源追加到本篇文章中,方便更多人. 一.本博客 ...

  6. 原生cookie

    出于浏览器的安全性限制,从WEB应用程序中访问用户本地文件系统是有许多限制的.但是WEB站点的开发人员可以使用cookie,将少量信息保存在用户本地硬盘的指定空间中. document对象的cooki ...

  7. requestAnimationFrame 动画

    requestAnimationFrame : 调用这个方法,就是告诉浏览器要执行动画了,从而浏览器自动计算动画时间间隔,从而在恰当的时候刷新UI, 动画更加平滑. 他的用法和setTimeout() ...

  8. Android之alertDialog、ProgressDialog

    一.alertDialog 置顶于所有控件之上的,可以屏蔽其他控件的交互能力.通过AlertDialog.Builder创建一个AlertDialog,并通过setTittle(),setMesseg ...

  9. ubuntu上mysql服务器安装后只能本地连接不能远程连接的问题

    安装好mysql后,想使用另一个电脑进行远程登录,在登录时 提示拒绝连接 百度后,发现需要两个步骤解决该问题 /etc/mysql/my.cnf 里修改bind_address = 0.0.0.0  ...

  10. 打造高大上的Canvas粒子(一)

    HTML5 Canvas <canvas>标签定义图形,比如图表和其他图像,必须用脚本(javascript)绘制图形. 举例:绘制矩形 <script> var c = do ...