2

我的理解是 Windows 是不确定的,在使用它进行数据采集时可能会遇到麻烦。使用 32 位总线和双核,是否可以使用内联汇编来处理 Visual Studio 2005 中的中断,或者至少设置某种标志以在时间上保持一致而几乎没有抖动?

朝着 RTOS(实时操作系统)的方向发展:在内核模式下编程的 Windows CE 对我们来说可能太贵了。

4

3 回答 3

2

Windows 有第三方实时扩展。参见,例如http://msdn.microsoft.com/en-us/library/ms838340(v=winembedded.5).aspx

于 2011-09-25T23:56:39.070 回答
2

LabVIEW Real-timeRTX等 Windows 实时解决方案价格昂贵;独立的 RTOS 通常会更便宜(甚至免费),但如果您还需要 Windows 功能,那么您可能没有进一步的进展。

如果成本很关键,您可以在虚拟机中运行免费或低成本的 RTOS。这可以工作,尽管 RTOS 和 Windows 之间没有硬件访问的合作,也没有直接的通信机制(我想你可以在虚拟(或真实)网络上使用 TCP/IP。

另一种选择是在独立硬件(例如微控制器开发板或 SBC)上执行实时数据采集,并通过 USB 或 TCP/IP 与 Windows 进行通信。有可能通过这种方式将时序抖动降低到微秒级或更好。

于 2011-09-26T13:12:06.893 回答
1

Windows 不是 RTOS,所以没有神奇的答案。但是,您可以做一些事情来使系统更加“实时友好”。

  1. 禁用可以从您那里窃取系统资源的后台进程。
  2. 使用多核处理器减少上下文切换的影响
  3. 如果您的程序执行任何磁盘 I/O,请将其移至其自己的主轴。
  4. 查看进程优先级。确保您的进程以 High 或 Realtime 运行。
  5. 注意你的程序如何管理内存。避免做会导致过多磁盘分页的事情。
  6. 考虑对 Windows 进行实时扩展(已经提到过)。
  7. 考虑迁移到真正的 RTOS。
  8. 考虑将您的系统分为两部分:(1) 在微控制器/DSP/FPGA 上运行的实时组件,以及 (2) 在 Windows PC 上运行的用户界面部分。
于 2011-09-26T14:23:42.397 回答