Timer <;Windows CE上的100uS精确睡眠

Timer <;Windows CE上的100uS精确睡眠,timer,real-time,sleep,windows-ce,Timer,Real Time,Sleep,Windows Ce,在Windows CE上是否可以精确到100微秒以下的睡眠时间?抖动越小越好-理想情况下,我们想要一位数的微秒响应时间 我们真正想要的是一个5毫秒的定时器,抖动非常低——尽管Windows CE WaitFor[Single | Multiple]对象和Sleep API以毫秒为单位工作,但我们无法校正代码运行所需的亚毫秒时间,因此周期将逐渐漂移 如果这是不可能的,那么这些信息也会非常有用。这是不可能的。甚至在台式机上都不可能。典型的操作系统根本不以这种方式工作 如果你需要的是精确地每4毫秒发射

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

我们真正想要的是一个5毫秒的定时器,抖动非常低——尽管Windows CE WaitFor[Single | Multiple]对象和Sleep API以毫秒为单位工作,但我们无法校正代码运行所需的亚毫秒时间,因此周期将逐渐漂移


如果这是不可能的,那么这些信息也会非常有用。

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


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

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

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

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

如果你没有被锁定在你的WinCE版本中,你可能想看看,谁声称提供了一个RTOS与Windows在标准硬件上并排运行

我也听说过他们的好东西,但我也没用过他们的产品。但是,我不相信它在任何方面都与Windows兼容。

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

如果你没有被锁定在你的WinCE版本中,你可能想看看,谁声称提供了一个RTOS与Windows在标准硬件上并排运行


我也听说过他们的好东西,但我也没用过他们的产品。但是,我不认为它在任何方面与Windows兼容。

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

最简单的方法是使用具有实时性的Linux,然后通过WINE进入该库。 你需要一个周期性的线程


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

最简单的方法是使用具有实时性的Linux,然后通过WINE进入该库。 你需要一个周期性的线程


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


L.B.

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


L.B.

只要我们能够以非实时方式与某个供应商库(具有CE版本,以及适用于wine的常规windows版本)进行交互,我们就不会真正锁定在任何特定的操作系统中。不过,许可成本是一个问题,因此将第三方RTO置于Windows许可成本之上是不可取的。有什么比像那样破解计时器中断更容易的吗?或者这是我们能得到的最好的结果吗?那个链接只是一些粗略的谷歌搜索的结果。我对Windows CE不太熟悉,无法就以任何其他方式设置高分辨率计时器的困难给您一个自信的答案。只要我们能够以非实时方式与某个供应商库接口,我们就不会真正锁定在任何特定的操作系统中(具有CE版本,以及适用于wine的常规windows版本)。但是,授权成本是一个问题,因此将第三方RTO置于Windows授权成本之上是不可取的。有什么比像那样破解计时器中断更容易的吗?或者这是我们能得到的最好结果吗?该链接只是一些粗略的谷歌搜索的结果。我对Windows CE不太熟悉,无法给你一个自信的答案关于以任何其他方式设置高分辨率计时器的困难。这似乎不正确。VoIP音频数据包之间的标准间隔为20ms(u/a-law),没有任何桌面软件在处理这一点上有问题;或者服务器以这种方式生成数百个音频流。(在抖动的情况下,我不确定VoIP音频数据包与精确定时有什么关系。网卡不会轮询通过线路传输的数据,而是在CPU轮询数据之前将其放入缓冲区。这似乎不正确。VoIP音频数据包之间的标准间隔为20ms(u/A-law)没有任何桌面软件在处理这一点上有问题;或者服务器以这种方式生成数百个音频流。(我不确定VoIP音频数据包与精确定时有什么关系。网卡不会轮询通过线路传输的数据,而是在CPU轮询数据之前将其接收并推入缓冲区。