Аппаратные интерфейсы ПК. Энциклопедия - Михаил Гук
Шрифт:
Интервал:
Закладка:
Доступ к регистрам PnP через ключ возможен в любое время функционирования, однако запись в них должна производиться в полной уверенности о знании последствий. Возможно даже переназначение CSN «на ходу», но это требуется лишь в устройствах, допускающих «горячие» включения-выключения (что не приветствуется на шине ISA), док-станциях (Docking Stations) для подключения портативных компьютеров и системах управления энергопотреблением.
Стандартные регистры управления логическим устройством (табл. 6.9) используются для активации карт и проверки отсутствия конфликтов на шине ISA в выбранном диапазоне адресов ввода-вывода. Когда включен режим проверки конфликтов, на чтение по любому адресу установленного диапазона портов ввода-вывода логическое устройство отвечает байтом 55h или AAh в зависимости от состояния бита 0 регистра проверки. Естественно, что в рабочем режиме этот «автоответчик» должен быть отключен.
Таблица 6.9. Стандартные регистры управления логическим устройством PnP
Имя Индекс и тип Назначение Activate 30h, RW Регистр активации. Бит [0] единичным значением разрешает активность логического устройства на шине ISA. Биты [7:1] зарезервированы, при чтении должны возвращать нули. Перед активацией должна быть запрещена проверка диапазона адресов ввода-вывода I/O Range Check 31h, RW Регистр проверки диапазона адресов ввода-вывода. Биты [7:2] зарезервированы, при чтении должны возвращать нули. Бит [1] — разрешение режима проверки. Бит [0] — управление диагностическим ответом: 0 — ответ AAh, 1 — ответ 55h Logical Device Control Резерв 32h-37h Зарезервированы на будущее Logical Device Control Vendor Defined 38h-3Fh Используются по усмотрению производителяОперативные данные конфигурирования доступны через регистры логических устройств. Каждое логическое устройство имеет собственные дескрипторы используемых системных ресурсов.
♦ Обычные 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Дескрипторы требуемых ресурсов (данные о возможных конфигурациях логических устройств) могут быть считаны последовательно байт за байтом из регистра Resource Data и использованы для конфигурирования устройств, которое выполняется через регистры, перечисленные в табл. 6.10. Считываться будут данные из карты, находящейся в состоянии config. Если регистр считывается сразу после «победы» карты в протоколе изоляции, считывание начинается с дескриптора версии PnP. Если считывание начинается для карты после ее «пробуждения» командой Wake[CSN], сначала будут считаны 8 байт уникального идентификатора, затем байт контрольного кода, который будет недействительным, поскольку генерируется аппаратно регистром LFSR во время побитного считывания идентификатора. Только после этого начнется считывание дескрипторов ресурсов. Порядок считывания дескрипторов существенен — именно в этом порядке должны программироваться регистры дескрипторов ресурсов карты PnP. Последовательность считывания дескрипторов для каждого логического устройства завершается признаком завершения области дескрипторов.