legal note
IC Book © 2001

hardware
software

support
buy

Home page
   




Press
Memory-mapped Configuration
 


Описание работы программы

Как и в ранее опубликованных статьях данного цикла, в целях монопольного и беспрепятственного взаимодействия программы с оборудованием при работе с предлагаемым примером, автор применил "древнюю" технологию отладки под DOS. Аргументация такого шага и рекомендации по организации рабочего места приведены в ранее опубликованной статье "64-битный режим под DOS: ис­сле­до­ва­тельская работа № 1". Ассемблерный пример демонстрирует чтение 4-ки­ло­байт­ного блока конфигурационных регистров устройства с координатами Bus=0, Device=0, Function=0. В большинстве платформ данные координаты имеет блок конфигурационных регистров "северного моста" чипсета. Работа программы не за­ви­сит от содержимого читаемой области. Если по указанным координатам ус­трой­ство отсутствует, все прочитанные байты будут равны FFh. Программа вы­во­дит шестнадцатеричный дамп регистрового блока.

Memory-mapped Configuration Архив программы доступа к конфигурацилнным регистрам

Прилагаемый каталог содержит следующие файлы

 

Файл

Описание

 

MCFG.ASM

основной модуль программы

 

ASM4TD.BAT

обеспечивает ассемблирование, линковку и запуск про­г­раммы под отладчиком

 

ASM.BAT

обеспечивает ассемблирование, линковку и по­лу­че­ние COM файла

 

A20.INC

библиотека для управления и контроля состояния адресной линии A20 с использованием выходного порта контроллера клавиатуры

 

BIGREAL.INC

библиотека поддержки режима Big Real Mode, обес­пе­чи­ва­ю­щая возможность использования 32-битных адресов и адресации пространства памяти в ди­а­па­зо­не 0-4 Гб. Этот режим, как и управление адресной линией A20, необходимы в данной программе для до­сту­па к таблицам ACPI и блоку конфигурационных ре­гист­ров, отображенных на память

 

ACPI.INC

библиотека поддержки интерфейса ACPI обес­пе­чи­ва­ет детектирование ACPI и поиск в памяти заданной таб­ли­цы по 4-символьной сигнатуре. Напомним, что поддержка механизма MCFG, а также базовый адрес и размер "окна" для доступа к конфигурационному про­стран­ству декларируются в ACPI таблице с сиг­на­ту­рой "MCFG". Так обеспечивается передача данной информации от BIOS к ОС

 

NUMBERS.INC

библиотека для вывода десятичных и шест­над­ца­те­рич­ных чисел в текстовом виде

 

STRINGWR.INC

подпрограмма вывода текстовой информации, ис­поль­зу­ю­щая функции DOS

 

DATASEGS.INC

сегменты данных: переменные, текстовые сообщения и стек

Рассмотрим выполнение программы чтения конфигурационного пространства с использованием механизма MCFG. Нумерация пунктов приведенного ниже ал­го­рит­ма соответствует нумерации пунктов в комментариях к исходному тексту про­грам­мы. (См. файл mcfg.asm).

1) Установка адреса стека, загрузка регистров SS и SP.

2) Установка видеорежима 3 (текст 80x25 символов), очистка экрана.

3) Проверка типа процессора. Выход с ошибкой, если процессор ниже 80386. Проверка требуется для того, чтобы при попытке запуска на старых компьютерах, программа выходила с сообщением об ошибке, а не "зависала".

4) Проверка режима работы процессора. Выход с ошибкой, если процессор ра­бо­та­ет в Protected Mode. Так как программа использует прямое вза­и­мо­дей­ствие с аппаратными ресурсами, для ее работы требуется "чистый" DOS.

5) Разрешение адресной линии A20. Вначале проверяется и сохраняется для последующего восстановления исходное состояние A20. Если линия A20 исходно раз­ре­ше­на, пропускаем вызов процедуры управления. Если при управлении ли­ни­ей A20 возникли ошибки, выполняется выход с сообщением об ошибке. Под­роб­нос­ти в [17].

6) Разрешение режима Big Real Mode для адресации диапазона памяти 0-4GB. Для этого, подпрограмма Enable_Big_Real_Mode временно переключает процессор в Protected Mode и загружает лимиты сегментов значением FFFFFFFFh. Пос­ле возврата в Real Mode значения лимитов не изменяются, что дает воз­мож­ность использовать 32-битные адреса в Real Mode. Под­роб­нос­ти в [16].

7) Проверка поддержки интерфейса ACPI. Подпрограмма Scan_ACPI_RSDP сканирует диапазон адресов BIOS Runtime (E0000h-FFFFFh, 128KB) на предмет об­на­ру­же­ния структуры Root System Description Pointer (RSDP). Данная структура со­дер­жит указатель на корневую таблицу Root System Description Table (RSDT). Все таблицы ACPI обычно находятся в верхнем мегабайте Extended памяти. От­сут­ствие структуры RSDP означает, что платформа не поддерживает ACPI. В этом слу­чае программа завершается с сообщением об ошибке. Подробности в [4].

8) Поиск ACPI-таблицы с сигнатурой "MCFG". Эта таблица описывает па­ра­мет­ры механизма "плоского" доступа к конфигурационному пространству. Она со­дер­жит базовый адрес и размер "окна" в пространстве памяти. Подпрограмма Get­_ACPI­_Table последовательно использует два метода обнаружения искомой та­б­ли­цы – путем поиска в каталоге таблиц, находящемся в RSDT и путем прямого ска­ни­рования памяти от начала RSDT до конца текущего 64KB блока. Это свя­за­но с тем, что в некоторых реализациях BIOS, каталог содержит ссылки не на все име­ю­щиеся таблицы. Отсутствие таблицы MCFG означает, что платформа не под­дер­жи­ва­ет механизм "плоского" доступа. В этом случае программа за­вер­ша­ет­ся с сообщением об ошибке. Подробности в [4].

9) Используя базовый адрес таблицы MCFG, полученный на предыдущем ша­ге, считываем из нее параметры для механизма "плоского" доступа к кон­фи­гу­ра­ци­он­но­му пространству – базовый адрес и размер "окна" в про­стран­стве памяти.

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

10) Вывод на экран базового адреса и размера диапазона MCFG.

11) Проверка корректности базового адреса диапазона MCFG. Если адрес ну­ле­вой или не кратен 4KB, программа завершается с сообщением об ошибке.

На платформах, поддерживающих 64-битную адресацию, диапазон MCFG мо­жет находиться выше 4GB. Данная версия программы не поддерживает такой ва­ри­ант размещения диапазона MCFG.

12) Считывание 4-кбайтного блока конфигурационных регистров из устройства с координатами Bus=0, Device=0, Function=0. Физически, данный блок рас­по­ло­жен по адресам X…X+0FFFh, где X=базовый адрес диапазона MCFG.

13) Вывод сообщения перед началом вывода дампа регистров. Ожидание на­жа­тия клавиши пользователем.

14) Вывод дампа регистров. Дамп 4 килобайт не помещается на экран, по­э­то­му после заполнения экрана ожидается нажатие клавиши. При нажатии [Enter] вывод дампа продолжается, [Esc] прерывает операцию.

15) Подготовка к завершению программы. Выключаем режим Big Real Mode (устанавливаем лимиты сегментов 0000FFFFh для 16-битной адресации) и вос­ста­нав­ли­ва­ем исходное состояние адресной линии A20. Подробности в [16-17].

16) Вывод сообщения об успешном завершении программы, ожидание на­жа­тия клавиши и выход в ОС с кодом завершения 00h.

17) Если при запуске программы возникли ошибки на этапах, расположенных пос­ле разрешения линии A20 и включения Big Real Mode, перед завершением про­грам­мы требуется восстановить состояние линии A20 и выключить Big Real Mode. Эти действия и выполняются на данном этапе.

18) Завершение программы, используемое при ошибках. Вывод сообщения об ошибке, ожидание нажатия клавиши и выход в ОС с кодом завершения 01h. При пе­ре­хо­де к этому пункту, регистр AX должен содержать указатель на строку со­об­ще­ния об ошибке.

Заключение

Ну не может PCI SIG запретить детям разбирать игрушки и смотреть, как они устроены внутри. Даже если игрушки 64-битные, а детям за 40 лет.

Разумеется, несмотря на официальную закрытость спецификации PCI Express, данное исследование не претендует на раскрытие каких-либо "страшных тайн", так как вся приведенная информация является результатом изучения открытых источников (список которых прилагается) в сочетании с минимальным умением "читать между строк".

Источники информации

Электронные документы, доступные на сайте PCI SIG:
1) PCI BIOS Specification. Revision 2.1.
2) PCI Local Bus Specification. Revision 3.0.
3) PCI-to-PCI Bridge Architecture Specification. Revision 1.1.

Электронные документы, доступные на сайте ACPI.
4) Advanced Configuration and Power Interface Specification. Hewlett-Packard Corporation, Intel Corporation, Microsoft Corporation, Phoenix Technologies Ltd., Toshiba Corporation. Revision 3.0.

Электронные документы, доступные на сайте AMD.
5) BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron Processors. Publication #26094.
6) BIOS and Kernel Developer's Guide for AMD NPT Family 0Fh Processors. Publication #32559.
7) BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors. Publication #31116.
8) BIOS and Kernel Developer's Guide (BKDG) For AMD Family 11h Processors. Publication #41256.
9) AMD-8131 HyperTransport PCI-X Tunnel Data Sheet. Publication #24637.
10) AMD-8151 HyperTransport AGP3.0 Graphics Tunnel Data Sheet. Publication #24888.
11) AMD-8111 HyperTransport I/O Hub Data Sheet. Publication #24674.
12) AMD-8111 HyperTransport I/O Hub Data Sheet. Publication #24674.

Электронные документы, доступные на сайте Intel Corp..
13) Intel Core i7 Processor Extreme Edition and Intel Core i7 Processor. Datasheet, Volume 1. Document #320834-001.
14) Intel Core i7 Processor Extreme Edition and Intel Core i7 Processor. Datasheet, Volume 2. Document #320835-002.
15) Intel 915G/915P Express Chipset Datasheet. Document #301467-001.
16) Intel I/O Controller Hub 6 Family Datasheet. Document #301473-001.

Книги
17) В.Л. Григорьев. Микропроцессор i486. Архитектура и программирование. Москва ТОО "ГРАНАЛ" 1993.
18) 2B ProGroup: В.А. Вегнер, А.Ю. Крутяков, В.В. Серегин, В.А. Сидоров, А.В. Спесивцев. Аппаратура персональных компьютеров и ее программирование. IBM PC/XT/AT и PS/2. Москва "Радио и связь" 1995.





about
press


вверх