如何测试中断延迟?

时间:2013-11-23 19:29:34

标签: c++ c windows embedded windows-ce

Windows Embedded Compact 7。

有没有办法从用户空间测试中断延迟时间?

是否有任何工具作为平台构建器的一部分提供?

我还看到了一个名为Intrtime.exe的程序 - 但没有关于如何使用它的示例。

如何测试中断延迟时间?

Intrtime.exe的参考但我该如何实现呢?  http://www.ece.ufrgs.br/~cpereira/temporeal_pos/www/WindowsCE2RT.htm

修改
还找到了:

  

ILTiming.exe实时测量工具(Compact 2013)

http://msdn.microsoft.com/en-us/library/ee483144.aspx

2 个答案:

答案 0 :(得分:5)

这确实是一项需要硬件的测试,您可能会测量一些“延迟”。一次是从中断信号到驱动器ISR响应的时间,第二次是从中断发生到IST反应的时间。

I did this back in the CE 3.0/CE 4.0 days通过将信号发生器连接到可中断输入,然后将ISR脉冲连接到第二输入,并在接收到中断时将IST脉冲连接到第三输入。我将一个示波器连接到输入和输出,并用它来测量输入信号和输出信号之间的时间,不仅可以获得延迟,还可以获得抖动。您可以轻松地为CE 7添加第4行,这样您就可以检查用户空间中的IST和内核空间中的IST。我肯定有兴趣看到结果。

我认为您无法使用平台上运行的软件有效地衡量这一点,因为您会遇到代码尝试进行影响结果的测量问题。你也在谈论时间方式,低于系统滴答分辨率,所以调度程序也会有问题。 CeLog可能能够让你了解这些时间,但是设置和运行它可能比连接示波器更多的工作。

答案 1 :(得分:1)

中断延迟通常意味着断言中断线的中断源与正在调度然后执行的线程(有时在用户空间中)之间的时间。

除非你的CPU在到达CPU时有一些准确的时间戳中断事件(而不是ISR运行时),所以唯一真正准确的测量是在外部完成 - 通过测量中断线之间的时间被断言和一些可观察的信号表明响应中断的线程可以控制。 DSO或逻辑分析仪通常用于此目的。

软件技术通常依赖于在ISR中尽早存储准确的时间戳。如果您确定中断线变为置位且ISR运行之间的时间可以忽略不计,则可能有效。另一方面,如果正在使用禁用中断来控制并发,或者中断是嵌套的,那么您可能也希望对此进行测量。