原文因为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. Oracle子查询(嵌套查询)

    概念: 所谓子查询,即一个select语句中嵌套了另外的一个或者多个select语句 需求:查找和Smith同部门的所有员工的id和last_name 目标: 员工id,last_name from: ...

  2. 使用R进行倾向得分匹配

    pacman::p_load(knitr, wakefield, MatchIt, tableone, captioner)set.seed(1234)library(wakefield)df.pat ...

  3. Javascript学习笔记:9种创建对象的方式

    最基本的对象创建方式是通过Object构造函数或对象字面量的方式创建: ①通过Object构造函数的方式创建对象: var person=new Object();//或者写成var person={ ...

  4. C# lock

    一. 为什么要lock,lock了什么? 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当 ...

  5. WEB项目 后台接收前端数组

    //保存区域选择的设备 $scope.saveDevice = function(){ var device = []; $("input[type='checkbox']:checked& ...

  6. 博客打开慢?请禁用WordPress默认的谷歌字体!

    最近几天,谷歌中国挂了之后,发现我的博客打开极慢,原以为是空间问题,可一查,发现同台服务器的用户打开并不慢,排除了空间问题后,这边查询元素发现博客打开时加载了一个链接地址“fonts.googleap ...

  7. HBase Cassandra Riak HyperTable

    Cassandra                                                              HBase 一致性 Quorum NRW策略 通过Goss ...

  8. CentOS7下安装FTP服务

    1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 yum -y install vsftpd 1.2.修改配置文 ...

  9. C#微信公众号开发-高级接口-之模板消息开发,附源码

    个人觉得模板消息功能的增加对公众号的作用非常大,可以说是真正意义上的实现了所谓的轻app,商家可以通过模板消息给用户发送重要的信息,交易.预约.消费.邮件.物流等信息.之前我做过的系统通过邮件发送订单 ...

  10. 用jQuery Mobile搭建一个简单的手机页面

    1.新增html页面. 2.声明html5Document. 3.载入jQuery Mobile Css.jQuery与jQuery Mobile链接库. 4.使用jQuery Mobile定义的ht ...