Сделай Сам Свою Работу на 5

Спецификация Plug and Play для шины ISA





Аппаратно-программную спецификацию «Plug and Play ISA Specification» выпус­тили компании Intel и Microsoft в 1994 г. Она обеспечивает решение задач изоля­ции карт ISA, программного распределения системных ресурсов, конфигурирования и передачи параметров операционной системе и прикладному ПО. Вышеперечис­ленные задачи решаются для карт PnP, которые могут работать и в окружении так называемых традиционных карт {Legacy Cards). Поскольку описание программ­ной части этой спецификации достаточно объемно и выходит за рамки данной книги, рассмотрим принципы реализации PnP в основном с точки зрения аппа­ратных средств. Конфигурирование в системе PnP состоит из следующих шагов.

1. Производится изоляция одной карты от всех остальных.

2. Карте назначается номер CSN (Card Select Number — селективный номер кар­ты), фигурально выражаясь, «приделывается ручка» (Assign a handle), за кото­рую ее можно «ухватить» дальнейшим командам PnP.

3. С карты считываются данные о сконфигурированных и поддерживаемых ре­
сурсах. Эти шаги повторяются для всех карт, после чего выполняются завершающие шаги.

4. Производится распределение (арбитраж) системных ресурсов, выделяемых
каждой карте. Каждая карта конфигурируется согласно выбранному распределению ресур­сов и активируется (переводится в рабочий режим).



Все шаги конфигурирования выполняет процедура POST (если BIOS имеет под­держку PnP) или операционная система при загрузке. PnP BIOS может ограничить­ся конфигурированием и активацией только устройств, участвующих в загрузке, оставляя конфигурирование и активацию дополнительных устройств операцион­ной системе. BIOS без поддержки PnP может использовать необходимые для за­грузки устройства, сконфигурированные с параметрами по умолчанию, а изоля­цией карт, сбором информации и конфигурированием займется операционная система при загрузке. Вариантов много, но все они опираются на единые методы взаимодействия с картами ISA PnP. Конфигурирование выполняется в специаль­ном состоянии плат, в которое их всех можно программно перевести с помощью специального ключа инициализации, защищающего конфигурационную инфор­мацию от случайного разрушения.

Для конфигурирования карт PnP необходимо всего три 8-битных системных порта (табл. 6.7), с которыми процессор может общаться, применяя инструкции ввода-вывода с однобайтной передачей данных. Карты PnP должны использовать 12-бит­ное декодирование адреса ввода-вывода, а не 10-битное, как это принято в тради­ционных картах ISA.




166 Глава 6. Шины и карты расширения

Таблица 6.7. Системные порты ISA PnP  
Имя порта Адрес Тип доступа
ADDRESS WRITE_DATA READ_DATA 0279П (Printer status port) OA79h (Printer status port + OSOOh) Перемещаемый в диапазоне 0203h-03FFh Только запись Только запись Только чтение

Порт APDRES5 используется для адресации регистров PnP — в него записывают индекс требуемого регистра (см. ниже пункт «Конфигурирование карт») перед обращением к портам WRITE_DATA и READ_DATA. Этот же порт используется и для записи последовательности кодов ключа инициализации. Выбор адреса для него обусловлен тем, что ни одна разумно сделанная карта расширения не будет пытать­ся задействовать для записи адрес регистра состояния стандартного LPT-порта.

Порты WRITE_DATA и READ_DATA используются для обмена данными с регистрами PnP. Адрес порта WRITE_DATA традиционными картами с 10-битным декодирова­нием будет восприниматься как тот же адрес, что и у предыдущего порта, так что конфликт опять-таки исключен. Перемещаемому адресу порта READ_DATA про­граммное обеспечение PnP во время исполнения протокола изоляции может лег­ко найти бесконфликтное положение. Адрес этого порта сообщается всем картам записью в их управляющий регистр PnP.

Вышеперечисленные Три порта используются только для конфигурирования и управления картами PnP. Для взаимодействия прикладных программ с функци­ональными устройствами карты используются иные ресурсы, выделенные карте (порты, области памяти, прерывания и каналы DMA). По включению питания или аппаратному сбросу карты настраиваются на стандартную рабочую конфигура­цию, принятую для них по умолчанию (она может храниться в энергонезависи­мой Памяти или задаваться джамперами). Это обязательно, по крайней мере для устройств, участвующих в загрузке, — ввод, вывод (экран) и собственно загрузоч­ное устройство. Остальные устройства могут быть и логически отключенными от шины, до тех пор пока они не будут сконфигурированы программными средства­ми PnP. Карта PnP должна сообщать обо всех используемых ею ресурсах и, по возможности, предлагать альтернативные конфигурирования. Она обязана подчи­няться конфигурационным командам PnP, включая команду деактивации (логиче­ского отключения от шины); при невозможности принять указанную конфигурацию карта (или ее логическое устройство) должна отключаться. Строгое выполнение данных требований всеми картами делает возможным работу системы PnP на не­приспособленной для этого шине ISA. Непременным условием работоспособно­сти является и уникальность идентификаторов карт (см. ниже).-



В плане PnP каждая карта может находиться в одном из четырех состояний.

Wait for key (ожидание ключа) — состояние нормального функционирования (или отключения) логических устройств. В это состояние устройство входит при включении питания, по аппаратному сбросу и по завершению его конфи­гурирования системой PnP. До подачи ключа в этом состоянии конфигурация карты программными обращениями изменена быть не может.


6.1. Шины ISA, EISA и PC/104



Sleep («спячка») — состояние, в котором карта ожидает пробуждающей коман­
ды Wake [CSN], переводящей ее либо в состояние изоляции, либо в состояние
конфигурирования. При нулевом параметре CSN в команде все карты с нена-
значенным номером CSN переводятся в состояние изоляции. При ненулевом
параметре CSN в команде карта с совпадающим номером CSN переводится в со­
стояние конфигурирования.

♦ Isolation(изоляция) — картаотвечаеттольконачтениерегистраSerial Isolation
для реализации одноименного протокола (см. далее), с помощью которого ей
назначается уникальный номер CSN. Остальные команды PnP ей недоступны.

Config (конфигурирование) — состояние, в котором карта отвечает на все об­
ращения к регистрам PnP, позволяя считывать и изменять ее конфигурацию.
В этом состоянии может находиться лишь одна карта. По окончании конфигури­
рования карту переводят в режим ожидания ключа, защищая ее конфигурацию.

Протокол изоляции

Для изоляции карт друг от друга имеется специальный режим работы, в который логика PnP переводится с помощью ключа инициализации (Initiation key). Ключ представляет собой предопределенную последовательность записей в порт ADDRE S 5 (279h). Аппаратная логика карты, проверяющая ключ, основана на сдвиговом ре­гистре с обратными связями LFSR (Linear Feedback Shift Register), схема которого приведена на рис. 6.5. Во время проверки ключа на вход С1 подается уровень логи­ческого нуля, а на вход С2 — стробы записи в порт ADDRESS. Логика, не показанная на рисунке, сравнивает код в сдвиговом регистре с текущей записью и при несовпа­дении сбрасывает регистр LFSR в исходное состояние (код 6Ah). В это же состо­яние регистр может быть переведен двумя последовательными записями нулей в порт ADDRESS. Сдвиг в регистре происходит при каждой записи в порт ADDRESS. Если ключ (последовательность из 32 записей требуемых байт) из исходного со­стояния LFSR будет приложен верно, то после последней записи логика карты перейдет в режим конфигурирования (это еще не состояние config) и подготовит­ся к отработке протокола изоляции. Точная последовательность байт ключа в hex-формате выглядит следующим образом:

6А, В5, DA, ED, F6.. FB', 7D, BE, DF, 6F, 37, IB, 0D, 86, СЗ, 61, В0, 58, 2С. 16. 8В. 45, А2, D1, Е8. 74, ЗА, 9D, СЕ, Е7, 73. 39


С1

Выход контрольной суммы

Начальное значение:

1 1 0 1 0 1

Рис.6.5. Сдвиговый регистр LFSR карты PnP


168 ________________________ Глава 6. Шины и карты расширения

Протокол изоляции основан на уникальном последовательном идентификаторе (Serial Identifier), хранящемся в памяти каждой карты PnP. Этот идентификатор представляет собой ненулевое 72тбитное число, состоящее из двух 32-битных по­лей и 8-битного контрольного кода, вычисляемого с помощью того же регистра LFSR. Первое 32-битное поле представляет собой идентификатор производите­ля. Второе поле назначается производителем и уникально для каждого экземпляра всех выпускаемых им карт. Здесь может присутствовать серийный номер, а для адаптера Ethernet это может быть и частью МАС-адреса. Принцип построения последовательного идентификатора гарантирует, что в одной системе не могут встретиться две карты с совпадающими идентификаторами. Однако случалось, что незадачливые производители тиражировали (свои ли?) устройства, копируя всю «начинку», включая и серийные номера. Доступ к идентификатору осуществ­ляется последовательно, начиная с бита 0 нулевого байта идентификатора произ­водителя и заканчивая битом 7 контрольной суммы. Во время передачи иденти­фикатора на вход С1 схемы LFSR поступают текущие биты идентификатора, а на вход С2 подаются стробы чтения регистра Serial Isolation (см. ниже). В так­тах передачи контрольной суммы ее биты берутся с выхода сдвигового регистра.

Протокол изоляции может быть программно инициирован в любой момент време­ни посылкой корректного ключа инициализации, переводящего все карты в кон­фигурационный режим. В этом режиме каждая карта ожидает 72 пары операций чтения порта READ_DATA. Ответ каждой карты на эти операции определяется зна­чением очередного бита ее последовательного идентификатора.

Если текущий бит идентификатора карты имеет единичное значение, то ее буфер шины данных в первом чтении пары выводит на шину данных значение 55Ь. Если текущий бит нулевой, то буфер работает на чтение шины данных и логика карты анализирует ответ других карт — проверяет наличие комбинации «01» в битах D[l:0] (младшие биты числа 55h). В следующем цикле чтения пары карта с еди­ничным битом выводит число AAh, а карта с нулевым текущим битом проверяет наличие комбинации «10».

Если карта, просматривающая вывод данных другими картами, обнаружила кор­ректные коды в обоих циклах чтения пары, она в данной итерации изоляции ис­ключается.

Если карта в текущей паре управляла шиной или карта читала шину, но не обна­ружила корректных активных ответов других карт, она сдвигает идентификатор на один бит и готовится к приему следующей пары циклов чтения.

Эта последовательность выполняется для всех 72 бит идентификатора. В конце процесса останется лишь одна карта. Записью в управляющий регистр PnP (ин­декс 06) ей назначается селективный номер CSN, по которому она будет использо­ваться в дальнейших операциях. Карта с назначенным номером CSN в следующих итерациях протокола изоляции не участвует (на пары чтений не отвечает).

Во время протокола изоляции карты не имеют права удлинять шинные циклы с помощью сигнала IOCHRDY, поскольку это привело бы к неопределенности ре­зультатов наблюдения за «соседями». В других режимах этот сигнал может быть использован без особых ограничений.


6.1. Шины ISA, EISA и PC/104 ______________________________________ 169

Программа конфигурирования проверяет данные, возвращаемые во время всех пар циклов чтения, и побитно собирает прочитанный идентификатор. Если в паре приняты байты 55h и AAh, то соответствующий бит считается единичным, в дру­гих случаях он считается нулевым. При приеме идентификатора программа подсчи­тывает контрольную сумму и сравнивает ее с принятой. Несовпадение контрольной суммы или отсутствие среди принятых байт 55h и AAh указывает на то, что вы­бранный адрес порта READ_DATA конфликтует с каким-либо устройством. Тогда программа пробует произвести итерацию, переместив адрес порта READ_DATA в допустимом диапазоне адресов. Если при переборе нескольких возможных ад­ресов не удается считать корректный идентификатор, то принимается решение об отсутствии карт PnP в системе (вообще или с неназначенными номерами CSN). Программа должна обеспечивать задержку 1 мс после подачи ключа перед первой парой чтений и 250 мкс между парами чтений. Это дает карте время для доступа к информации, которая может храниться и в медленных устройствах энергонезави­симой памяти.

Итак, по завершении протокола изоляции программное обеспечение имеет спи­сок идентификаторов обнаруженных карт и присвоенных им селективных номе­ров, сообщенных и самим картам. Далее общение программы с каждой картой идет по ее селективному номеру CSN, фигурирующему в командах PnP. Нулевой CSN присваивается картам по программному или аппаратному сбросу и используется как широковещательный адрес.

Конфигурирование карт

Конфигурирование карт выполняется обращениями к регистрам PnP. Обращения к регистрам PnP представляют собой операции записи или чтения портов вво­да-вывода по адресам WRITE_DATA или READ_DATA соответственно. При этом для указания конкретного регистра PnP используется индекс — номер этого регистра, предварительно записанный в регистр ADDRESS.

Каждая карта имеет стандартный набор регистров PnP, причем часть из них от­носится к карте в целом, а часть — к каждому логическому устройству, входяще­му в карту. Архитектура PnP поддерживает концепцию многофункционально­сти, согласно которой каждая карта может включать в себя несколько логических устройств. В любой момент времени в индексном пространстве регистров PnP ото­бражаются стандартные регистры управления картой (см. ниже) и регистры толь­ко одного логического устройства (рис. 6.6). Выбор логического устройства, с ко­торым производится общение, осуществляется записью в регистр Logical Device Number, входящий в группу управляющих регистров карты.

Все логические устройства карт PnP должны обеспечивать, по крайней мере, мини­мальную функциональность:

♦ регистры ресурсов при чтении должны отражать фактические текущие на­
стройки;

♦ бит активации при чтении должен отражать реальное состояние активности
устройства на шине ISA;



Глава 6. Шины и карты расширения


♦ если программа пытается «навязать» карте конфигурацию, не поддерживаемую устройством, это устройство не должно активироваться и, соответственно, при чтении его флаг активации должен быть сброшен.

Рис.6.6. Конфигурационные регистры PnP (* — определяется разработчиком)

Для адресации к карте и ее логическим устройствам, а также для чтения конфигу­рационной информации используются стандартные регистры управления картой (табл. 6.8).

Таблица 6.8.Стандартные регистры управления картой PnP


Имя


Индекс и тип Назначение


 


Set RD_DATA Port OOh, WO

Serial Isolation 01 h, RO Config Control 02h,WO

03h,WO

Wake[CSN]


Установка адреса порта для чтения. Биты [7:0]задают значение бит [9:2] адреса порта READ_DATA. Только для записи

Чтение этого регистра в состоянии Isolation приводит к побитному анализу идентификатора

Бит [2] — сброс CSN в 0. Бит [ 1 ] — возвращение в состояние Wait for Key. Бит [0] — сброс всех логических устройств и перевод конфигурационных регистров в состояние включения питания, но с сохранением номера CSN. Биты не запоминаются, так что необходимости в их программном сбросе нет

Запись в этот регистр приведет карту, у которой номер CSN совпадает с записываемым байтом, к переходу из состояния Sleep в состояние Config (если данные не нулевые). Запись нулевого байта переводит все карты с неназначенным номером CSN в состояние Isolation. Указатель последовательно считываемых байт сбрасывается

 

 


6.1. Шины ISA, EISA и PC/104



 


Имя


Индекс и тип Назначение


 


Resource Data

Status

Card Select Number

Logical Device Number

Card Level Резерв

Card Level, Vendor Defined


04h, RO Чтение этого регистра возвращает очередной байт

информации о ресурсах. Перед чтением должен , опрашиваться регистр Status

05h, RO Регистр состояния. Единичное значение бита [0]

указывает на возможность чтения очередного байта ресурсов

06h, RW Регистр хранения селективного номера CSN,

обеспечивающего выбор конкретной карты командой Wake[CSN]. Обнуляется по включению питания и аппаратному сбросу

07h, RW Выбор текущего логического устройства, к которому

относятся все операции по обмену конфигурационной информацией, проверки диапазона адресов ввода-вывода и активации. Если карта им^еет только одно устройство, регистр допускает только чтение и всегда имеет нулевое значение

08h-1Fh Зарезервированы на будущее

20h-2Fh Используются по усмотрению производителя


Конфигурирование карты начинается с команды WAKE [CSN] — записи байта CSN в регистр с индексом 3. Эта операция переводит карту с указанным номером CSN в состояние Config (конфигурирование), а остальные карты «засыпают» — пере­ходят в состояние Sleep. Для конфигурируемой карты выполняются операции чтения ее конфигурационной информации (как карты в целом, так и логических устройств) и программирования используемых ресурсов. Программирование каждого логического устройства завершается установкой его бита активации, после чего логическое устройство активизируется на шине ISA (начнет реально использовать назначенные ресурсы). Программирование всей карты завершается переводом ее в состояние Wait for key (ожидание ключа). По окончании кон­фигурирования все карты PnP должны быть переведены в это состояние, и тогда их случайное реконфигурирование будет блокировано 32-байтным ключом. Доступ к регистрам PnP через ключ возможен в любое время функционирования, однако запись в них должна производиться в полной уверенности о знании послед­ствий. Возможно даже переназначение CSN «на ходу», но это требуется лишь в устройствах, допускающих «горячие» включения-выключения (что не привет­ствуется на шине ISA), док-станциях (Docking Stations) для подключения порта­тивных компьютеров и системах управления энергопотреблением.

Стандартные регистры управления логическим устройством (табл. 6.9) использу­ются для активации карт и проверки отсутствия конфликтов на шине ISA в вы­бранном диапазоне адресов ввода-вывода. Когда включен режим проверки конф­ликтов, на чтение по любому адресу установленного диапазона портов ввода-вывода логическое устройство отвечает байтом 55h или AAh в зависимости от состояния бита 0 регистра проверки. Естественно, что в рабочем режиме этот «автоответчик» должен быть отключен.


172________________________________ Глава 6. Шины и карты расширения

Таблица 6.9.Стандартные регистры управления логическим устройством PnP
Имя_____________ Индекс и тип Назначение_________________________________________

Activate 30h,RW Регистр активации. Бит [0] единичным значением

разрешает активность логического устройства на шине ISA. Биты [7:1 ] зарезервированы, при чтении должны возвращать нули. Перед активацией должна быть запрещена проверка диапазона адресов ввода-вывода

I/O Range Check 31 h, RW Регистр проверки диапазона адресов ввода-вывода.

Биты [7:2] зарезервированы, при чтении должны возвращать нули. Бит [ 1 ] — разрешение режима проверки. Бит [0] —управление диагностическим ответом: 0 — ответ AAh, 1 — ответ 55h

Logical Device 32h-37h Зарезервированы на будущее

Control Резерв

Logical Device 38h-3Fh Используются по усмотрению производителя

Control Vendor

Defined

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

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

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

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

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

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

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


Индекс и тип Назначение

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.