информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] com-порт/dos/обработка прерывания 30.04.03 10:51  Число просмотров: 1696
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 30.04.03 11:03  Количество правок: 4
<"чистая" ссылка>
Во-первых - рад, что что-то получилось.

>
> > Разрешить прерывания от порта (адрес порта+4 бит
> знач. 0х08)
>
> Я, блин, неделю почти провозился, пока случайно не нарвался
> на этот факт (методом научного тыка). Я, кретин,
> невнимательно прочитал твое сообщение и даже не обратил
> внимание на этот пункт. И до сих пор понять не могу, какое
> отношение имеет линия OUT2 к прерыванию.
>

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

> У меня есть еще парочка вопросов:
> - Есть какая-нибудь литература (сайт) по работе с
> COM-портом

Я пользовался только HELPами, MANами и другими файловыми доками.
Книжка по ассемблеру была, но куда-то делась, вроде как в книжке "С для профессионалов" что-то было, но, как правило, все кривое. Во всех доках ошибки найдуться.

> ( В обычных учебниках по ассемблеру что-то мало информации.
> Я пользовался Зубковым "Ассемблер" - (кстати, и там этот
> пункт одной строкой прописан - я тоже внимание не обратил
> ;) ) )
> - Настройка регистров+2 и +3 для метода FIFO - это что
> такое ?

У последовательных портов типа 16550А, именно А, есть очередь. То есть если байт не успели вытащить из регистра приемника, а по линии уже передан следующий, то при приеме нового, ни старый не забьется новым в регистре приемнике, ни новый не пропадет (встанет в очередь, попадет в регистр приемник и вызовет прерывание, как только будет завершена обработка предыдущего). Очередь до 16 событий по передаче и приему. Используется для повышения скорости и надежности связи. Информации о том как с очередью работать у меня нет.

> - Если под W2k писать драйвер - то с точки зрения
> программирования аппаратной части разница есть
> какая-нибудь.

Под Вин2к ничего не писал, но проблем может быть не мало. Если иметь всю документацию, то написать, естественно, можно.

> - Если тебе доводилось видеть комп с 10 COM портами (4
> COM-порта на одном векторе прерывания), то проблем никаких
> у тебя с ними не было ?

Такую плату видел только "в глаза", в руках держал, но программировать под нее не программировал. Думаю ничего сложного - соответственно в 10 раз увеличивается пул адресов портов. Чуть хуже если используется мультиплексирование - т.е. значение какого-то портика используется как номер одного из десяти ком-портов, для которого отображен этот маленький диапазон портов. И крайне редкая ситуация - когда адреса приемников-передатчиков для каждого - свои, а адреса портов настройки/управления - общие. Короче нужно читать доку от платы.
Главное прерывание произошло - проверить не от одного ли это из десяти портов по мл. биту регистра идентификации прерываний, если нет - то вообще передать прерывание дальше - это в ДОСе. В виндовсе все по другому должно быть. В оригинале на одном векторе сидят СОМ1 и СОМ3 (IRQ4), на другом СОМ2 и СОМ4 (IRQ3). От того, что их 10 суть не меняется, принципы одни и те же остаются. Да и вообше, когда пишешь любой обработчик, нужно понимать, что на одном векторе несколько устройств может сидеть. Это на IBM-PC/XT только не возможно было. А то я натыкался на проблемы, когда в терминальной программе мышкой работать нельзя было (СОМ1-мышь, СОМ3 - модем), а при выходе из терминальной программы мышь умирала. Видомо терминальная программа запрещала IRQ4 в контроллере прерываний при завершении работы.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach