СИСТЕМНАЯ ПОДДЕРЖКА СОМ-ПОРТОВ

МИКРОСХЕМЫ АСИНХРОННЫХ ПРИЕМОПЕРЕДАТЧИКОВ

 

В СОМ-портах преобразование параллельного кода в последовательный для пе­редачи и обратное преобразование при приеме данных выполняют специализи­рованные микросхемы UART (Universal Asynchronous Receiver-Transmitter — универсальный асинхронный приемопередатчик).

Эти же микросхемы формируют и обрабатывают управляющие сигналы интерфейса.

В компьютерах класса AT применяют микросхемы UART перечисленных ниже модификаций: 16450, 16550, 16550А. Именно этот тип U ART должен применяться в РС.

Микросхемы UART 16550А с программной точки зрения представляют собой на­бор регистров, доступ к которым определяется адресом и значением бита DLAB (бита 7 регистра LCR). В адресном пространстве микросхема занимает 8 смежных адресов.

 

Т H Rпромежуточный регистр данных передатчика (только для записи). Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS.

RBRбуферный регистр принимаемых данных (только для чтения). Данные, приня­тые входным сдвигающим регистром, помещаются в регистр RBR, откуда они могут быть считаны процессором. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра, фиксируется ошибка переполнения.

DLLрегистр младшего байта делителя частоты.

D L Mрегистр старшего байта делителя частоты. Делитель определяется по фор­муле D=115200/V, где V — скорость передачи, бит/с.

IER — регистр разрешения прерываний. Единичное значение бита разрешает пре­рывание от соответствующего источника.

IIRрегистр идентификации прерываний и признака режима FIFO (только для чтения).

FCRрегистр управления FIFO (только для записи).

 

Для упрощения программного анализа UART выстраивает внутрен­ние запросы прерывания по четырехуровневой системе приоритетов. Порядок приоритетов (по убыванию): состояние линии, прием символа, освобождение ре­гистра передатчика, состояние модема.

LSRрегистр состояния линии (точнее, состояния приемопередатчика).

MSR —регистр состояния модема.

MCR — регистр управления модемом

SCRрабочий регистр (8 бит), на работу UART не влияет, предназначен для вре­менного хранения данных (в 8250 отсутствует).

В диагностическом режиме (при LME=1) внутри UART организуется внутренняя «заглушка»:

· выход передатчика переводится в состояние логической единицы;

· вход приемника отключается.

 

 

СОМ-порты поддерживаются BIOS Int 14h, который обеспечивает сле­дующие функции:

· инициализация (установка скорости обмена и формата посылок; запрет источников прерываний) — на сигналы DTR и RTS влияния не оказывает; (Управляющие сигналы интер­фейса DTR и RTS переводятся в исходное состояние («выключено» — положитель­ное напряжение).

· вывод символаактивируются сигналы DTR и RTS, и после освобождения ре­гистра THR в него помещается выводимый символ;

· ввод символа — активируется только сигнал DTR (RTS переходит в пассивное состояние), и ожидается готовность принятых данных;

· опрос состояния модема и линии (чтение регистров MSR и LSR).

 

Аппаратные прерывания не используются, ожидание готовности ввода и вывода ограничивается по тайм-ауту. Готовность можно быстро проверить опросом со­стояния.

В процессе начального тестирования POST BIOS проверяет наличие последо­вательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки BIOS Data Area 0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса портов с логическими именами СОМ1-COM4. Нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки О47С, 047D, 047Е, 047F заносятся констан­ты, задающие тайм-ауты для портов.

Обнаруженные порты инициализируются на скорость обмена -

2400 бит/с, 7 бит данных с контролем на четность (even), 1 стоп-бит. Управляющие сигналы интер­фейса DTR и RTS переводятся в исходное состояние («выключено» — положитель­ное напряжение).