Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Расширение PCI ROM BIOS: структура и особенности



Расширение PCI ROM BIOS размещается в ПЗУ на плате устройства. В общем случае ПЗУ устройства может одновременно содержать несколько кодовых фрагментов для процессоров с различной архитектурой, расположенных последовательно и выровненных по границе кратной 512 байт. Программный модуль расширения PCI ROM BIOS включает в себя заголовок ПЗУ, структуру данных PCI-устройства, модуль инициализации и модуль рабочего кода. Заголовок ПЗУ служит идентификатором при поиске расширений PCI ROM BIOS. Структура данных PCI-устройства играет роль дополнительного идентификатора firmware конкретного устройства. Модуль инициализации выполняет первичную настройку параметров устройства. А модуль рабочего кода служит своего рода программным драйвером устройства.

Модуль расширения PCI ROM BIOS может занимать весь объём ПЗУ, но чаще всего используется только его часть. Байты контрольной суммы представляют собой контрольную сумму кода соответствующего сегмента от начала ПЗУ. Структура расширения PCI ROM BIOS PC/AT-совместимых ПК (т.е. для одного типа процессора) приведена на рисунке 1 и подробно описана в спецификации шины PCI [1].


Рисунок.1 - Структура расширения PCI ROM BIOS PC-совместимого ПК

Расширение PCI ROM BIOS начинается с заголовка, структура которого приведена ниже в таблице 1. Заголовок ПЗУ расширения PCI ROM BIOS, в отличие от заголовка ROM BIOS ISA-устройства, содержит указатель на структуру данных PCI-устройства. Эта структура считывается программой POST, входящей в системный BIOS. Структура данных PCI-устройства располагается в пределах 64 Кбайт от точки входа в программу расширения PCI ROM BIOS и имеет вид, приведённый в таблице 2.

Смещение Длина, байт Значение Назначение
0h 55h Сигнатура ПЗУ расширения ROM BIOS
1h AAh Сигнатура ПЗУ расширения ROM BIOS
2h xx Размер модуля инициализации, кратный 512 байт
3h xx Точка входа
6h xx Резерв
18h xx Указатель на структуру данных PCI-устройства

Таблица 2. Структура данных PCI-устройства расширения PCI ROM BIOS.

Смещение Длина, байт Назначение
0h Сигнатура (строка “PCIR”)
4h Идентификатор производителя
6h Идентификатор устройства
8h Резерв
Ah Длина структуры данных PCI-устройства
Ch Версия структуры данных PCI-устройства
Dh Код класса PCI-устройства
10h Длина кодового сегмента
12h Версия кода расширения PCI ROM BIOS
14h Тип кода
15h Индикатор
16h Резерв

Каждое PCI-устройство имеет программно доступное пространство конфигурации, которое определяет используемые устройством ресурсы памяти, порты ввода/вывода и особенности протокола шины PCI/PCI-Expess данного устройства. Некоторые поля структуры данных PCI-устройства идентичны значениям пространства конфигурации PCI-устройства.

Идентификатор производителя (Vendor Identification) должен совпадать с одноимённым полем в пространстве конфигурации PCI-устройства.

Идентификатор устройства (Device Identification) должен совпадать с одноимённым полем в пространстве конфигурации PCI-устройства.

Код класса (Class Code) должен совпадать с одноимённым полем в пространстве конфигурации PCI-устройства.

Тип кода (Code Type) определяет тип процессора, для которого предназначен код данного расширения BIOS:

Длина кодового сегмента (Image Length) равна сумме длин заголовка, структуры данных PCI-устройства, модуля инициализации и модуля рабочего кода, и определяется в блоках по 512 байт.

Индикатор (Indicator) определяет, является ли данный кодовый сегмент последним. Если бит 7 равен единице («1»), то это последний кодовый сегмент. Биты 0-6 зарезервированы.

Длина структуры данных PCI-устройства (PCI Data Structure Length) определяет длину этой структуры.

Расширение PCI ROM BIOS начинает функционировать при запуске или перезагрузке ПК, еще до загрузки ОС. Происходит это следующим образом. При запуске ПК программа POST (Power On Self Test), входящая в состав системного BIOS, выполняет поиск и проверку ресурсов материнской платы, поиск периферийных устройств и распределение системных ресурсов (портов ввода/вывода, памяти, прерываний) между ними [2]. Затем программа POST выполняет поиск и активизацию расширений PCI ROM BIOS периферийных устройств:

1. Сканирование ОЗУ и поиск с шагом 512 байт сигнатуры расширения ROM BIOS, равной 0AA55h.

2. Чтение заголовка расширения ROM BIOS и определение его длины.

3. Вычисление и проверка контрольной суммы расширения PCI ROM BIOS.

4. Чтение указателя на «структуру данных» PCI-устройства.

5. Чтение «структуры данных» PCI-устройства и сравнение значений идентификатора производителя, идентификатора устройства и кода класса с одноимёнными полями в пространстве конфигурации данного PCI-устройства.

6. Проверка типа кода на соответствие архитектуре используемого процессора.

7. При успешном выполнении двух предыдущих пунктов загрузка расширения PCI ROM BIOS из ПЗУ в ОЗУ ПК, обычно в область адресов 0С0000h – 0DFFFFh.

8. Передача управления процессором на точку входа программы расширения PCI ROM BIOS.

9. Ожидание возврата управления.





Дата публикования: 2015-01-24; Прочитано: 2417 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2021 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.002 с)...