【问题标题】:How to test Interrupt Latency?如何测试中断延迟?
【发布时间】:2013-11-23 19:29:34
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    这确实是一个需要硬件的测试,并且您可以测量几个“延迟”。一次是从中断信号发出到驱动程序 ISR 反应的时间,第二次是从中断发生到 IST 反应的时间。

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

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

    【讨论】:

    • 我也看到了你在 msdn 上的报告。不确定我能否及时获得范围......只是好奇,ISR 代码是用户定义的还是我在哪里可以看到/修改它?
    • ISR 位于 BSP 中,或者如果平台具有可安装的 ISR(IISR 支持),那么您可以在代码中包含它。如果它在 BSP 中,那么您需要它的源代码。
    【解决方案2】:

    通常所说的中断延迟是指中断源断言中断线和线程(有时在用户空间中)被调度然后执行结果之间的时间。

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

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

    【讨论】:

    • 假设从中断线到 ISR 的时间可以忽略不计,并且我有一个高分辨率计时器:如何创建中断,ISR 代码在什么/哪里放置开始时间戳和结束ISThread 之前的时间戳?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 2019-03-11
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多