< 100uS在Windows CE上准确睡眠

时间:2009-06-23 23:09:08

标签: timer real-time sleep windows-ce

是否可以在Windows CE上睡眠时间精确到小于100微秒?抖动越小越好 - 理想情况下我们想要一位数的微秒响应时间。

我们真正想要的是具有极低抖动的5ms定时器 - 尽管Windows CE WaitFor [Single | Multiple]对象和睡眠API以毫秒为单位工作,但我们无法校正我们代码的sub-ms时间可能需要运行,所以周期会逐渐漂移。

如果无法做到这一点,那么这些信息也会非常有用。

4 个答案:

答案 0 :(得分:2)

This MSDN article有一些代码可以在WinCE中设置500us定时器中断,所以绝对可能。

如果您没有锁定您的WinCE版本,您可能需要查看Tenasys,他声称提供在标准硬件上与Windows并行运行的RTOS。

我也听说过有关QNX的好消息,但我也没有使用过他们的产品。但是,我不相信它与Windows兼容。

答案 1 :(得分:1)

这是不可能的。它甚至不可能在台式机上使用。典型的操作系统根本不起作用。

如果您需要的是每4毫秒准确发射一次,或者您运气不好。如果你真正需要的是每秒精确射击250次,那可能更有用。如果你需要后者,我可以建议一种方法。

答案 2 :(得分:1)

如果您需要睡眠不是电池/线程产量问题而只是准确计时,您可以使用Windows CE设备中的“performancecounter”。在XScale和Qualcomm CPU上,这是内部芯片计时器,具有低于1毫秒的粒度。在较旧的OMAP和三星处理器上,性能计数器API通过1ms系统滴答并且有很多抖动。

L.B。

答案 3 :(得分:0)

要纠正抖动,您需要访问高分辨率计时器。 您拥有的CPU可能有一个。如果没有,中断控制器可以。

最简单的方法是使用Linux实时和WINE进入该库。 你想要一个定期线程。

Take a look at this report from NIST.