Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Конфигурирование и BIOS устройств PCI и PCI-X



В шину PCI изначально заложены возможности автоматического конфигури­рования системных ресурсов (пространств памяти и ввода-вывода, а также ли­ний запроса прерываний). Автоматическое конфигурирование устройств (выбор адресов и прерываний) поддерживается средствами BIOS и ОС; оно ориенти­ровано на технологию РпР. Стандарт PCI определяет для каждой функции конфигурационное пространство размером до 256 8-битных регистров, не при­писанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным командам шины Configuration Read и Configuration Write, вырабатываемым с помощью аппаратно-программного механизма.

Конфигурационное пространство функции начинается со стандартного заго­ловка, в котором содержатся идентификаторы производителя, устройства и его класса, а также описание требуемых и занимаемых системных ресурсов. После заголовка могут располагаться регистры, специфичные для устройства. Для стандартизованных свойств (capability) устройств (например, управления энергопотреблением) в конфигурационном пространстве имеются блоки реги­стров известного назначения. Эти блоки организуются в цепочки; просмотрев цепочку, конфигурационное ПО получает список всех доступных свойств уст­ройства.

В PCI-X для устройств Mode 2 конфигурационное пространство расширено до 4096 байт; в расширенном пространстве могут присутствовать расширенные описания свойств.

После аппаратного сброса (или при включении питания) устройства PCI не от­вечают на обращения к пространству памяти и ввода-вывода, они доступны только для операций конфигурационного считывания и записи. В этих опера­циях устройства выбираются по индивидуальным сигналам IDSEL, чтением ре­гистров конфигурационное ПО узнает о потребностях в ресурсах и возможных вариантах конфигурирования устройств. После распределения ресурсов, вы­полняемого программой конфигурирования (во время теста POST или при загрузке ОС), в конфигурационные регистры устройства записываются пара­метры конфигурирования (базовые адреса). Только после этого устройствам (точнее, функциям) устанавливаются биты, разрешающие им отвечать на ко­манды обращения к памяти и портам ввода-вывода, а также самим управлять шиной. Для того чтобы всегда можно было найти работоспособную конфигура­цию, все ресурсы, занимаемые картами, должны быть перемещаемыми в своих пространствах. Для многофункциональных устройств каждая функция должна иметь собственное конфигурационное пространство. Устройство может одни и те же регистры отображать и на память, и на пространство ввода-вывода. При этом в конфигурационных регистрах должны присутствовать оба описателя, но драйвер должен использовать только один способ обращения (предпочтитель­но через память).

В заголовке конфигурационного пространства описываются потребности в ад­ресах трех типов:

Регистры в пространстве ввода-вывода (I/O Space).

Регистры ввода-вывода, отображенные на память (Memory Mapped I/O).
Это область памяти, обращения к которой должны производиться в строгом
соответствии с тем, что запрашивает инициатор обмена. Обращения к этим
регистрам могут изменять внутреннее состояние периферийных устройств.

Память, допускающая предвыборку (Prefetchable Memory). Это область па­
мяти, «лишнее» чтение которой (с неиспользуемыми результатами) не при­
водит к побочным эффектам (то есть это память в чистом виде).

Потребности в адресах указываются устройствами в регистрах базовых адресов (Base Address Register, BAR), в этих же регистрах конфигурирующая програм­ма устанавливает начальный адрес области.

В PCI имеется поддержка устаревших (legacy) устройств (VGA, IDE), которые сами себя таковыми объявляют по коду класса в заголовке. Их традиционные (фиксированные) адреса портов не заявляются в конфигурационном простран­стве, но как только устанавливается бит разрешения обращения к портам, уст­ройствам разрешается ответ и по этим адресам.

PCI BIOS

Для облегчения взаимодействия с устройствами PCI имеются дополнительные функции BIOS, доступные как из реального, так и из защищенного режима ра­боты процессора. Функции PCI BIOS применяются только для поиска и кон­фигурирования устройств PCI — процедур, требующих доступа к их конфигу­рационному пространству. Функции приходится поддерживать и использовать потому, что циклы конфигурационных обращений, как и специальный цикл, выполняются специфическим образом. Кроме того, PCI BIOS позволяет управлять коммутатором запроса прерываний (PCI Interrupt Steering), скрывая спе­цифический программный интерфейс чипсета системной платы. Остальное взаимодействие с устройствами через их пространства памяти и ввода-вывода, а также обработка прерываний в поддержке со стороны BIOS не нуждаются, поскольку выполняются непосредственно командами процессора и не зависят от платформы (чипсета системной платы). Регулярная работа с этими устрой­ствами выполняется через обращения к регистрам устройств по адресам, полу­ченным при конфигурировании, и в ходе обработки известных номеров преры­ваний от этих устройств. Функция проверки наличия PCI BIOS позволяет определить доступные конфигурационные механизмы, и, зная их работу, про­грамма в дальнейшем может обходиться без вызовов PCI BIOS.

Программы с помощью функций PCI BIOS могут искать интересующие их уст­ройства по идентификаторам или кодам класса. Если стоит задача полного «пе­реучета» установленных устройств, то она решается чтением конфигурацион­ной информации по всем функциям всех устройств всех шин — это быстрее, чем перебирать все возможные сочетания идентификаторов или классов кодов. Для найденных устройств программы должны определять реальные параметры чтением регистров конфигурационного пространства, учитывая возможность перемещения ресурсов по всему пространству и даже между пространствами памяти и ввода-вывода.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.