porting oprofile on mips board

 一直想把oprofile在板子上跑起来,一直没时间来做,最近有空,就来做看看
1.Google
找到有用资源
 1) comcat的oprofile补丁,基本全齐了,虽然是for godson的
   a) 照补丁添加kernel里面的内容,也就是添加个c文件,另外注意就是cpu_type,由于我们的IC design人员没改,所以prid读出来还是CPU_4KEC,所以只能丑陋地加了个#ifdef SOC_XXX       
   case CPU_4KEC:
     .....

    另外我们的performance counter不是用的cp0里的,4kec没有,只有24k有,所以用的外部的SRAM寄存器,具体实现原理,IC那块不懂,应该是比cp0的有误差。performance counter有几个不爽,一是两个counter居然所有事件是一模一样的,真是浪费,二是居然没有bit位区分 user, kernel,只有exl,erl位,虽然也可以利用exl和erl来作为kernel态的判断,但由于linux还用了其他另外一种方式区分内核态,所以不准
 
   b) 用户态补丁,依葫芦画瓢

2.编译
    内核 pass
    oprofile不过
    郁闷,继续Google,找到资源
《OProfile交叉编译》和 《OProfile交叉编译续》
原来差popt和bfd,liberty
下载popt交叉编译,pass
下载binutils交叉编译,出错,整半天,不成,怒,用debian直接下了个binutils的.deb解开,再编译oprofile OK!


3.运行
1) 怎么老打warning,说mount /dev/oprofile busy
   打开opcontrol看,就是个脚本,原来去查/etc/mtab了,懒得重新编译busybox,将它修改成了/proc/mounts

2) go on, 发现profiled不起来,检查在opcontrol里
verify_counters返回了
返回原因是$OPHELP --check-event $OPHELP_ARGS -callgrach ....命令返回出错就退出了,整不明白,注释掉,应该影响不大

3) go on, 可以了,不过又发现怎么opcontrol --shutdown不掉啊
  打开opcontrol,原来用了kill -s 0来判断进程,改成kill -0

大功告成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值