Перейти к содержанию
    

Работа с прерываниями на WIN машинах...

Стоит задача обслуживать PCI устройство на Windows-машине. Рассматриваемая плата представляет собой некоторое многоканальное устройство цифровой обработки сигнала, рабоющее пока (на стадии отработки всего программно-алгоритмического обеспечения) под управлением ПК. Устройство генерирует ~500 мкс прерывания. Обслуживание заключается в чтении данных с устройства и запись управляющих воздействий, вычисленных на базе считанных данных, обратно в устройство (Схемы сопровождения за фазой несущей сигнала и задержкой прихода, замыкаемые через процессор). Размер считываемых данных со всех каналов на каждом прерывании порядка 3 Кб. Пропуск одного прерывания равносилен потере работы всего устройства (срыв сопровождения сигнала). ТО есть за 500 мкс нужно гарантированно считать данные, их обработать и замкнуть обратную связь, послав в устройство величины ошибок, полученных в дискриминаторе, реализованном программно.

 

Пытался найти какой-либо материал по работе с прерываниями на WIN машинах, на подобие: (п. 4.2) http://www.cniil.org/QNX_NEUTRINO_RTOS_V6_2_0.html#4_2 , но пока безрезультатно. Возможно кто-то обладает таким опытом (написания драйверов для устройств подобного класса). Буду благодарен за любую информацию (литературу, материалы) по данному вопросу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Драйверами под PCI не занимался, но занимался драйверами под Win. 2000 прерываний в секунду - не слишком большая частота для работы по прерываниям в среде Win. Однако, я бы предусмотрел накопление результатов в некотором буффере если система все же не будет успевать.

 

Документа, подобного описанию на QNX на Win вы не найдете, потому как Win не OS с гарантированным временем отклика. Время отклика Win сильно зависит от факта работы CD/DVD-ROM приводов, общей загрузки системы пользовательскими приложениями и т.п. Как результат, ваше устройство может периодически пропускать прерывания и сбиваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Время отклика Win сильно зависит от факта работы CD/DVD-ROM приводов, общей загрузки системы пользовательскими приложениями и т.п. Как результат, ваше устройство может периодически пропускать прерывания и сбиваться.

Соверешенно верно. Именно понимая всю теоретическую недетерминированность Win хотелось бы послушать, если удастся, тех кто непосредственно проверял данное обстоятельство Win машин на практике.

 

На этапе разработки выбор на Вин падает в виду наличия большого количества собственно инструментов для разработки. Большого и уже в какой-то мере так или иначе изученного аппарата представления и визуализации результатов работы устройств.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Время отклика Win сильно зависит от факта работы CD/DVD-ROM приводов, общей загрузки системы пользовательскими приложениями и т.п. Как результат, ваше устройство может периодически пропускать прерывания и сбиваться.

Соверешенно верно. Именно понимая всю теоретическую недетерминированность Win хотелось бы послушать, если удастся, тех кто непосредственно проверял данное обстоятельство Win машин на практике.

 

На этапе разработки выбор на Вин падает в виду наличия большого количества собственно инструментов для разработки. Большого и уже в какой-то мере так или иначе изученного аппарата представления и визуализации результатов работы устройств.

 

Огромное количество устройств успешно работает под WINxx с куда более частыми прерываниями, однако только до тех пор, пока что-либо не случится :)

Практический опыт: 4096 в секунду под 95 на 486. При этом параллельно запускался Word и что-то набивалось. Надеюсь, убедительно.

Поэтому, если срыв "срыв сопровождения" из-за непредвиденных обстоятельств (например, порчи HDD) не приведет к какому-либо существенному ущеребу, может оказаться вполне достаточно лишь обеспечить такие условия, при коих машина не "впадает в ступор" из-за дисков/сети и пр.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стоит задача обслуживать  PCI устройство на Windows-машине

 

Ну не пользуйтесь "отложенными прерываниями", а делайте свою математику в обработчике прерывания, только есс-но все остальные прерывания будут на это время подвисать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стоит задача обслуживать  PCI устройство на Windows-машине

 

Ну не пользуйтесь "отложенными прерываниями", а делайте свою математику в обработчике прерывания, только есс-но все остальные прерывания будут на это время подвисать.

:) Ну спасибо за глубокое пожелание. То есть Вы таким образом уже пробовали очень сильно насыщать код ISR да еще на высоких IRQL да еще с плавающей точкой, т.е. задействовать сопроцессор и особо все это не откладывая для DpcForIsr()... и так не менее 2000 раз в секунду? Буду очень признателен, если сочтете возможным поделиться подобным опытом, своими впечатлениями или наблюдениями, какими-то подводными камнями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:) Ну спасибо за глубокое пожелание. То есть Вы таким образом уже пробовали очень сильно насыщать код ISR да еще на высоких IRQL ...

 

Пробовал, но не сильно :), была задача, где от PCI карточки сыпались прерывания (кажется 1ms), в ISR небольшая математика, а если что-то шло не так - тогда в отложенные прер.

Я думаю все это можно опытным путем (объем Вашей математики я не знаю), да и от мощи проца это сильно будет зависеть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...