Выбрать главу

Оперативные данные конфигурирования доступны через регистры логических устройств. Каждое логическое устройство имеет собственные дескрипторы используемых системных ресурсов.

♦ Обычные 24-битные (4) или 32-битные (4) дескрипторы памяти. Для неиспользуемого дескриптора памяти его поля базового адреса и длины должны быть нулевыми. Одна карта не может одновременно задействовать обычные (24-битные) и 32-битные дескрипторы памяти.

♦ Дескрипторы областей портов ввода-вывода (8). Для неиспользуемого дескриптора портов ввода-вывода его поле базового адреса должно быть нулевым. Размер области адресов определяется в блоке данных, считанном из регистра Resource Data.

♦ Дескрипторы запросов прерываний (2). Неиспользуемый селектор запроса прерывания должен быть нулевым (поскольку нулевой номер запроса недопустим — занят системным таймером). Для линии IRQ2/9 шины ISA применяют номер 9.

♦ Дескрипторы каналов прямого доступа к памяти. Неиспользуемый дескриптор канала прямого доступа должен иметь значение 4 (этот канал недоступен, по скольку задействован для каскадирования контроллеров).

Назначение регистров дескрипторов и их положение в индексном пространстве PnP раскрывает табл. 6.10.

Таблица 6.10. Регистры дескрипторов системных ресурсов логических устройств PnP

Индекс и тип Назначение
40h-5Fh — обычные (24-битные) дескрипторы памяти
40h, RW Дескриптор памяти 0: базовый адрес памяти, биты [23:16]
41h, RW Дескриптор памяти 0: базовый адрес памяти, биты [15:8]
42h, RW Дескриптор памяти 0: управление. Бит [1] — режим обращения: 0–8 бит, 1 — 16 бит. Бит [0] (RO) — способ задания диапазона: 0 — следующее поле воспринимается как маска адреса, 1 —как старший адрес
43h, RW Дескриптор памяти 0: маска или максимальный адрес области, биты [23:16]. Единичное значение бита в маске указывает, что соответствующий бит адреса участвует в дешифрации адреса области памяти (старшие биты); нулевое — бит адреса используется для адресации в пределах выделенной области)
44h, RW Дескриптор памяти 0: маска или максимальный адрес области, биты [15:8]
45h-47h Заполнитель (зарезервировано)
48h-4Ch Дескриптор памяти 1 (аналогично предыдущему)
4Dh-4Fh Заполнитель (зарезервировано)
50h-54h Дескриптор памяти 2 (аналогично предыдущему)
55h-57h Заполнитель (зарезервировано)
58h-5Ch Дескриптор памяти 3 (аналогично предыдущему)
5Dh-5Fh Заполнитель (зарезервировано)
60h-6Fh — дескрипторы пространства ввода-вывода
60h, RW Дескриптор портов 0: базовый адрес, биты [15:8]. Если логическое устройство использует только 10-битное декодирование адреса, биты [15:10] могут игнорироваться
61h, RW Дескриптор портов 0: базовый адрес, биты [7:0]
62h-63h, RW Дескриптор портов 1 (аналогично предыдущему)
64h-65h, RW Дескриптор портов 2 (аналогично предыдущему)
66h-67h, RW Дескриптор портов 3 (аналогично предыдущему)
68h-69h, RW Дескриптор портов 4 (аналогично предыдущему)
6Ah-6Bh, RW Дескриптор портов 5 (аналогично предыдущему)
6Ch-6Dh, RW Дескриптор портов 6 (аналогично предыдущему)
6Eh-6Fh, RW Дескриптор портов 7 (аналогично предыдущему)
70h-73h — дескрипторы запросов прерываний
70h, RW Селектор запроса прерывания 0. Биты [3:0] задают номер IRQ для Interrupt 0
71h, RW Тип сигнала запроса прерывания 0. Бит[1] — активный уровень: 1 — высокий, 0 — низкий. Бит[0] — тип: 1 — уровень, 0 — перепад. Если карта поддерживает только один тип сигнала, регистр может быть типа RO
72h, 73h RW Селектор и тип запроса прерывания 1 (аналогично предыдущему)
74h-75h — дескрипторы каналов прямого доступа
74h, RW Селектор 0 канала DMA. Биты [2:0] задают номер используемого канала (001 — DMA0…, 111 — DMA7)
75h, RW Селектор 1 канала DMA (аналогично предыдущему)
76h-A8h — 32-битные дескрипторы памяти
76h, RW 32-битный дескриптор памяти 0: базовый адрес памяти, биты [31:24]
77h, RW 32-битный дескриптор памяти 0: базовый адрес памяти, биты [23:16]
78h, RW 32-битный дескриптор памяти 0: базовый адрес памяти, биты [15:8]
79h, RW 32-битный дескриптор памяти 0: базовый адрес памяти, биты [7:0]
7Ah, RW 32-битный дескриптор памяти 0: управление. Биты [7:3] — зарезервированы, при чтении должны возвращать нули. Биты [2:1] — управление доступом: 00 — 8-битная память, 01 — 16-битная память, 10 — зарезервировано, 11 — 32-битная память. Бит [0] (RO) — способ задания диапазона: 0 — следующее поле воспринимается как размер области, 1 — следующее поле воспринимается как старший адрес
7Bh, RW 32-битный дескриптор памяти 0: размер или старший адрес области, биты [31:24]
7Ch, RW 32-битный дескриптор памяти 0: размер или старший адрес области, биты [23:16]
7Dh, RW 32-битный дескриптор памяти 0: размер или старший адрес области, биты [15:8]
7Eh, RW 32-битный дескриптор памяти 0: размер или старший адрес области, биты [7:0]
7Fh Заполнитель (зарезервировано)
80h-88h 32-битный дескриптор памяти 1
89h-8Fh Заполнитель (зарезервировано)
90h-98h 32-битный дескриптор памяти 2
99h-9Fh Заполнитель (зарезервировано)
A0h-A8h 32-битный дескриптор памяти 3