Tommyknocker 0 27 июня, 2005 Опубликовано 27 июня, 2005 · Жалоба Стоит задача обслуживать PCI устройство на Windows-машине. Рассматриваемая плата представляет собой некоторое многоканальное устройство цифровой обработки сигнала, рабоющее пока (на стадии отработки всего программно-алгоритмического обеспечения) под управлением ПК. Устройство генерирует ~500 мкс прерывания. Обслуживание заключается в чтении данных с устройства и запись управляющих воздействий, вычисленных на базе считанных данных, обратно в устройство (Схемы сопровождения за фазой несущей сигнала и задержкой прихода, замыкаемые через процессор). Размер считываемых данных со всех каналов на каждом прерывании порядка 3 Кб. Пропуск одного прерывания равносилен потере работы всего устройства (срыв сопровождения сигнала). ТО есть за 500 мкс нужно гарантированно считать данные, их обработать и замкнуть обратную связь, послав в устройство величины ошибок, полученных в дискриминаторе, реализованном программно. Пытался найти какой-либо материал по работе с прерываниями на WIN машинах, на подобие: (п. 4.2) http://www.cniil.org/QNX_NEUTRINO_RTOS_V6_2_0.html#4_2 , но пока безрезультатно. Возможно кто-то обладает таким опытом (написания драйверов для устройств подобного класса). Буду благодарен за любую информацию (литературу, материалы) по данному вопросу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_mirgorodsky 0 27 июня, 2005 Опубликовано 27 июня, 2005 · Жалоба Драйверами под PCI не занимался, но занимался драйверами под Win. 2000 прерываний в секунду - не слишком большая частота для работы по прерываниям в среде Win. Однако, я бы предусмотрел накопление результатов в некотором буффере если система все же не будет успевать. Документа, подобного описанию на QNX на Win вы не найдете, потому как Win не OS с гарантированным временем отклика. Время отклика Win сильно зависит от факта работы CD/DVD-ROM приводов, общей загрузки системы пользовательскими приложениями и т.п. Как результат, ваше устройство может периодически пропускать прерывания и сбиваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tommyknocker 0 27 июня, 2005 Опубликовано 27 июня, 2005 · Жалоба Время отклика Win сильно зависит от факта работы CD/DVD-ROM приводов, общей загрузки системы пользовательскими приложениями и т.п. Как результат, ваше устройство может периодически пропускать прерывания и сбиваться. <{POST_SNAPBACK}> Соверешенно верно. Именно понимая всю теоретическую недетерминированность Win хотелось бы послушать, если удастся, тех кто непосредственно проверял данное обстоятельство Win машин на практике. На этапе разработки выбор на Вин падает в виду наличия большого количества собственно инструментов для разработки. Большого и уже в какой-то мере так или иначе изученного аппарата представления и визуализации результатов работы устройств. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Old Nick 0 27 июня, 2005 Опубликовано 27 июня, 2005 · Жалоба Время отклика Win сильно зависит от факта работы CD/DVD-ROM приводов, общей загрузки системы пользовательскими приложениями и т.п. Как результат, ваше устройство может периодически пропускать прерывания и сбиваться. <{POST_SNAPBACK}> Соверешенно верно. Именно понимая всю теоретическую недетерминированность Win хотелось бы послушать, если удастся, тех кто непосредственно проверял данное обстоятельство Win машин на практике. На этапе разработки выбор на Вин падает в виду наличия большого количества собственно инструментов для разработки. Большого и уже в какой-то мере так или иначе изученного аппарата представления и визуализации результатов работы устройств. <{POST_SNAPBACK}> Огромное количество устройств успешно работает под WINxx с куда более частыми прерываниями, однако только до тех пор, пока что-либо не случится :) Практический опыт: 4096 в секунду под 95 на 486. При этом параллельно запускался Word и что-то набивалось. Надеюсь, убедительно. Поэтому, если срыв "срыв сопровождения" из-за непредвиденных обстоятельств (например, порчи HDD) не приведет к какому-либо существенному ущеребу, может оказаться вполне достаточно лишь обеспечить такие условия, при коих машина не "впадает в ступор" из-за дисков/сети и пр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew2000 0 28 июня, 2005 Опубликовано 28 июня, 2005 · Жалоба Стоит задача обслуживать PCI устройство на Windows-машине <{POST_SNAPBACK}> Ну не пользуйтесь "отложенными прерываниями", а делайте свою математику в обработчике прерывания, только есс-но все остальные прерывания будут на это время подвисать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tommyknocker 0 28 июня, 2005 Опубликовано 28 июня, 2005 · Жалоба Стоит задача обслуживать PCI устройство на Windows-машине <{POST_SNAPBACK}> Ну не пользуйтесь "отложенными прерываниями", а делайте свою математику в обработчике прерывания, только есс-но все остальные прерывания будут на это время подвисать. <{POST_SNAPBACK}> :) Ну спасибо за глубокое пожелание. То есть Вы таким образом уже пробовали очень сильно насыщать код ISR да еще на высоких IRQL да еще с плавающей точкой, т.е. задействовать сопроцессор и особо все это не откладывая для DpcForIsr()... и так не менее 2000 раз в секунду? Буду очень признателен, если сочтете возможным поделиться подобным опытом, своими впечатлениями или наблюдениями, какими-то подводными камнями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew2000 0 29 июня, 2005 Опубликовано 29 июня, 2005 · Жалоба :) Ну спасибо за глубокое пожелание. То есть Вы таким образом уже пробовали очень сильно насыщать код ISR да еще на высоких IRQL ... <{POST_SNAPBACK}> Пробовал, но не сильно :), была задача, где от PCI карточки сыпались прерывания (кажется 1ms), в ISR небольшая математика, а если что-то шло не так - тогда в отложенные прер. Я думаю все это можно опытным путем (объем Вашей математики я не знаю), да и от мощи проца это сильно будет зависеть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться