Доступ к регистрам PnP через ключ возможен в любое время функционирования, однако запись в них должна производиться в полной уверенности о знании последствий. Возможно даже переназначение CSN
«на ходу», но это требуется лишь в устройствах, допускающих «горячие» включения-выключения (что не приветствуется на шине ISA), док-станциях ( Docking Stations ) для подключения портативных компьютеров и системах управления энергопотреблением.
Стандартные регистры управления логическим устройством (табл. 6.9) используются для активации карт и проверки отсутствия конфликтов на шине ISA в выбранном диапазоне адресов ввода-вывода. Когда включен режим проверки конфликтов, на чтение по любому адресу установленного диапазона портов ввода-вывода логическое устройство отвечает байтом 55h или AAh в зависимости от состояния бита 0 регистра проверки. Естественно, что в рабочем режиме этот «автоответчик» должен быть отключен.
Оперативные данные конфигурирования доступны через регистры логических устройств. Каждое логическое устройство имеет собственные дескрипторы используемых системных ресурсов.
Назначение регистров дескрипторов и их положение в индексном пространстве PnP раскрывает табл. 6.10.
Индекс и тип |
Назначение |
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 |
Дескрипторы требуемых ресурсов (данные о возможных конфигурациях логических устройств) могут быть считаны последовательно байт за байтом из регистра Resource Data
и использованы для конфигурирования устройств, которое выполняется через регистры, перечисленные в табл. 6.10. Считываться будут данные из карты, находящейся в состоянии config . Если регистр считывается сразу после «победы» карты в протоколе изоляции, считывание начинается с дескриптора версии PnP. Если считывание начинается для карты после ее «пробуждения» командой Wake[CSN]
, сначала будут считаны 8 байт уникального идентификатора, затем байт контрольного кода, который будет недействительным, поскольку генерируется аппаратно регистром LFSR во время побитного считывания идентификатора. Только после этого начнется считывание дескрипторов ресурсов. Порядок считывания дескрипторов существенен — именно в этом порядке должны программироваться регистры дескрипторов ресурсов карты PnP. Последовательность считывания дескрипторов для каждого логического устройства завершается признаком завершения области дескрипторов.