https://irkutsk.seowizard.ru срочно работа продвижение сайта в иркутске.
Для облегчения взаимодействия с устройствами PCI имеются дополнительные функции BIOS, доступные как из реального, так и защищенного режима работы процессора. Функции PCI BIOS используются только для поиска и конфигурирования устройств PCI — процедур, требующих доступа к их конфигурационному пространству. Функции приходится поддерживать и использовать потому, что циклы конфигурационных обращений, как и специальный цикл, выполняются специфическим образом. Кроме того, PCI BIOS позволяет управлять коммутатором запроса прерываний (PCI Interrupt Steering), скрывая специфический программный интерфейс чипсета системной платы. Остальное взаимодействие с устройствами через их пространства памяти и ввода$вывода, а также обработка прерываний в поддержке со стороны BIOS не нуждаются, поскольку выполняются непосредственно командами процессора и не зависят от платформы (чипсета системной платы). Регулярная работа с этими устройствами выполняется через обращения к регистрам устройств по адресам, полученным при конфигурировании, и обработку известных номеров прерываний от этих устройств. Функция проверки наличия PCI BIOS позволяет определить доступные конфигурационные механизмы, и, зная их работу, программа в дальнейшем может обходиться и без вызовов PCI BIOS.
Программы с помощью функций PCI BIOS могут искать интересующие их устройства по идентификаторам или кодам класса. Если стоит задача полного «переучета» установленных устройств, то она решается чтением конфигурационной информации по всем функциям всех устройств всех шин — это быстрее, чем перебирать все возможные сочетания идентификаторов или классов кодов. Для найденных устройств программы должны определять реальные настройки чтением регистров конфигурационного пространства, учитывая возможность перемещения ресурсов по всему пространству и даже между пространствами памяти и вводавывода.
Для 16-битного интерфейса реального режима, V86 и 16$битного защищенного режима, функции PCI BIOS вызываются через прерывание Int 1Ah; номер функции задается при вызове в регистре AX. Возможна и программная имитация прерывания дальним вызовом по физическому адресу 000FFE6Eh (стандартная точка входа в обработчик Int 1Ah) с предварительным занесением в стек регистра флагов.
Для 32$разрядных вызовов защищенного режима все эти же функции вызываются через точку входа, найденную через каталог 32$разрядных сервисов (см. ниже), при этом назначение входных и выходных регистров и флага CF сохраняется. До использования 32$разрядного интерфейса следует сначала найти его каталог и убедиться в наличии сервисов PCI BIOS по идентификатору «$PCI» (049435024h).
Вызовы требуют глубокого стека (до 1024 байт). Признаком нормального выполнения является CF = 0 и AH = 0; при CF = 1 AH содержит код ошибки:
Функции PCI BIOS перечислены ниже:
AX = B101h — проверка присутствия PCI BIOS. При наличии PCI BIOS возвращает CF = 0, AH = 0 и EDX = 20494350h (строка символов «PCI»); проверяться должны все три признака. При этом в AL находится описатель аппаратного механизма доступа к конфигурационному пространству и генерации специальных циклов PCI:
В регистрах BH и BL возвращается старший и младший номер версии (BCD-цифры), в CL — максимальный номер шины PCI, присутствующий в системе (число шин — 1, поскольку они нумеруются с нуля последовательно). В регистре EDI может возвращаться линейный адрес точки входа 32$разрядных сервисов BIOS. Этот адрес возвращается не всеми версиями BIOS (некоторые не изменяют EDI); для проверки можно при вызове обнулять EDI и проверять на нуль возвращенное значение.
Смещение | Размер | Назначение |
0 | byte | PCI Bus number — номер шины PCI |
1 | byte | PCI Device number — номер устройства PCI |
2 | byte | Назначенная связь для линии INTA# (0 — нет, 1 — IRQ1, …0Fh — IRQ15) |
3 | word | Битовая карта возможных назначений для INTA# (бит 0 — IRQ0, … бит 15 — IRQ15) |
5 | byte | Назначенная связь для линии INTB# (аналогично) |
6 | word | Битовая карта возможных назначений для INTB# (аналогично) |
8 | byte | Назначенная связь для линии INTC# (аналогично) |
9 | word | Битовая карта возможных назначений для INTC# (аналогично) |
11 | byte | Назначенная связь для линии INTD# (аналогично) |
12 | word | Битовая карта возможных назначений для INTD# (аналогично) |
14 | byte | Номер слота (для физической идентификации карты) |
15 | byte | Резерв |