— регистр состояния линии (точнее, состояния приемопередатчика). Ниже описано назначение бит регистра
LSR
.
♦ Бит 7 —
FIFOE
(FIFO Error Status) — ошибка принятых данных в режиме FIFO (буфер содержит хотя бы один символ, принятый с ошибкой формата, паритета или обрывом). В не FIFO-режиме всегда 0.
♦ Бит 6 —
TEMPT
(Transmitter Empty Status) — регистр передатчика пуст (нет данных для передачи ни в сдвиговом регистре, ни в буферных регистрах
THR
или FIFO).
♦ Бит 5 —
THRE
(Transmitter Holding Register Empty) — регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие символов в FIFO-буфере передачи. Может являться источником прерывания.
♦ Бит 4 —
BD
(Break Detected) — индикатор обрыва линии (вход приемника находится в состоянии 0 не менее чем время посылки символа).
(Parity Error) — ошибка контрольного бита (паритета или фиксированного).
♦ Бит 1 —
ОЕ
(Overrun Error) — переполнение (потеря символа). Если прием очередного символа начинается до того, как предыдущий выгружен из сдвигающего регистра в буферный регистр или в регистр FIFO, прежний символ в сдвигающем регистре теряется.
♦ Бит 0 —
DR
(Receiver Data Ready) — принятые данные готовы (в DHR или FIFO- буфере). Сброс — чтением приемника.
Индикаторы ошибок — биты [4:1] — сбрасываются после чтения регистра
LSR
. В режиме FIFO признаки ошибок хранятся в FIFO-буфере вместе с каждым символом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очереди на считывание). В случае обрыва линии в FIFO заносится только один «обрывной» символ, и UART ждет восстановления и последующего старт-бита.
MSR
— регистр состояния модема. Ниже описано назначение бит регистра
MSR
:
♦ Бит 7 —
DCD
(Data Carrier Detect) — состояние линии
DCD
:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 6 —
RI
(Ring Indicator) — состояние линии
RI
:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 5 —
DSR
(Data Set Ready) — состояние линии
DSR
:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 4 —
CTS
(Clear To Send) — состояние линии
CTS
:
• 0 — активна (-V);
• 1 — пассивна (+V).
♦ Бит 3 —
DDCD
(Delta Data Carrier Detect) — изменение состояния
DCD
.
♦ Бит 2 —
ТЕRI
(Trailing Edge Of Ring Indicator) — спад огибающей
RI
(окончание звонка).
♦ Бит 1 —
DDSR
(Delta Data Set Ready) — изменение состояния
DSR
.
♦ Бит 0 —
DCTS
(Delta Clear To Send) — изменение состояния
CTS
.
Признаки изменения (биты [3:0]) сбрасываются по чтению регистра.
SCR
— рабочий регистр (8 бит), на работу UART не влияет, предназначен для временного хранения данных (в 8250 отсутствует).
В диагностическом
режиме (при
LME
=1) внутри UART организуется внутренняя «заглушка»:
♦ выход передатчика переводится в состояние логической единицы;
♦ вход приемника отключается;
♦ выход сдвигающего регистра передатчика логически соединяется со входом приемника;
♦ входы
DSR
,
CIS
,
RI
и
DCD
отключаются от входных линий и внутренне управляются битами
DTRC
,
RISC
,
OUT1C
,
IE
;
♦ выходы управления модемом переводятся в пассивное состояние (логический ноль).
Переданные данные в последовательном виде немедленно принимаются, что позволяет проверять внутренний канал данных порта (включая сдвигающие регистры) и отработку прерываний, а также определять скорость работы UART.
2.6. Системная поддержка СОМ-портов
СОМ-порты поддерживаются сервисом BIOS
Int 14h
, который обеспечивает следующие функции:
♦ инициализация (установка скорости обмена и формата посылок; запрет источников прерываний) — на сигналы
DTR
и
RTS
влияния не оказывает (после аппаратного сброса они пассивны);
♦ вывод символа — активируются сигналы
DTR
и
RTS
, и после освобождения регистра THR в него помещается выводимый символ;
♦ ввод символа — активируется только сигнал
DTR
(
RTS
переходит в пассивное состояние), и ожидается готовность принятых данных;
♦ опрос состояния модема и линии (чтение регистров
MSR
и
LSR
).
Аппаратные прерывания не используются, ожидание готовности ввода и вывода ограничивается по тайм-ауту. Готовность можно быстро проверить опросом состояния.
В процессе начального тестирования POST BIOS проверяет наличие последовательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки
BIOS Data Area
0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса портов с логическими именами СOМ1-COM4. Нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки 0:047C, 047D, 047E, 047F заносятся константы, задающие тайм-ауты для портов.
Обнаруженные порты инициализируются на скорость обмена 2400 бит/с, 7 бит данных с контролем на четность (even), 1 стоп-бит. Управляющие сигналы интерфейса
DTR
и
RTS
переводятся в исходное состояние («выключено» — положительное напряжение).
2.7. Конфигурирование СОМ-портов
Компьютер может иметь до четырех последовательных портов COM1-COM4; для машин класса AT типично наличие двух портов. Управление последовательным портом разделяется на два этапа — предварительное конфигурирование (Setup) аппаратных средств порта и текущее (оперативное) переключение режимов работы прикладным или системным ПО. Конфигурирование СОМ-порта зависит от его исполнения. Порт на плате расширения конфигурируется джамперами на самой плате. Порт на системной плате конфигурируется через BIOS Setup.