Expansion rom карт pci

Покажчик на структуру розширеного заголовка карт ISA PnP

Таблиця. Тема модуля додаткового ПЗУ

У традиційному заголовку присутні тільки перші три поля, покажчики на структури PCI і ISA PnP ввели пізніше. Коректним вважається модуль, що починається з ознаки AA55h (значення 16-бітного слова з урахуванням порядку байтів) і нульовою сумою (по модулю 256) всіх байтів в оголошеної області (реальна довжина модуля може перевищувати оголошену, але байт контрольної суми, природно, повинен входити в оголошену область).

Для вмісту ПЗУ розширення BIOS, встановлених на картах PCI, прийнятий стандарт, що трохи відрізняється від традиційних додаткових модулів ROM BIOS. Тема ПЗУ відповідає традиційному, але додатково має покажчик на структуру даних PCI (див. Наступну таблицю). Ідентифікатори виробника і пристрої, а також код класу збігаються з описаними в конфігураційному просторі пристрою PCI. Оскільки шина PCI використовується не тільки в PC, в ПЗУ карти може зберігатися кілька програмних модулів. Кожен модуль починається зі структури даних, сам модуль слід відразу за структурою. За ним починається структура для наступного модуля (якщо у попереднього не встановлена ​​ознака останнього модуля) і т. Д. Тип платформи (процесора) вказується в заголовку модуля і при ініціалізації BIOS активізується тільки потрібний. Такий механізм дозволяє, наприклад, один і той же графічний адаптер встановлювати і в IBM PC, і в Power PC.

Таблиця. Структура даних PCI

Стосовно до додаткового ПЗУ карти PCI є три параметра, що відносяться до розмірів областей пам'яті. Розмір ПЗУ визначається читанням конфігураційного простору. Розмір, зазначений в байті 2 заголовка, вказує на довжину модуля на етапі ініціалізації. Цей модуль POST завантажує в ОЗУ перед тим, як викликати процедуру ініціалізації (точка входу зі зміщенням 3). Контрольна сума, розташована зазвичай в кінці модуля, забезпечує нульову суму всіх байтів. Довжина робочого образу, зазначена в структурі даних PCI (слово зі зміщенням 10h), визначає обсяг області, яка повинна постійно залишатися в пам'яті в режимі нормального функціонування (вона може бути меншою за вказану в байті 2 заголовка, оскільки код процедури ініціалізації вже не потрібно). Ця область також захищається контрольною сумою.

Схожі статті