Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить

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

Ср окт 20, 2010 08:47:46

ARV писал(а):вы сделайте лог работы вашей утилитки в течение пары секунд хотя бы, т.е. чтобы прошло время, в течение которого винда обязательно прервет работу виртуальной машины для своих нужд... вот тогда и посмотрим, насколько точно из-под виртуальной DOS временные интервалы отрабатываются...

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

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

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

Ср окт 20, 2010 13:49:16

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

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

Ср окт 20, 2010 21:20:51

Ссылку не привёл, т.к. там нет ничего, что можно было бы добавить к моему последнему посту.
Уверен, что Вы проводили поиск и по зарубежным форумам, но всё же вот пара интересных:
http://www.osronline.com/showthread.cfm?link=141095
http://us.generation-nt.com/answer/best-way-access-parallel-port-help-27721972.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. Но если нет опыта написания драйверов уровня ядра - нет смысла связываться с этим.

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

Вс дек 10, 2017 02:24:27

можно попытаться сделать так: настроить порт в режим ECP или EPP (я что-то подзабыл, какой из них умеет работать в DMA-режиме) и использовать для обращения к LPT системную функцию для блочного чтения файла. в вашем девайсе надо будет предусмотреть подачу строба "данные готовы" (в соответствии с протоколом ECP/EPP) с периодом 10 мкс, тогда все остальное драйвер Windows сделает сам автоматичеси.

другие способы, имхо, не помогут...

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

Если поискать, то : http://citforum.ru/operating_systems/windows/parp_win/ и
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Parport\Parameters]
"DisableWarmPoll"=dword:00000001

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

Вс дек 10, 2017 11:15:17

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