2011-09-25 52 views
2

我的理解是,Windows是非确定性的,在使用它进行数据采集时会出现问题。使用32位总线和双核,是否可以使用内联asm来处理Visual Studio 2005中的中断,或者至少设置某种标志以及时保持一致并且抖动小?如何在Windows 7.0中编程以使其更具确定性?

走向RTOS(实时操作系统)的方向:在内核模式下编程的Windows CE可能对我们而言过于昂贵。

+3

你想用VS * 2005 *定位Windows 7吗? –

+0

比* what *更确定吗?列出实时系统必须满足的具体约束条件,可能对解决方案有很大帮助。在任何情况下,现代个人电脑都有很多硬件优化,难以保证一些限制。这绝不是纯软件问题。 –

+0

VS 2005是最后一个允许你做内联ASM ...和32位的最后一个。 64位不允许它。 – jdl

回答

2

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

如果成本非常关键,您可以在虚拟机中运行免费或低成本的RTOS。这可以工作,虽然有过RTOS和Windows,并没有直接的沟通机制之间的硬件访问没有合作(你可以使用TCP/IP通过虚拟(或实际)网络,我想。

另一种方法是执行在单机硬件(例如微控制器开发板或SBC)上进行实时数据采集,并通过例如USB或TCP/IP与Windows进行通信。可以将时序抖动降至微秒级或更高。

1

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

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