Аппаратные интерфейсы ПК. Энциклопедия - Михаил Гук
- Дата:20.06.2024
- Категория: Компьютеры и Интернет / Компьютерное "железо"
- Название: Аппаратные интерфейсы ПК. Энциклопедия
- Автор: Михаил Гук
- Просмотров:4
- Комментариев:0
Шрифт:
Интервал:
Закладка:
3. С карты считываются данные о сконфигурированных и поддерживаемых ресурсах. Эти шаги повторяются для всех карт, после чего выполняются завершающие шаги.
4. Производится распределение (арбитраж) системных ресурсов, выделяемых каждой карте.
5. Каждая карта конфигурируется согласно выбранному распределению ресурсов и активируется (переводится в рабочий режим).
Все шаги конфигурирования выполняет процедура POST (если BIOS имеет поддержку PnP) или операционная система при загрузке. PnP BIOS может ограничиться конфигурированием и активацией только устройств, участвующих в загрузке, оставляя конфигурирование и активацию дополнительных устройств операционной системе. BIOS без поддержки PnP может использовать необходимые для загрузки устройства, сконфигурированные с параметрами по умолчанию, а изоляцией карт, сбором информации и конфигурированием займется операционная система при загрузке. Вариантов много, но все они опираются на единые методы взаимодействия с картами ISA PnP. Конфигурирование выполняется в специальном состоянии плат, в которое их всех можно программно перевести с помощью специального ключа инициализации, защищающего конфигурационную информацию от случайного разрушения.
Для конфигурирования карт PnP необходимо всего три 8-битных системных порта (табл. 6.7), с которыми процессор может общаться, применяя инструкции ввода-вывода с однобайтной передачей данных. Карты PnP должны использовать 12-битное декодирование адреса ввода-вывода, а не 10-битное, как это принято в традиционных картах ISA.
Таблица 6.7. Системные порты ISA PnP
Имя порта Адрес Тип доступа ADDRESS 0279h (Printer status port) Только запись WRITE_DATA 0A79h (Printer status port + 0800h) Только запись READ_DATA Перемещаемый в диапазоне 0203h-03FFh Только чтениеПорт ADDRESS используется для адресации регистров 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. До подачи ключа в этом состоянии конфигурация карты программными обращениями изменена быть не может.
♦ Sleep («спячка») — состояние, в котором карта ожидает пробуждающей команды Wake[CSN], переводящей ее либо в состояние изоляции, либо в состояние конфигурирования. При нулевом параметре CSN в команде все карты с неназначенным номером CSN переводятся в состояние изоляции. При ненулевом параметре CSN в команде карта с совпадающим номером CSN переводится в состояние конфигурирования.
♦ Isolation (изоляция) — карта отвечает только на чтение регистра Serial Isolation для реализации одноименного протокола (см. далее), с помощью которого ей назначается уникальный номер CSN. Остальные команды PnP ей недоступны.
♦ Config (конфигурирование) — состояние, в котором карта отвечает на все об ращения к регистрам PnP, позволяя считывать и изменять ее конфигурацию. В этом состоянии может находиться лишь одна карта. По окончании конфигурирования карту переводят в режим ожидания ключа, защищая ее конфигурацию.
Протокол изоляцииДля изоляции карт друг от друга имеется специальный режим работы, в который логика PnP переводится с помощью ключа инициализации (Initiation key). Ключ представляет собой предопределенную последовательность записей в порт ADDRESS (279h). Аппаратная логика карты, проверяющая ключ, основана на сдвиговом регистре с обратными связями LFSR (Linear Feedback Shift Register), схема которого приведена на рис. 6.5. Во время проверки ключа на вход C1 подается уровень логического нуля, а на вход C2 — стробы записи в порт ADDRESS. Логика, не показанная на рисунке, сравнивает код в сдвиговом регистре с текущей записью и при несовпадении сбрасывает регистр LFSR в исходное состояние (код 6Ah). В это же состояние регистр может быть переведен двумя последовательными записями нулей в порт ADDRESS. Сдвиг в регистре происходит при каждой записи в порт ADDRESS. Если ключ (последовательность из 32 записей требуемых байт) из исходного состояния LFSR будет приложен верно, то после последней записи логика карты перейдет в режим конфигурирования (это еще не состояние config) и подготовится к отработке протокола изоляции. Точная последовательность байт ключа в hex-формате выглядит следующим образом:
6А, B5, DA, ED, F6, FB, 7D, BE, DF, 6F, 37, 1B, 0D, 86, C3, 61, B0, 58,
2С, 16, 8В, 45, A2, D1, E8, 74, 3A, 9D, СЕ, E7, 73, 39
Рис. 6.5. Сдвиговый регистр LFSR карты PnP
Протокол изоляции основан на уникальном последовательном идентификаторе (Serial Identifier), хранящемся в памяти каждой карты PnP. Этот идентификатор представляет собой ненулевое 72-битное число, состоящее из двух 32-битных полей и 8-битного контрольного кода, вычисляемого с помощью того же регистра LFSR. Первое 32-битное поле представляет собой идентификатор производителя. Второе поле назначается производителем и уникально для каждого экземпляра всех выпускаемых им карт. Здесь может присутствовать серийный номер, а для адаптера Ethernet это может быть и частью MAC-адреса. Принцип построения последовательного идентификатора гарантирует, что в одной системе не могут встретиться две карты с совпадающими идентификаторами. Однако случалось, что незадачливые производители тиражировали (свои ли?) устройства, копируя всю «начинку», включая и серийные номера. Доступ к идентификатору осуществляется последовательно, начиная с бита 0 нулевого байта идентификатора производителя и заканчивая битом 7 контрольной суммы. Во время передачи идентификатора на вход C1 схемы LFSR поступают текущие биты идентификатора, а на вход C2 подаются стробы чтения регистра Serial Isolation (см. ниже). В тактах передачи контрольной суммы ее биты берутся с выхода сдвигового регистра.
Протокол изоляции может быть программно инициирован в любой момент времени посылкой корректного ключа инициализации, переводящего все карты в конфигурационный режим. В этом режиме каждая карта ожидает 72 пары операций чтения порта READ_DATA. Ответ каждой карты на эти операции определяется значением очередного бита ее последовательного идентификатора.
- Защита компьютера на 100%: cбои, ошибки и вирусы - Петр Ташков - Компьютерное "железо"
- Время — деньги. Создание команды разработчиков программного обеспечения - Эд Салливан - Деловая литература
- Шлюпка. Устройство и управление - Л. Иванов - Техническая литература
- Формирование технологии разработки и принятия предпринимательских решений - Д. Кенина - Управление, подбор персонала
- Язык программирования C++. Пятое издание - Стенли Липпман - Программирование