ARM DS-5(Development Studio 5)是ARM公司为应用程序开发人员、设置制造商和芯片供应商提供的软件开发套件。除了编译,链接工具之外,ARM还提供了一个非常酷的性能调试工具:Streamline。

由于Streamline可以监视ARM CPU和Mali GPU的负载,我们选择的设备端是MTK的mt6592芯片(8核Cortex-A7 CPU + Mali 450 GPU)。

PC端:下载Streamline (Eclipse插件)

Streamline 的客户端界面实际是一个Eclipse的插件,用户可以在Eclipse中下载这个插件(详见ARM教程),或者从ARM的官方网站直接下载整个DS-5包,其中包含了一个内置Streamline的Eclipse release。

为了方便起见,我们后面都使用DS-5自带的Eclipse。打开之后,如果没有注册过license,会自动激活社区版(CE:Community Edition)。社区版的功能会受到一些限制。好在ARM除了专业版之外,提供了30天的免费评估试用,激活评估试用版可以参考这个链接(备用链接请参考这里).

关于ARM DS5 Streamline的详细介绍也可以在ARM的官方文档中心上找到

准备:kernel编译

在设备端,我们首先确保内核编译时以下开关都被打开,否则的话需要重新编译,push内核。

  • CONFIG_PROFILING
  • CONFIG_PERF_EVENTS
  • CONFIG_FTRACE
  • CONFIG_HIGH_RES_TIMERS
  • CONFIG_HW_PERF_EVENTS
  • CONFIG_LOCAL_TIMERS
  • CONFIG_CPU_FREQ
  • CONFIG_GENERIC_TRACER 或者 CONFIG_TRACING
  • CONFIG_MALI400_PROFILING 或者 CONFIG_MALI400_INTERNAL_PROFILING(仅支持MALI GPU 4系列,比如MTK6592)

查看内核编译选项可以通过在kernel目录下运行make menuconfig.在MTK平台上更方便的方式是在kernel/out目录下直接查找(比如 grep -r CONFIG_TRACING ./ –exclude-dir source –exclude-dir include)。实际上,除了CONFIG_MALI400_PROFILING之外,在MTK6592的默认配置中,这些编译选项都是打开的。打开CONFIG_MALI400_PROFILING需要在《kernel/mediatek/platform/mt6592/kernel/drivers/gpu/mali/mali/Makefile》中将USING_PROFILING设为1.

准备:编译,安装gator驱动

修改完编译选项之后,可以重新编译内核,并将boot image烧到手机中

./makeMtk -t -o=TARGET_BUILD_VARIANT=eng jrdsh92_wet_tdd r k

编译(push)完kernel之后,我们可以来处理gator了。gator是streamline在设备端的代理,包括gator module(驱动模块)和gator daemon。在安装完DS-5的包之后,可以在“/usr/local/DS-5/arm/gator”下找到gator的源代码。driver-src是module的部分,daemon-src当然就是daemon的部分。

首先处理驱动的部分,将代码复制到kernel/drivers目录下,然后在<<kernel/drivers/Makefile>>将gator驱动的目录加入编译树。此外,为了gator驱动能够正常编译,我们还需要对gator的Makefile做些小修改。

首先,我们需要在Makefile中运行<<gator_event.sh>>时进入正确的目录,因此必须替换”cd”后的路径为gator驱动所在的绝对路径。
此外,如果我们使用MTK6592(MALI-450 GPU), 还需要在Makefile中打开相应的编译开关,将MALI驱动的路径加入include path(gator需要访问一些mali的头文件)。

GATOR_WITH_MALI_SUPPORT = MALI_4xx
EXTRA_CFLAGS += -I/local/archermind/X_plus/mediatek/platform/mt6592/kernel/drivers/gpu/mali
EXTRA_CFLAGS += -I/local/archermind/X_plus/mediatek/platform/mt6592/kernel/drivers/gpu/mali/mali

然后我们再次重新编译kernel,将生成的<> 通过adb push到手机以后, 在adb shell中运行“insmod /gator.ko”。运行成功之后,用户可以通过”lsmod”查看到已经被运行的gator模块。

准备:编译,运行gator daemon

处理完gator module,剩下的gator daemon就很简单了。将daemon-src复制到项目下的任意位置,然后调用mtk提供的单个模块编译命令

./makeMtk -t -o=TARGET_BUILD_MMITEST=true,TARGET_BUILD_VARIANT=eng jrdsh92_wet_tdd mm [PATH_TO_DARMON_SRC]

然后将编译生成的gatord通过adb push到手机上,用 adb shell 运行gatord。这样,手机端的工作就完成了。

连接

接下来我们就可以连接PC端,开始profiling了。和很多其他调试工具一样,我们还需要为Streamline设置端口转发,gator默认的输出端口是8080,我们也可以在运行gatord的时候为它指定一个其他的端口。Streamline默认的监听端口是8080,但由于这个端口被tomcat server用掉了,所以我把它改为了9090. 这样,我们连上手机之后,端口转发的命令为

adb forward tcp:9090 tcp:8080

使用Streamline

终于配置完了!小小地庆祝一下吧~~~

接下来我们打开DS-5的eclipse, 选择Window=>Show View=>Other=>DS-5=>Streamline Data。
配置完端口之后,点击红色小按钮开始profiling

点击红色停止键终止profiling.

除了提供精确的硬件统计信息(CPU,GPU的电压,频率,活动,精确到每个核;内存使用,磁盘访问等等)之外,Streamline还提供了gprof的功能,可以查看各个进程/线程的时间使用情况,以及函数调用占用时间的情况(加载一些带符号表的lib,可以帮助用户在后两项目中获取更详细的信息)。
进程/线程图表

函数图表

搭建ARM DS-5 STREAMLINE相关推荐

  1. 搭建ARM交叉编译环境

    搭建ARM交叉编译环境 文章目录 搭建ARM交叉编译环境 前言 一.安装arm交叉编译工具 二.运行可执行程序[坑点] 三.调试程序 前言 通过前一篇关于risc_v交叉编译环境的搭建,想必大家已经对 ...

  2. 使用qemu搭建arm嵌入式linux开发环境

    qemu搭建arm虚拟嵌入式linux开发环境 1.前言 1.安装qemu与arm交叉编译工具 2.Linux内核与设备树编译 3.busybox根文件系统制作 4.使用u-boot加载Linux内核 ...

  3. arm ds开发基于iTOP4412开发板的纯汇编LED流水灯

    前言 arm ds软件作为arm公司发布的ADS.DS5软件的延续,具备前两款软件的所有功能.同时将Keil MDK单片机开发软件的功能直接整合到了arm ds软件中.现在arm ds就相当于DS5+ ...

  4. 使用Ubuntu+qemu模拟器搭建arm运行环境

    我的环境: VMware Ubantu8.2-19ubuntu1 Linux内核 3.13.0-32-generic 1.下载Linux内核 wget https://www.kernel.org/p ...

  5. 从零使用qemu模拟器搭建arm执行环境

    为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没有上层的C/C++业务和数据库的开发经验.也没有底层的内核和驱动开发经验,究竟路该怎 ...

  6. qemu搭建arm嵌入式linux开发环境

    一.基本概念 1.交叉编译 交叉编译(Cross_Compile)是指编译源代码的平台和执行源代码编译后程序的平台是两个不同的平台. 2.bootloader BootLoader是在操作系统内核运行 ...

  7. 嵌入式LINUX搭建arm环境,手把手教你嵌入式ARM开发环境搭建

    原标题:手把手教你嵌入式ARM开发环境搭建 1. 安装,配置,启动FTP服务 · 安装FTP: sudo apt-get install vsftpd · 修改vsftpd的配置文件/etc/vsft ...

  8. HUAWEI 擎云L420 折腾记 (搭建arm gcc、openocd 雅特力 MCU开发环境)

    HUAWEI 擎云L420 折腾记 前言 1. java 环境 2. python 3. C++/C 4. arm-gcc-none-eabi mcu开发 5. 雅特力修改的atlink版 openo ...

  9. 在Ubuntu下使用QEMU搭建arm开发环境(一)搭建基本开发环境

    马上就要开学了,开学后就会开始arm+Linux的学习,因为马上就要去学校了,就没有买板子,打算去了学校再买,但是想学习的心是迫切的(O(∩_∩)O哈哈~),在网上浏览的时候发现了QEMU这个&quo ...

最新文章

  1. P2754 [CTSC1999]家园
  2. 116_Power Pivot 先进先出原则库龄库存计算相关
  3. 工作占用了太多私人时间_一本正经聊驾驶 | 汽车真的为我们节约时间了吗
  4. linux中的‘make’和‘makefile’
  5. (转)“领导者”沈南鹏:逼着自己不断思考,作为VC没有选择
  6. 【POJ 2785】【折半枚举】4 Values whose Sum is 0【暑期 No.6】
  7. R软件本地安装GitHub下载的R包
  8. 最新金色版萝卜影视源码/原生视频影视系统APP源码
  9. Tomcat 发布时war解压
  10. jmail 发送html,jmail发送html格式的邮件
  11. SVM 超平面计算例题
  12. Python 将列表中的每个值都加一要怎么做?(列表解析式)
  13. 爬虫学习笔记 - day02
  14. MS Materials Studio 安装
  15. 2021-11-24 micropython esp32休眠假死 唤醒 rtc nvs btree数据保持
  16. Git生成生成公钥和私钥
  17. 【内联函数】inline关键字的作用与内联函数的特性
  18. ArcGIS三维建模(一)
  19. Scanner警告问题
  20. input框中的背景文字

热门文章

  1. [codeforces 1333A] Little Artem 读懂题+找规律+多举例
  2. 可解释性神经网络——1.xNN
  3. Skyline查询实验数据点的生成
  4. Dagger 2 基本用法
  5. 在碎片化学习时代,高手是如何学习的?
  6. 大数据智能分析(BI)平台设计2--数据集
  7. 0.Mysql数据库——创建数据库
  8. WebLogic中间件安装与介绍(详细版约2万字)
  9. MySQL-5.6版本GTID的主从复制
  10. 万能遥控器小制作(二)