一、移植

1. 首先要下载OProfile的相关软件包,如下:

oprofile-0.9.6.tar.gz: http://oprofile.sourceforge.net/download/

popt-1.14.tar.gz: http://freshmeat.net/projects/popt/

binutils-2.20.tar.gz: http://ftp.gnu.org/gnu/binutils/

2. 使用交叉编译器编译OProfile
首先,确认你的目标板上运行的Linux是否支持下面的选项:
在安装oprofile之前,需要保证系统支持oprofile。即在系统编译内核的时候要将以下三项勾上

make menuconfig

General setup --->

[*] Profiling support 
<*> OProfile system profiling

[*] Kernel performance events and counters

可以用自带的opcontrol来检测kernel是否支持oprofile.如果运行opcontrol --quick没有错误的话,就说明当前的内核支持oprofile。

为交叉编译器设置环境变量,如下:

export CC=arm-none-linux-gnueabi-gcc

export CXX=arm-none-linux-gnueabi-g++

export CFLAGS=-static

export CXXFLAGS=-static

export CPPFLAGS=-static

export ac_cv_va_copy=C99

2.1 交叉编译popt-1.14
进入"OProfile_Project/popt-1.14"目录,打开configure.ac文件,注释掉46行,如下:

AC_ISC_POSIX

AM_C_PROTOTYPES

#AC_CHECK_VA_COPY

AC_CHECK_HEADERS

然后在当前目录下创建一个"mypopt"的文件夹,并运行下面的命令进行配置,编译和安装:
#./configure --with-kernel-support --target=arm-linux --host=arm-linux --prefix=/workdir/popt-1.14/mypopt

#make && make install

然后拷贝所生成的头文件及库到你的交叉编译器的目录下面如下:
cp ./mypopt/include/* <your cross-compiler directory>/arm-none-linux-gnueabi/include
cp ./mypopt/lib/* <your cross-compiler directory>/arm-none-linux-gnueabi/lib

2.2 交叉编译binutils-2.20
首先进入"OProfile_Project/binutils-2.20/gas/config"目录,然后打开tc-arm.c,在2488行做如下的修改:
if (frag->tc_frag_data.last_map != NULL) {
know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE(symbolP))
}

也就是加上大括号,否则编译会出错。
在"OProfile_Project/binutils-2.20/"下创建"mybinutils"子目录,运行下面的命令进行编译:
./configure --with-kernel-support --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --prefix=/workdir/binutils-2.20/mybinutils --prefix
make
make install

2.3 交叉编译opofile-0.9.6
进入"OProfile_Project/oprofile"文件夹,运行下面的命令进行编译:
#./autogen.sh
.#/configure --with-kernel-support --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --with-binutils=/workdir/binutils-2.20/mybinutils/ --prefix=/workdir/oprofile-0.9.7/myoprofile

#make && make install

3. 拷贝OProfile到目标板上面
接下来,要将交叉编译好的oprofile及相关文件拷贝的目标板上面。

二、移植中碰到的问题

问题1:

# opcontrol --init

cat: can't open '/dev/oprofile/cpu_type': No such file or directory

Unable to open cpu_type file for reading

Make sure you have done opcontrol --init

cpu_type 'unset' is not valid

you should upgrade oprofile or force the use of timer mode

# cat /etc/mtab

nodev /dev/oprofile oprofilefs rw 0 0

解决:

执行:mount -t oprofilefs nodev /dev/oprofile

问题2:

#./opcontrol --init

Kernel support not available, missing opcontrol --init as root ?

检查/etc/mtab文件内容,确保是nodev /dev/oprofile oprofilefs rw 0 0

问题3:

opreport: /opt/lib/libstdc++.so.6: version `CXXABI_ARM_1.3.3' not found (required by opreport)

在网上下载个动态库libstdc++.so.6.0.10,将它放在/lib目录下,做了个软链接

ln -s libstdc\+\+.so.6.0.13 libstdc\+\+.so.6

问题4:

# opreport

objdump is not installed on this system, use opcontrol --kernel-range=start,end or opcontrol --xen-range= or install objdump

由于在分析内核时使用到objdump,复制binutilsimg/bin/objdump 至文件系统的/bin文件下。(objdump在符号分析时用到)

问题5:

如果得到的错误是

You cannot specify any performance counter events

because OProfile is in timer mode.

修改源码oprof.c (drivers\oprofile)  第36行如下(内核版本不一样,可能有所差别)

static int timer = 1;

不过,这个修改对DM368是无效。通过查看源码发现,上面的修改对于armv6,armv7架构都是可以的,但dm368是armv5,内核只能支持Time Interrupt模式。有点小遗憾!

三、使用

# opcontrol --init

# opcontrol --vmlinux=/opt/vmlinux    ;使用前将vmlinux拷贝到开发板中

# opcontrol --start

opcontrolUsing 2.6+ OProfile kernel interface.

Reading module info.

Using log file /var/lib/oprofile/samples/oprofiled.log

Daemon started.

Profiler running.

# opcontrol --stop

Stopping profiling.

# opreport

CPU: CPU with timer interrupt, speed 0 MHz (estimated)

Profiling through timer interrupt

TIMER:0|

samples|      %|

------------------

191 89.6714 vmlinux

8  3.7559 libc-2.5.90.so

7  3.2864 busybox

7  3.2864 ld-2.5.90.so

移植oprofile到dm365相关推荐

  1. rt3070网卡 linux驱动,移植rt3070芯片网卡驱动到dm365全过程---yingru

    #History:2011-05-18 #Author:yingru 新增: 在内核添加对设置雷凌网卡参数的wireless tools的支持: Make menuconfig: Device Dri ...

  2. Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

    很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot ...

  3. TI Davinci DM6441嵌入式Linux移植攻略——UBL移植篇

    目录(?)[+] 一DM6441的Boot过程简介 二DM6441的UBL移植 CCS文件夹 Common文件夹 GNU文件夹 移植DDR2 移植Nand Flash 其它 声明:本文参考网友zjb_ ...

  4. 使用oprofile分析性能瓶颈

    使用oprofile分析性能瓶颈 1. 概述 oprofile 是 Linux 平台上,类似 INTEL VTune 的一个功能强大的性能分析工具. 其支持两种采样(sampling)方式:基于事件的 ...

  5. DAVINCI DM365-DM368开发攻略—U-boot-2010.12-rc2-psp03.01.01.39及UBL的移植 .

    转载:http://blog.csdn.net/olei_oleitao/article/details/7919307 一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM ...

  6. davinci平台Uboot移植

    一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM6467完全是一样的,因为都是ARM926EJS架构,里边都有一个RBL,这RBL在芯片出厂的时候都烧写在ROM里,芯片上 ...

  7. DAVINCI DM36x开发攻略——U-BOOT-2010.12及UBL移植

    从盛夏走到深秋,我们继续DAVINCI DM365-DM368的开发.说来惭愧,人家51CTO热情支持本博客,而本人却一直没有像其他博客之星一样频繁更新博客,心里确实说不过去.管理公司确实很累,有更急 ...

  8. DAVINCI DM365-DM368开发攻略—U-boot-2010.12-rc2-psp03.01.01.39及UBL的移植

    从盛夏走到深秋,我们继续DAVINCI DM365-DM368的开发.说来惭愧,人家51CTO热情支持本博客,而本人却一直没有像其他博客之星一样频繁更新博客,心里确实说不过去.管理公司确实很累,有更急 ...

  9. apr 移植android平台,omap3530移植android4.0

    开发板(应该是基于beagleboard),omap3530,256M DDR SDRAM,256M nand flash.开发板自带了uboot,linux内核2.6.29和android 2.1系 ...

  10. 十二、Hi3556移植RTL8189 WIFI驱动

    Hi3556V200从代理拿到的SDK包中,是不包含RTL8189模块的驱动的.我们从某WIFI模块厂家要到了RTL8189的芯片驱动,于是开始着手移植驱动到平台上面. 一.Linux驱动添加RTL8 ...

最新文章

  1. 互联网项目管理要点(转)
  2. win10 nms cpu编译-ok
  3. null NULL is_null 竟然不一样
  4. day7 python学习随笔
  5. C#根据execl批量修改图片名称
  6. matlab生成常用信号(方波、三角波、随机信号、单位冲激)
  7. 「名词」数据管理、数据治理、数据中心、数据中台、数据湖、数据资产等
  8. 关于网络编程的一些问题
  9. oracle什么时候用in,Oracle Study之---Oracle IN和NOT IN的使用
  10. PyTorch 1.0 中文官方教程:数据加载和处理教程
  11. 你应该知道的Linux历史
  12. 再聊如何通过基金定投达到十年十倍?
  13. Oracle 12.2 ORA-01017问题处理
  14. 项目管理文档目录结构
  15. 一阶电路实验报告心得_一阶rc电路实验总结
  16. Debian9初始配置
  17. 关闭“Chromium 未正确关闭”提示
  18. 海量资源!开发人员成功转行数据科学必备清单
  19. 超越MRT无数倍的MODIS在线拼接AppEERAS
  20. 企业发放的奖金根据利润提成计算

热门文章

  1. 我的2017之一只混迹于小城市的.net程序猿
  2. css3弹性盒模型flex快速入门与上手(align-content与align-items)
  3. cocos2d-x3.0 关于CCAnimate 的一些资料
  4. 水晶报表中的主从表结构
  5. 微信小程序CSS之Flex布局
  6. 在图层上使用CATransform3D制做三维动画-b
  7. 了解人工智能与智能系统中的先驱人物
  8. 安装SQL SERVER 2000遇到的二个问题
  9. 《数据挖掘导论》实验课——实验七、数据挖掘之K-means聚类算法
  10. Scrapy框架的使用之Spider Middleware的用法