Time 如何衡量ISR执行时间?

Time 如何衡量ISR执行时间?,time,linux-device-driver,interrupt,isr,Time,Linux Device Driver,Interrupt,Isr,我使用的是linux内核2.6.32。 我面临一个问题,两个ISR(串行和以太网)中的一个在某些情况下/在一些我不知道的情况下需要更多的时间(数百微秒)。我想得到每次执行ISR时的时差 最好的方法是什么(就所涉及的开销而言,成本最低)。我不认为ARM架构有一些TSC寄存器(read_TSC api),它可以让我直接访问时间,就像它在其他架构上提供的那样 所以我的想法是 1) 调用ISR的时刻测量时间 2) ISR完成的时刻测量时间。 3) 获取1和2的差值,并将其存储在某个变量中。 4) 继续执

我使用的是linux内核2.6.32。 我面临一个问题,两个ISR(串行和以太网)中的一个在某些情况下/在一些我不知道的情况下需要更多的时间(数百微秒)。我想得到每次执行ISR时的时差

最好的方法是什么(就所涉及的开销而言,成本最低)。我不认为ARM架构有一些TSC寄存器(read_TSC api),它可以让我直接访问时间,就像它在其他架构上提供的那样

所以我的想法是 1) 调用ISR的时刻测量时间 2) ISR完成的时刻测量时间。 3) 获取1和2的差值,并将其存储在某个变量中。 4) 继续执行步骤1至2,当步骤3中接收到的值大于过去的值时,将覆盖它(保留/保留最大延迟值)。 当问题发生时(某些突然条件打印值)或最后10个值的数组)


我需要做的内核驱动程序,让我知道什么是最便宜的方式

OMAP3具有Cortex-A8核心。它有性能监视器单元(PMU)。循环计数(CCNT)将对应于x86 TSC,除非您可能必须在读取之前启用它计数。好消息

在2.6.32.55中,我看到arch/arm/oprofile/op_model_v7.c提供了完全的访问和控制。我的需求是赤裸裸的,我用的是简单的,对我有用的


也可以使用OMAP3 GPT,但这需要更多的工作,例如从PRCM设置时钟输入。

OMAP3具有Cortex-A8核心。它有性能监视器单元(PMU)。循环计数(CCNT)将对应于x86 TSC,除非您可能必须在读取之前启用它计数。好消息

在2.6.32.55中,我看到arch/arm/oprofile/op_model_v7.c提供了完全的访问和控制。我的需求是赤裸裸的,我用的是简单的,对我有用的


也可以使用OMAP3 GPT,但这需要更多的工作,例如从PRCM设置时钟输入。

哪个ARM SoC/处理器?例如,Cortex-A9 MPCORE有各种各样的计时器,我已经将它们用于您描述的目的。基本上你的想法是正确的。@JoeKul我正在使用root@ti-omap3-am3517-evm:#uname-a Linux ti-omap3-am3517-evm 2.6.32.8#70抢占Sat 2013年1月12日13:38:45东部时间armv7l未知。如果你有示例代码,那将非常棒。哪个ARM SoC/处理器?例如,Cortex-A9 MPCORE有各种各样的计时器,我已经将它们用于您描述的目的。基本上你的想法是正确的。@JoeKul我正在使用root@ti-omap3-am3517-evm:#uname-a Linux ti-omap3-am3517-evm 2.6.32.8#70抢占Sat 2013年1月12日13:38:45东部时间armv7l未知。如果您有示例代码,那将非常棒。谢谢您提供的信息。我检测驱动程序以测量ISR执行时间。我发现串行ISR有时需要大约6183微秒(6.183毫秒),这足以导致硬件FIFO溢出。现在,我无法理解ISR大约需要6毫秒的原因。我观察到,正常情况下,驱动程序大约需要91到153微秒,这是可以接受的。现在,我该如何解决这个问题?如何调试ISR?有什么建议吗?不客气。如果我回答“如何测量”是正确的,请考虑对这个答案做“接受”(见常见问题解答)。如果你有一个新问题,如果你把它作为一个新问题发布,它会吸引更多的眼球。谢谢你提供的信息。我检测驱动程序以测量ISR执行时间。我发现串行ISR有时需要大约6183微秒(6.183毫秒),这足以导致硬件FIFO溢出。现在,我无法理解ISR大约需要6毫秒的原因。我观察到,正常情况下,驱动程序大约需要91到153微秒,这是可以接受的。现在,我该如何解决这个问题?如何调试ISR?有什么建议吗?不客气。如果我回答“如何测量”是正确的,请考虑对这个答案做“接受”(见常见问题解答)。如果你有一个新问题,如果你把它作为一个新问题发布,它会吸引更多的眼球。