我在 linux 内核 2.6.32 上。我面临一个问题,其中两个 ISR(串行和以太网)之一在几次/在我不知道的某些情况下需要更多时间(数百微秒)。我想每次执行 ISR 时都获得时间差。
什么是最好的方法(就所涉及的开销而言最便宜)。我没有看到 ARM 架构有一些 TSC 寄存器(read_tsc api),它可以让我直接访问时间,因为它在其他架构上提供。
所以想法是1)调用ISR的那一刻测量时间2)ISR完成的那一刻测量时间。3)获得1和2的差异将其存储在某个变量中。4) 继续执行步骤 1 到 2,当步骤 3 中收到的值大于过去的值时,将其覆盖(保持/保留最大延迟的值)。当问题发生时(一些突然的条件打印值)或最后 10 个值的数组)。
我需要在内核驱动程序中做,所以让我知道什么是最便宜的方法。