Как программировать в Windows 7.0, чтобы сделать его более детерминированным? - PullRequest
2 голосов
/ 26 сентября 2011

Насколько я понимаю, Windows не является детерминированной и может иметь проблемы при использовании ее для сбора данных. Используя 32-битную шину и двухъядерный процессор, возможно ли использовать встроенный ассемблер для работы с прерываниями в Visual Studio 2005 или, по крайней мере, установить какие-либо флаги, чтобы они были согласованы во времени с небольшим дрожанием?

В направлении RTOS (операционной системы реального времени): Windows CE с программированием в режиме ядра может стать для нас слишком дорогой.

Ответы [ 3 ]

2 голосов
/ 26 сентября 2011

Решения в реальном времени для Windows, такие как LabVIEW Real-time или RTX , дороги;автономная ОСРВ часто бывала дешевле (или даже бесплатно ), но если вам нужна также функциональность Windows, вы, вероятно, не продвинетесь дальше.

Если стоимость критична, выможет запустить бесплатную или недорогую ОСРВ на виртуальной машине.Это может работать, хотя нет никакого взаимодействия по аппаратному доступу между ОСРВ и Windows, и нет механизма прямой связи (вы могли бы использовать TCP / IP через виртуальную (или реальную) сеть, я полагаю.

Другой альтернативой являетсявыполнять сбор данных в режиме реального времени на автономном оборудовании (например, на плате разработки микроконтроллера или SBC) и обмениваться данными с Windows через USB или TCP / IP. Таким образом, можно добиться снижения джиттера синхронизации до уровня микросекундыили лучше.

2 голосов
/ 26 сентября 2011

Существуют сторонние расширения для Windows в реальном времени. Смотрите, е. г. http://msdn.microsoft.com/en-us/library/ms838340(v=winembedded.5).aspx

1 голос
/ 26 сентября 2011

Windows не является ОСРВ, поэтому нет волшебного ответа. Однако есть некоторые вещи, которые вы можете сделать, чтобы сделать систему более «дружественной к реальному времени».

  1. Отключить фоновые процессы, которые могут украсть у вас системные ресурсы.
  2. Использование многоядерного процессора для уменьшения влияния переключения контекста
  3. Если ваша программа выполняет какой-либо дисковый ввод-вывод, переместите его на свой собственный шпиндель.
  4. Посмотрите на приоритет процесса. Убедитесь, что ваш процесс работает как High или Realtime.
  5. Обратите внимание на то, как ваша программа управляет памятью. Избегайте действий, которые приведут к чрезмерной подкачке диска.
  6. Рассмотрим расширение Windows в реальном времени (уже упомянутое).
  7. Подумайте о переходе на настоящую ОСРВ.
  8. Рассмотрите возможность разделения вашей системы на две части: (1) компонент реального времени, работающий на микроконтроллере / DSP / FPGA, и (2) часть пользовательского интерфейса, работающая на ПК с Windows.
...