Программирование DMA для LPT - как?

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Mickle
Поставщик валерьянки для Кота
Сообщения: 2343
Зарегистрирован: Чт сен 09, 2010 07:32:24
Откуда: г. Рыбинск

Re: Программирование DMA для LPT - как?

Сообщение Mickle »

ARV писал(а):вы сделайте лог работы вашей утилитки в течение пары секунд хотя бы, т.е. чтобы прошло время, в течение которого винда обязательно прервет работу виртуальной машины для своих нужд... вот тогда и посмотрим, насколько точно из-под виртуальной DOS временные интервалы отрабатываются...
Мне-то это зачем? Разве я утверждал, что в VDM точно отрабатываются временные интервалы?
Я лишь хочу сказать топикстартеру, что с дискретностью 10 мкс читать байты можно только в ОС жёсткого реального времени, к коим NT не относится. А вот в DOS - элементарно. Например, просто перепрограммировав системный таймер на 100000 Гц (даже на 386 такое использовалось в MOD/STM-плеерах). ECP DMA - это тупиковый вариант, потому, как передачи блочные, DMA timeout никто не отменял, так что про 10 мкс перерывы речь, ИМХО, не может идти.

P.S. В Сети обнаружил вопрос про ECP DMA на англоязычном форуме в 2008 году, слово в слово дублирующий первый пост этой темы, только на английском. Забавно 8)
Реклама
Inquirer
Родился
Сообщения: 17
Зарегистрирован: Пт окт 15, 2010 10:50:38

Re: Программирование DMA для LPT - как?

Сообщение Inquirer »

Mickle писал(а):P.S. В Сети обнаружил вопрос про ECP DMA на англоязычном форуме в 2008 году, слово в слово дублирующий первый пост этой темы, только на английском. Забавно 8)
Ответы-то там были? Ссылку бы привёл, что ли.
Реклама
Mickle
Поставщик валерьянки для Кота
Сообщения: 2343
Зарегистрирован: Чт сен 09, 2010 07:32:24
Откуда: г. Рыбинск

Re: Программирование DMA для LPT - как?

Сообщение Mickle »

Ссылку не привёл, т.к. там нет ничего, что можно было бы добавить к моему последнему посту.
Уверен, что Вы проводили поиск и по зарубежным форумам, но всё же вот пара интересных:
http://www.osronline.com/showthread.cfm?link=141095
http://us.generation-nt.com/answer/best ... 21972.html
Примеры программирования ECP есть в книге "Parallel Port Complete: Programming, Interfacing, & Using the PC's Parallel Printer Port" Jan Axelson. Подробное описание особенностей реализации DMA пересылок есть в "Extended Capabilities Port: Specifications Cover Letter" http://www.fapo.com/files/ecp_reg.pdf В линуксовых исходниках драйвера parport тоже всё достаточно внятно описано.

P.S. За ночь всё-таки придумал вариант, как можно реализовать опрос с тактом в 10 мкс и передачей в буфер через DMA. Но если нет опыта написания драйверов уровня ядра - нет смысла связываться с этим.
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Программирование DMA для LPT - как?

Сообщение astrahard »

[uquote="ARV",url="/forum/viewtopic.php?p=590582#p590582"]можно попытаться сделать так: настроить порт в режим ECP или EPP (я что-то подзабыл, какой из них умеет работать в DMA-режиме) и использовать для обращения к LPT системную функцию для блочного чтения файла. в вашем девайсе надо будет предусмотреть подачу строба "данные готовы" (в соответствии с протоколом ECP/EPP) с периодом 10 мкс, тогда все остальное драйвер Windows сделает сам автоматичеси.

другие способы, имхо, не помогут...[/uquote]
Совершенно с Вами согласен насчет обращения с LPT как файлом из Windows и насчет строба, но не понятно, как объяснить Винде режим ЕCР? По моему, этот режим выбирается прозрачно в диалоге драйвера и ПУ (печатающего устройства), возникает тонкий момент, как Винде объяснить что к разъему подключено ЕCР устройство?

Если поискать, то : http://citforum.ru/operating_systems/windows/parp_win/ и
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters]
"DisableWarmPoll"=dword:00000001
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Программирование DMA для LPT - как?

Сообщение Jack_A »

Нормально - перекличка с интервалом ... 7 лет! А вы говорите - 10мкс...
Изображение
Реклама
Ответить

Вернуться в «Интеграция с ПК»