Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Программный доступ к конфигурационному пространству PCI

Configuration Mechanism #1

Поскольку конфигурационное пространство не имеет привязки к какой-либо определенной области адресного пространства, для доступа к нему применяется специальный механизм, названый в спецификации Configuration Mechanism #1. Для работы этого механизма в пространстве портов I/O зарезервированы два 32-разрядных порта, входящих в главный мост: CONFIG_ADDRESS с адресом 0xCF8 и CONFIG_DATA с адресом 0xCFC. Формат CONFIG_ADDRESS представлен на рис. 2.

Рисунок 2. Формат регистра CONFIG_ADDRESS

Установленный в 1 бит 31 разрешает обращение к конфигурационному пространству через порт CONFIG_DATA, биты 30 – 24 зарезервированы (read-only), при чтении должны возвращать 0, биты 23 – 26 содержат номер шины, биты 15 – 11 – номер устройства, биты 10 – 8 – номер функции и биты 7 – 2 – номер регистра, к которому выполняется обращение (смещение в конфигурационном пространстве).

Порядок работы Configuration Mechanism #1 следующий – в порт CONFIG_ADDRESS (0xCF8) заносится адрес, соответствующий формату, приведенному на рис. 2; обращением к порту CONFIG_DATA (0xCFC) производится чтение или запись данных в требуемый регистр конфигурационного пространства.

PCI BIOS

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

Функции PCI BIOS для 16-битного реального режима вызываются через прерывание int 0x1A. Номер функции задается в регистре AX. Признаком нормального выполнения являются значения флага CF = 0 и ноль в регистре AH (AH = 0x00, SUCCESFUL). Если CF = 1, то регистр AH содержит код ошибки:

n  0x81 – неподдерживаемая функция (FUNC_NOT_SUP-PORTED);

n  0x83 – неправильный идентификатор производителя (BAD_VENDOR_ID);

n  0x86 – устройство не найдено (DEVICE_NOT_FOUND);

n  0x87 – неправильный номер регистра PCI (BAD_REGIS-TER_NUMBER), т.е. неправильно задано смещение в конфигурационном пространстве.

 

Перечислим некоторые функции PCI BIOS (полный перечень содержится в [6]):

n  0xB101 – проверка присутствия PCI BIOS;

n  0xB102 – поиск устройства по коду фирмы-изготовителя;

n  0xB103 – поиск устройства по коду класса;

n  0xB108 – чтение байта конфигурационного пространства устройства PCI;

n  0xB109 – чтение слова конфигурационного пространства устройства PCI;

n  0xB10A – чтение двойного слова конфигурационного пространства устройства PCI.

 

При чтении информации из конфигурационного пространства в регистры процессора заносятся следующие значения:

n  AX – номер функции;

n  BH – номер шины, к которой подключено устройство (от 0 до 255);

n  BL – номер устройства в старших 5 битах и номер функции в трех младших;

n  DI – смещение в конфигурационном пространстве.

 

После этого следует вызов прерывания int 0x1A, в результате которого в регистрах процессора будут размещены следующие значения:

n  ECX – считанная информация (байт/слово/двойное слово);

n  AH – код возврата (SUCCESFUL/BAD_REGISTER_NUM-BER);

n  CF – статус возврата (0 – функция успешно выполнена, 1 – ошибка).

BIOS32

При работе в 32-разрядном защищенном режиме для доступа к функциям PCI BIOS используются средства BIOS32. Процедура проверки наличия BIOS32 предполагает обращение к физическим адресам памяти, поэтому обычно производится из реального режима, до переключения в защищенный. Если BIOS32 поддерживается, то в области памяти BIOS, расположенной в диапазоне 0xE0000 – 0xFFFFF, должна присутствовать специальная 16-байтная структура данных – служебный каталог (BIOS32 Service Directory). Структура каталога приведена в таблице 1.

Таблица 1

 

Смещение

Размер, байт

Назначение

0x00

4

Сигнатура служебного каталога в коде ASCII: _32_

0x04

4

32-разрядный физический адрес точки входа в BIOS32

0x08

1

Номер версии реализации BIOS32 (имеет значение 0x00)

0x09

1

Размер служебного каталога BIOS32 в 16-байтных параграфах

0x0A

1

Контрольная сумма

0x0B

5

Зарезервировано


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100