А.4. Конфигурационные регистры РпР (* - определяется разработчиком)
Рисунок А.4. Конфигурационные регистры РпР (* - определяется разработчиком)
С точки зрения системы РпР карта пребывает в некотором состоянии. Состояние Isolate используется в протоколе изо- ляции, описанном выше.
Программирование карты начинается с команды WAKE[CSN] - записи байта CSN в регистр с индексом 3. Эта операция переводит карту с указанным CSN в состояние Config (конфигурирование), а остальные карты переходят в состояние Sleep. Для карты выполняются операции чтения ее конфигурационной информации (как карты в целом, так и Л У) и программирования используемых ресурсов. Про- граммирование каждого ЛУ завершается установкой его бита активации, после чего оно активизируется на шине ISA. Про- граммирование всей карты завершается переводом ее в со- стояние Wait/or key (ожидание ключа). По окончании кон- фигурирования все карты РпР должны быть переведены в это состояние - тогда их случайное реконфигурирование будет блокировано 32-байтным ключом.
Доступ к регистрам РпР через ключ возможен в любое вре- мя. Возможно переназначение CSN "на ходу" - это требует- ся в устройствах, допускающих динамическое включение/ выключение, док-станциях (Docking Stations) и при управ- лении энергопотреблением.
Все ЛУ карт РпР должны обеспечивать следующую мини- мальную функциональность:
Регистры ресурсов при чтении должны отражать факти- ческие текущие настройки.
Бит активации при чтении должен отражать правдивое состояние активности устройства на шине ISA.
ш Если программа пытается "навязать" карте неподдержи- ваемую конфигурацию, устройство не должно активиро- ваться; соответственно, при чтении его флаг активации должен быть сброшен.
Стандартные регистры управления картой (табл. А.5) исполь- зуются для адресации карты и ее ЛУ, а также для чтения кон- фигурационной информации (дескрипторов). Дескрипторы ресурсов могут быть считаны побайтно из регистра Resource Data. При этом могут использоваться данные в короткой или
длинной форме. Короткая форма (Small Resource Data Type) допускает дескрипторы до 7 байт, длинная форма (Large Resource Data Type) - до 64 Кбайт.
Форма дескриптора и имя описываемого ресурса определяются первым байтом дескрип- тора. Его последующие байты описывают требуемые ресурсы и возможные варианты (диапазоны) конфигурирования.
Регистр |
Индекс и тип |
Назначение |
SetRD DATA Port |
OOh.WO |
Установка адреса порта для чтения. Биты [7:0] задают значение бит [9:2] адреса порта READJDATA. Только для записи |
Serial Isolation |
01 h, RO |
Чтение этого регистра в состоянии Isolation приводит к побитному ана- лизу идентификатора |
Config Control |
02h,WO |
Бит [2]- сброс CSN в 0 Бит [1] - возврат в состояние Wait forKey Бит [0] - сброс всех ЛУ и перевод конфигурационных регистров в со- стояние включения питания, но CSN сохраняется. Эти биты не запоминаются, так что необходимости в их программном сбросе нет |
Wake[CSNJ |
03h,WO |
Запись в этот регистр приведет карту с записываемым байтом CSN к переходу из состояния Sleep в со- стояние Config (если данные не ну- левые). Запись нулевого байта переводит все карты в состояние Isolation. Указатель последовательно считываемых байт сбрасывается |
Resource Data |
04h,RO |
Чтение этого регистра возвращает очередной байт информации о ре- сурсах. Перед чтением должен опра- шиваться регистр Status |
Status |
05h, RO |
Регистр состояния. Единичное значение бита [0] указывает на воз- можность чтения очередного байта ресурсов |
Регистр |
Индекс и тип |
Назначение |
Card Select Number |
06h,RW |
Регистр хранения селективного адре- са CSN, обеспечивающего выбор кон- кретной карты командой Wake[CSN] |
Logical Device Number |
07h, RW |
Выбор текущего ЛУ, к которому отно- сятся вое операции обмена конфигу- рационной информацией, проверки диапазона адресов ввода/вывода и ак- тивации. Если карта имеет одно устройство, регистр допускает только чтение и всегда имеет нулевое значение |
Card Level Reserved |
08h-lFh |
Зарезервированы |
Card Level, Vendor Defined |
20h-2Fh |
Используются по усмотрению произ- водителя |
/p>
Регистр |
Индекс и тип |
Назначение |
Activate |
30h,RW |
Регистр активации: Бит [0] единичным значением раз- решает активность ЛУ на шине ISA. Биты [7:1] зарезервированы, при чтении должны возвращать нули. Перед активацией проверка диапа- зона адресов ввода/вывода должна быть запрещена |
I/O Range Check |
31 h, RW |
Регистр проверки диапазона адресов ввода/вывода: Биты [7:2] зарезервированы, при чте- нии должны возвращать нули Бит [1] - разрешение проверки Бит [0] - управление диагностичес- ким ответом: О-ответААп, 1 - ответ 55h |
Logical Device Control Reserved |
32h-37h |
Зарезервированы |
Logical Device Control Vendor Defined |
38h-3Fh |
Используются по усмотрению произ- водителя |
Оперативные данные конфигурирования доступны через регистры ЛУ. Каждое логическое устройство имеет собствен- ные дескрипторы используемых системных ресурсов:
Обычные 24-битные (4) и 32-битные (4) дескрипторы памяти. Поля базового адреса и длины неиспользуемого дескриптора памяти должны быть нулевыми. Одна кар- та не может одновременно использовать 24-битные и 32-битные дескрипторы памяти.
Дескрипторы областей портов ввода/вывода (8). Поле базового адреса неиспользуемого дескриптора портов вво- да/вывода должно быть нулевым. Размер области адре- сов определяется в блоке данных описателя.
Дескрипторы запросов прерываний (2). Неиспользуемый селектор запроса прерывания должен быть нулевым (ну- левой номер запроса занят системным таймером). Для линии IRQ2/9 шины ISA применяют номер 2.
Дескрипторы каналов прямого доступа к памяти.
Неис- пользуемый дескриптор канала должен иметь значение 4 (этот канал недоступен - используется для каскадирова- ния контроллеров).
Назначение регистров дескрипторов и их положение в ин- дексном пространстве РпР описано в табл. А.7.
Индекс и тип |
Назначение |
40h-5Fh - Обычные дескрипторы памяти |
|
40h, RW |
Дескриптор памяти ft базовый адрес памяти, биты [23:16] |
Индекс и тип |
Назначение |
41h, RW |
Дескриптор памяти 0: базовый адрес памяти, биты [15:8] |
42h, RW |
Дескриптор памяти О: управление. Бит [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] могут игнорироваться |
61 h, 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 |
71 h, RW |
Тип сигнала запроса прерывания 0-. Бит[1] -активный уровень: 1 - высокий, 0 - низкий Бит[0] - тип: 1 - уровень, 0 - перепад Если карта поддерживает только один тип сигнала, регистр может быть типа RO |
72h,RW |
Селектор запроса прерывания 1 |
73h, RW |
Тип сигнала запроса прерывания 1 |
74h-75h - Дескрипторы каналов прямого доступа |
|
74h, RW |
Селектор 0 канала DMA. Биты [2:0] задают номер используемого канала (001 -DMAO,... Ill -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 - следующее поле воспринимается как старший адрес |
/p>
Индекс и тип |
Назначение |
7Bh, RW |
32-битный дескриптор памяти ( h размер или старший адрес области, биты [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 |
Заполнитель (зарезервировано) |
AOh-A8h |
32-битный дескриптор памяти 3 |