Книга: Аппаратные интерфейсы ПК. Энциклопедия
12.9.1. ROM BIOS карт ISA PnP
12.9.1. ROM BIOS карт ISA PnP
Для поддержки технологии PnP и расширения возможностей управления начальной загрузкой в спецификации PnP BIOS ввели дополнительный указатель на структуру расширенного заголовка (Expansion Header Structure). Расширенный заголовок имеет формат, приведенный в табл. 12.9. В одном ПЗУ может находиться несколько расширенных заголовков (это требуется для многофункциональных карт расширения), связанных в цепочку. В каждом расширенном заголовке может указываться смещение следующего заголовка относительно начала стандартного заголовка. Наличие и действительность расширенного заголовка проверяется по его сигнатуре и контрольной сумме. Сумма всех байтов расширенного заголовка, включая байт контрольной суммы, должна быть нулевой.
Таблица 12.9. Расширенный заголовок ROM BIOS карт ISA PnP
Смещение | Длина | Назначение |
---|---|---|
0h | 4 байта | Сигнатура, строка $PnP (символы ASCII) |
04h | байт | Версия структуры (01h) |
05h | байт | Длина (в параграфах по 16 байт) |
06h | слово | Смещение следующего заголовка (0000h, если нет больше) |
08h | байт | Резерв(0) |
09h | байт | Контрольная сумма |
0Ah | двойное слово | Идентификатор устройства PnP |
0Eh | слово | Указатель на строку идентификатора производителя (0, если нет) |
10h | слово | Указатель на строку названия продукта (0, если нет) |
12h | 3 байт | Код типа устройства |
15h | байт | Индикаторы устройства |
16h | слово | Вектор подключения BCV (Boot Connection Vector) — 0, если нет |
18h | слово | Вектор отключения (Disconnect Vector) — 0, если нет |
1Ah | слово | Точка входа для загрузки BEV (Bootstrap Entry Point) — 0, если нет |
1Ch | слово | Резерв (0) |
1Eh | слово | Вектор получения информации о статических ресурсах (Static Resource Information Vector) — Real/Protected mode (0 если нет) |
Расширенный заголовок позволяет определить идентификатор устройства PnP, его название и код производителя. Код типа состоит из байта общего типа, байта подтипа и байта идентификатора программного интерфейса, по которым система может узнать знакомые устройства.
Байт индикаторов устройства имеет следующее назначение битов:
? бит 7 — ПЗУ поддерживает модель инициализации устройства (Device Driver Initialization Model);
? бит 6 — ПЗУ может затеняться оперативной памятью;
? бит 5 — ПЗУ может кэшироваться по чтению;
? бит 4 — ПЗУ требуется лишь для загрузки с данного устройства;
? бит 3 — резерв (0);
? бит 2 — является устройством загрузки (IPL-устройство);
? бит 1 — устройство ввода (может заменять клавиатуру);
? бит 0 — устройство вывода (дисплей).
Вектор подключенияBCV
(Boot Connection Vector, он же Interrupt Connection Vector) указывает смещение для процедуры, дальний вызов которой приведет к перехвату векторов прерываний первичных устройств ввода, вывода или загрузки (сервисов Int 9h
, Int 10h
или Int 13h
соответственно), в зависимости от параметров, переданных в регистрах процессора. При вызове этой процедуры в регистре АХ
единицы в битах 0, 1 и 2 запрашивают перехват сервисов Int 9h
, Int 10h
или Int 13h
соответственно (остальные биты нулевые), ES:DI
указывает на контрольную структуру PnP BIOS (System BIOS PnP Installation Check Structure), BX
содержит селективный номер (CSN) карты ISA PnP (для других карт FFFFh); DX
содержит адрес порта чтения ISA PnP (для других карт FFFFh).
Вектор отключения указывает на процедуру, восстанавливающую старое значение векторов при безуспешной попытке загрузки с данного устройства.
Точка входа для загрузкиBEV
требуется, если устройство может использоваться в качестве загрузочного, но не обеспечивает блочных функций сервиса Int 13h
. Тогда системная микросхема BIOS может дальним вызовом вызвать эту процедуру вместо выполнения сервиса Int 19h
. Таким образом, например, может выполняться удаленная загрузка (Remote Programm Loading, RPL) по сети.
Вектор получения информации о статических ресурсах задает смещение процедуры, вызов которой выгрузит в память дескрипторы занимаемых ресурсов (в форматах, аналогичных структурам для ISA PnP). Адрес буфера размером не менее 1024 байт задается регистрами ES: DI
при вызове данной процедуры.
Процедура инициализации, которая начинается со смещения 3 в заголовке ПЗУ, для карт PnP должна подчиняться определенным требованиям (до этой спецификации специальных требований не было), принимать параметры и сообщать код возврата.
? При вызове процедуры ЕS: DI
указывает на контрольную структуру PnP BIOS, BX
содержит CSN
карты ISA PnP (для других карт FFFFh); DX
— адрес порта чтения ISA PnP (для других карт FFFFh).
? При исполнении процедура может переопределять любые векторы прерываний и изменять данные в BDA
и EBDA
, но перед возвратом она обязана восстановить прежние указатели для Int 9h
, Int 10h
, Int 13h
и все прежние значения связанных с ними переменных в BDA
и EBDA
.
? При возврате в АХ
возвращаются признаки проинициализированного устройства:
• бит 8 — устройство начальной загрузки, поддерживающее блочные функции INT 13h
;
• бит 7 — устройство вывода, поддерживающее символьный вывод («телетайпный» режим) INT 10h
;
• бит 6 — устройство ввода, поддерживающее символьный ввод INT 9h
;
• биты 5:4 — состояние подключения загрузочного устройства: 00 — не подключено, 01 — неизвестно, 10 — подключено (для устройства RPL соединение установлено), 11 — резерв;
• биты 3:2 — состояние подключения устройства вывода (аналогично предыдущему);
• биты 1:0 — состояние подключения устройства ввода (аналогично предыдущему).
Как видно из данного описания, расширенный заголовок и правила поведения процедуры инициализации позволяют системной BIOS более гибко пользоваться функциями дополнительных модулей BIOS — традиционные дополнительные модули со стороны системной BIOS были практически неуправляемыми. Заголовок данного вида может использоваться и картами ISA без поддержки PnP. Если эти карты будут передавать информацию о своих статических ресурсах, они окажут большую услугу для распределения ресурсов системой BIOS с поддержкой PnP. Таким образом, приспособить карту для работы в среде PnP можно всего лишь модификацией содержимого ее ПЗУ расширения BIOS.
Карта ISA PnP может быть установлена в разные системы, имеющие BIOS как с поддержкой PnP, так и без. Процедура инициализации должна исполняться адекватно обнаруженной среде: без PnP BIOS она должна работать традиционным способом, при необходимости загрузки перехватывая INT 19h
, а в среде PnP BIOS она должна вести себя скромнее, лишь предоставляя системной BIOS требуемые интерфейсы и точки входа.
- Карта миграции
- Инструкция INSERT INTO ... FROM ... UNION ...
- Карточка складского учета
- 6.8. Разгон видеокарты на Windows 10
- 1.2.2 ROM
- Creating CDs from the Command Line
- 2. Операции декартового произведения и естественного соединения
- 4. Операция декартова произведения.
- Часть I Общая картина
- 7.3.2. EEPROM и флэш-память
- Глава 4. Этаж Promotion
- Глава 6 BIOS – базовая система ввода-вывода