2009-06-23 87 views
1

在Windows CE上睡眠的时间可能会精确到小于100微秒的时间吗?抖动越小越好 - 理想情况下,我们希望获得单位数微秒的响应时间。在Windows CE上<100uS准确睡眠

我们真正想要的是具有非常低抖动的5ms定时器 - 虽然Windows CE WaitFor [单|多]对象和睡眠API以毫秒为单位工作,但我们无法纠正亚毫秒时间代码可能需要运行,所以循环会逐渐漂移。

如果这是不可能的,那么这些信息也会很有帮助。

回答

2

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

如果你没有被锁定到你的WinCE版本,你可能想看看Tenasys,他声称能够在标准硬件上提供与Windows并行运行的RTOS。

我也听说过有关QNX的好消息,但我还没有使用他们的产品。然而,我不相信它以任何方式与Windows兼容。

1

这是不可能的。这在桌面上甚至是不可能的。典型的操作系统不会以这种方式运行。

如果你需要的是每4毫秒发射一次,或者任何你不幸的事情。如果你真正需要的是每秒精确射击250次,这可能更可行。如果你需要后者,我可以建议一种方法。

+0

这看起来不正确。 VoIP音频数据包之间的标准间隔为20毫秒(u/a-law),并且没有桌面软件在处理时遇到问题;或者以这种方式生成数百个音频流的服务器。 (抖动<1ms)是 - “精确”4ms是不可行的。但具有高达0.5ms的明显抖动,它应该是一个相当正常的设置 - 尤其是如果只需要一个这样的流。 – viraptor 2010-05-10 05:56:21

+0

我不确定什么VoIP音频数据包必须与精确的时间。网卡不会轮询数据,因为它会将数据传送到缓冲区,直到CPU轮询数据为止。 – 2010-05-11 01:19:57

0

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

最简单的方法是实时使用Linux,并将您的方式用于该库。 你想要一个定期线程。

Take a look at this report from NIST.

1

如果你需要的睡眠是不是电池/线程收益问题,只是一个准确的时机问题,你可以使用Windows CE设备“的PerformanceCounter”。在XScale和Qualcomm CPU上,这是内部芯片定时器,具有小于1ms的粒度。在旧的OMAP和三星处理器上,性能计数器API正在通过1ms系统时钟,并且存在很多抖动。

L.B.