1

是否可以在 Windows CE 上休眠一段精确到 100 微秒以下的时间?抖动越少越好——理想情况下,我们希望响应时间为单位数微秒。

我们真正想要的是一个抖动非常低的 5 毫秒计时器 - 尽管 Windows CE WaitFor[Single|Multiple] 对象和睡眠 API 以毫秒为单位工作,但我们无法纠正代码可能花费的亚毫秒时间运行,所以周期会逐渐漂移。

如果这是不可能的,那么该信息也将非常有帮助。

4

4 回答 4

2

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

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

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

于 2009-06-23T23:43:27.380 回答
1

这是不可能的。这在台式机上甚至是不可能的。典型的操作系统根本无法以这种方式运行。

如果您需要的是每 4 毫秒精确触发一次,或者您不走运。如果你真正需要的是每秒精确发射 250 次的东西,那可能更可行。如果您需要后者,我可以建议一种方法。

于 2009-06-23T23:22:00.717 回答
1

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

于 2009-07-26T17:45:45.703 回答
0

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

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

看看 NIST 的这份报告。

于 2009-07-15T01:05:31.333 回答