Linux OMAP5432 evm处理器时钟周期

Linux OMAP5432 evm处理器时钟周期,linux,linux-kernel,linux-device-driver,clock,omap,Linux,Linux Kernel,Linux Device Driver,Clock,Omap,我正在为OMAP5432(Cortex A15)编写一个linux驱动程序,它读取每个IRQ的处理器周期计数器值。 计数器初始化如下: static inline void init_perf计数器(int32_t do_reset,int32_t enable_divider) { //通常启用所有计数器(包括循环计数器) int32_t值=1; //peform重置: 如果(不重置){ 值|=2;//将所有计数器重置为零。 值|=4;//将循环计数器重置为零。 } 如果(启用_分割器) 值|

我正在为OMAP5432(Cortex A15)编写一个linux驱动程序,它读取每个IRQ的处理器周期计数器值。 计数器初始化如下:

static inline void init_perf计数器(int32_t do_reset,int32_t enable_divider)
{
//通常启用所有计数器(包括循环计数器)
int32_t值=1;
//peform重置:
如果(不重置){
值|=2;//将所有计数器重置为零。
值|=4;//将循环计数器重置为零。
}
如果(启用_分割器)
值|=8;//为CCNT启用“乘64”除法器。
值|=16;
//对性能计数器控制寄存器进行编程:
asm volatile(“MCR p15,0,%0,c9,c12,0\t\n”:“r”(值));
//启用所有计数器:
asm volatile(“MCR p15,0,%0,c9,c12,1\t\n):“r”(0x800000F));
//清除溢流:
asm volatile(“MCR p15,0,%0,c9,c12,3\t\n):“r”(0x800000F));
}
分隔器处于禁用状态。Linux内核是4.0,频率缩放选项是禁用的,只有1个CPU在运行。 我每秒有一个IRQ,我读取的值如下:

静态内联无符号整数get\u循环计数(void)
{
无符号整数值;
//读取CCNT寄存器
asm volatile(“MRC p15,0,%0,c9,c13,0\t\n”:“=r”(值));
返回值;
}
我不明白为什么当处理器运行在2GHz时,两个IRQ之间的周期数大约为20M。 有人有什么想法吗


提前谢谢。

我不知道你在做什么,尽管我仍然建议你读一篇文章。我不知道你在做什么,尽管我仍然建议你读一篇文章