在TQ2440上运行perf,生成Flame Graph

发布者:温柔的心情最新更新时间:2020-02-09 来源: eefocus关键字:TQ2440  运行perf  生成Flame  Graph 手机看文章 扫描二维码
随时随地手机看文章

1、交叉编译zlib


zlib可以到http://www.zlib.net/下载,我下载的版本是zlib-1.2.11。 下面是编译脚本:


#!/bin/bash


export CC=arm-linux-gcc


.././../Third_Part/Zlib/zlib-1.2.11/configure

    --prefix=`pwd`

make

make install


2、交叉编译elfutils


elfutils可以到http://www.linuxfromscratch.org/blfs/view/svn/general/elfutils.html下载,我下载的版本是elfutils-0.170 下面是编译脚本:


export LDFLAGS=-L/home/pengdonglin/disk_ext/TQ2440/zlib/lib

export CPPFLAGS=-I/home/pengdonglin/disk_ext/TQ2440/zlib/include

export LIBS=-lz

../configure --host=arm-linux --prefix=`pwd`

make

make install


编译完成后,将生成的libelf相关动态库拷贝到交叉编译工具链的libc下,对于TQ2440使用的是armv4版本,所以拷贝到如下目录:arm-2014.05/arm-none-linux-gnueabi/libc/armv4t/lib/


3、编译perf


进入linux-4.10.17/tools/perf,然后修改目录下的Makfile:


diff --git a/tools/perf/Makefile b/tools/perf/Makefile

index 32a64e6..dd85078 100644

--- a/tools/perf/Makefile

+++ b/tools/perf/Makefile

@@ -1,3 +1,7 @@

+export EXTLIBS =--static -lelf -lebl -L/home/pengdonglin/disk_ext/TQ2440/zlib/lib -L/home/pengdonglin/disk_ext/TQ2440/elfutils-0.170/build/lib

+export ARCH=arm

+export CROSS_COMPILE=arm-linux-

+

 #

 # This is a simple wrapper Makefile that calls the main Makefile.perf

 # with a -j option to do parallel builds


然后在linux-4.10.17/tools/perf执行make,最后就会在该目录下编译生成一个名为perf的文件。


4、配置内核,支持perf


配置内核,使能下面两个配置。

CONFIG_PERF_EVENTS=y

CONFIG_HW_PERF_EVENTS=y

 

然后重新编译内核,用新的内核启动板子。

 

5、测试


按照https://github.com/brendangregg/FlameGraph上面的说明尝试生成一个火焰图

 

我用telnet登录板子,然后使用tinyplay播放一首wav音乐,对应的进程号是1021

然后在板子上使用下面的perf命令收集数据:

perf record -F 180 -p 1021 -g -- sleep 120

 

收集完成之后,会在当前目录下生成一个perf.data的文件,再在板子上执行下面的命令:

perf script > out.perf

这个命令根据perf.data生成out.perf文件,紧接着在PC机上使用stackcollapse-perf.pl将out.perf转成out.folded:

~/disk_ext/FlameGraph/stackcollapse-perf.pl out.perf > out.folded

最后利用flamegraph.pl将out.folded转成kernel.svg:

~/disk_ext/FlameGraph/flamegraph.pl out.folded > kernel.svg

 

用浏览器打开生成的kernel.svg文件:

完。

关键字:TQ2440  运行perf  生成Flame  Graph 引用地址:在TQ2440上运行perf,生成Flame Graph

上一篇:交叉编译Python-2.7.13到ARM(aarch32)平台
下一篇:基于TQ2440和Qemu的GDB+串口调试(1)

推荐阅读最新更新时间:2024-11-05 08:11

U-boot1.1.6移植到TQ2440开发板(上)
U-Boot主要目录结构 - board 目标板相关文件,主要包含SDRAM、FLASH驱动; - common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测; - cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件; - driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好) - doc U-Boot的说明文档; - examples可在U-Boot下运行的示例程序;如hello_world.c,timer.c; - include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文
[单片机]
TQ2440 学习笔记—— 27、移植U-Boot【Bootloader 作用、工作流程】
一、Bootloader 简介 1、系统上电之后,需要一段程序来进行初始化:关闭WATCHDOG、改变系统时钟、初始化存储控制寄存器、将更多的代码复制到内存中等。如果它能将操作系统内核复制到内存中运行,无论从本地(比如Flash)还是从远端(比如通过网络),就称这段程序为Bootloader 。 简单的说,Bootloader 就是这么一段小程序,它在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后调用操作系统内核。 2、Bootloader 的启动方式 CPU 上电后,会从某个地址开始执行。比如MIPS 结构的CPU 会从0xBFC00000取第一条指令,而ARM 结构的CPU则从地址 0x0000000
[单片机]
<font color='red'>TQ2440</font> 学习笔记—— 27、移植U-Boot【Bootloader 作用、工作流程】
移植u-boot 1.1.6到TQ2440开发板-第四阶段
上一阶段完成了对Nor Flash的配置,这一阶段主要完成对Nand Flash的读写驱动 移植u-boot 1.1.6到TQ2440开发板-第四阶段 增加Nand Flash的读写驱动 任务:移植nand- flash 驱动,让u - boot 可以操作读写nand flash 。由于s3c2410 和s3c2440 nand flash 控制器有区别,所以修改以下代码,让u - boot可以操作读写nand flash 。 1、增加nand_flash.c 文件:cpu/arm920t/s3c24x0/nand_flash.c #include #if (CONFIG_COMMANDS & CFG_CMD_
[单片机]
ARM9:如何将linux2.6.38内核移植到TQ2440
  下面是linux2.6.38内核移植到TQ2440的具体步骤:   1.修改根目录的Makefile中的ARCH=arm,CROSS-COMPILE=arm-linux-   2.在arch/arm/mach-s3c2440/mach-smdk2440.c中,将163行的s3c24xx_init_clocks(16934400)改为s3c24xx_init_clocks(12000000)。   3.修改arch/arm/tools/mach-types中379行的362改为168,因为uboot中定义的机器码是168.   4.修改arch/arm/boot/中的Makefile文件,在58行添加@cp -f
[单片机]
TQ2440之uboot---6.运行U-boot目录examples中的hello_world.c
今天无竟中发现u-boot中还有一个examples目录,编译u-boot之后发现了好几个测试程序,如hello_world 。 同时tq2440的bootloader中有选项可以下载程序sdram中并运行, Download Program (uCOS-II or TQ2440_Test) to SDRAM and Run it。 这样如果hello_world可以直接在sdram中并跑起来的话,就省得每一次都要烧到nand flash中去了。 1. u-boot编译时,修改 ./example/Makefile ifeq ($(ARCH),arm) #LOAD_ADDR = 0xc100000 LOAD_ADDR = 0x3
[单片机]
labview编程技巧-----xy graph如何显示连续数据
无论是CHART还是GRAPH,其横坐标都是时间轴,是等间隔的.对于两个相互关联的两组数据,比如,位移与压力,速度与扭矩等,实际就是Y=F(X)的函数关系,用XY GRAPH来表示非常合适. XY GRAPH和GRAPH一样都是表示静态数据的,如何用它来表示动态数据,类似CHART那? 我们知道,CHART自己内部有一个先入先出的缓冲区FIFO,它只所以能够不断地显示连续数据,就是每次调用时,向这个缓冲去添加新的数据,因此我们对X和Y建立两个FIFO,就可以实现XY 连续数据显示了. LABVIEW在逐点分析库提供了这样一个FIFO节点,可能很多人没有注意到. 看一下它的用法 这样,就实现了XY GRAPH
[测试测量]
labview编程技巧-----xy <font color='red'>graph</font>如何显示连续数据
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved