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文件:
完。
上一篇:交叉编译Python-2.7.13到ARM(aarch32)平台
下一篇:基于TQ2440和Qemu的GDB+串口调试(1)
推荐阅读最新更新时间:2024-11-05 08:11
设计资源 培训 开发板 精华推荐
- 具有迟滞功能的 LM2904DMR2G 比较器的典型应用
- LT1117CM-5 用于改善纹波抑制的低压差正稳压器的典型应用
- RD-495,将 FSQ510 电源开关用于辅助电源应用的参考设计
- LTC1625,同步 12V 输出降压/升压转换器
- 使用 AD629 差分放大器、AD8603 运算放大器、AD780 基准和 AD7453 12 位 ADC 单电源组件测量 -48V 高端电流
- TDA2050_HiFi蓝牙功放板
- LTC3121EDE 0.5V 至 5V、双超级电容器备用电源的典型应用电路
- 使用PD57002-E,PD57018-E和2x PD57060-E的200 W / 1030 MHz IFF Mode-S参考设计
- 具有关断低压差线性稳压器的 LT3007ITS8-1.5 3.3V、20mA 电源的典型应用电路
- LT3091ER 低噪声 4 象限电源的典型应用