Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1 PCI (УРВСиC).doc
Скачиваний:
20
Добавлен:
22.03.2016
Размер:
4.32 Mб
Скачать

Традиционные прерывания pci - inTx#

Для устройств РСI выделяется четыре проводных линии запросов (IRQX,IRQY,IRQZ,IRQW), соединяемых с контактамиINTA#,INTB#,INТC#иINTD#всех слотов РСI с циклическим смещением цепей (см. рис. 2). Соответствие линийINTx#и входовIRQдля устройства любой шины РСIприведено в табл.3. Мосты РСI просто электрически соединяют одноименные линии INTxсвоих первичных и вторичных шин. В системах с APIC, в которых число входов запросов увеличено до 24, дополнительные 8 входов могут использоваться периферийными устройствами, установ­ленными на системной плате. На слотах РСI остаются доступными лишь четыре обычные линии запросов.

Таблица 3. Коммутация запросов прерываний для устройств PCI

Контакт слота

Вход коммутатора запроса для устройства с номером:

0,4,8,…28 1,5,9,…29 2,6,10,…30 3,7,11,…31

INTA#

IRQW

IRQX

IRQY

IRQZ

INTB#

IRQX

IRQY

IRQZ

IRQW

INTC#

IRQY

IRQZ

IRQW

IRQX

INTD#

IRQZ

IRQW

IRQX

IRQY

Устройство РСI вводит сигнал прерывания низким уровнем (выходом с открытым коллектором или стоком) на выбранную линиюINTx#. Этот сигнал должен удерживаться до тех пор, пока программный драйвер, вызванный по прерыванию, не сбросит запрос прерывания, обратившись по шине к данному устройству. Если после этого контроллер прерываний снова обнаруживает низкий уровень на ли­нии запроса, это означает, что запрос на ту же линию ввело другое устройство, разделяющее данную линию с первым, и оно тоже требует обслуживания.

Распространение сигнала прерывания не синхронизируется с пере­дачей данных. Возможна ситуация, когда активное устройство, выполнив пере­сылку данных в память, посылает сигнал прерывания, оповещающий об этом со­бытии. Однако записи, отосланные устройством, могут задержаться в мостах (если шина слишком загружена), и процессор начнет обрабатывать прерывание, еще не получив всех этих данных. Чтобы гарантировать целостность данных, программа ISR первым делом должна выполнить чтение какого-либо регистра своего устрой­ства - чтение «из-за моста» принудит все мосты к выгрузке всех буферов отправ­ленных записей.

Линии запросов от слотов РСI и РСI-устройств системной платы коммутируются на входы контроллеров прерываний относительно произвольно. Конфигурацион­ное ПО может определить и указать занятые линии запросов и номер входа кон­троллера прерываний обращением к конфигурационному пространству устрой­ства. Программный драйвер, прочитав конфигурационные регистры, тоже может определить эти параметры для того, чтобы установить обработчик пре­рываний на нужный вектор и при обслуживании сбрасывать запрос с требуемой линии.

Каждая функция устройства РСI может задействовать свою линию запроса прерывания, но его обработчик прерывания должен быть готовым к ее разделению(совместному использованию) с другими устройствами. Если устройству требуется только одна линия запроса, то оно должно занимать линию INTA#, если две ­–INTA#иINTB#, и т. д. С учетом циклического сдвига линий запроса это правило позволяет установить в 4 соседних слота 4 простых устройства, и каждое из них будет занимать отдельную линию запроса прерывания. Если какой-то карте требуется 2 линии, то для монопольного использования прерываний нужно оставить соседний слот свободным. Однако не следует забывать, что РСI -устройства системной платы тоже задействуют прерывания с той же закономерностью (кроме контроллера IDE). Порт AGP в плане прерываний следует рассматривать наравне со слотом PCI. Таким образом, может оказаться, что монопольные линии прерывания присутствуют далеко не на всех слотах.

Назначение прерываний устройствам (функциям) выполняет процедура POST, и этот процесс управляем лишь частично. Параметрами CMOS Setup (PCI/PNP Configuration) пользователь определяет номера запросов прерываний, доступных шине PCI. В зависимости от версии BIOS это может выглядеть по-разному: либо каждой линииINTA#...INTD# явно назначается свой номер, либо ряд номеров отда­ется «на откуп» устройствам РСI вместе с устройствами ISA РnР (в противопо­ложность устройствам «Legacy ISA»). В итоге POST определяет соответствие ли­нийINTA#….INTD#номерам запросов контроллера и соответствующим образом программирует коммутатор запросов. По воле пользователя может оказаться так, что не каждой линии запроса шины РСI достается отдельный вход контроллера прерываний. Тогда коммутатор организует объединение нескольких линий запро­сов РСI на один вход контроллера, то есть разделяемыми станут даже разные ли­нии запросов прерываний для PCI. В самом худшем случае устройствам РСI не достанется ни одного входа контроллера прерываний. Заметим, что BIOS вряд ли отдаст шине РСI прерывания 14 и 15 (их забирает контроллер IDE, если он не отключен), а также 3 и 4 (СОМ-порты). Новые версии ОС настолько сильно вни­кают в аппаратную платформу, что позволяют себе (зная чип сет системной платы или пользуясь функциями РСI BIOS) управлять коммутатором запросов преры­ваний. Эту возможность можно запретить или разрешить, например, в ОС Windows снятием или установкой флажка Использовать управление IRQ (РСI Interrupt Steering) в свойствах шины РСI (Панель управления  Системные устройства  Шина PCI).

Драйвер (или иное ПО), работающий с устройством PCI, определяет номер входа конmроллера прерывания, доставшийся устройству (точнее, функции), чтением конфигурационного регистраInterrupt Line. По этому номеру определяется век­тор (см. табл. 2.1), значение 255 означает, что номер не назначен. Номер входа каждому устройству заносит тест POST. Для этого он считывает регистрInterrupt Рinкаждой обнаруженной функции и по номеру устройства определяет, какая из линийINTA#...INTD#(на входе коммутатора за­просов) используется. Заметим, что правила, по которым на системной плате оп­ределяется соответствие междуIntеrruрt Рin и входными линиями коммутатора запросов в зависимости от номера устройства, строго не регламентированы (деле­ние номера устройства на 4 - это всего лишь рекомендация), но их твердо знает версия BIOS данной системной платы. К этому моменту тест POST уже опреде­лил таблицу соответствия этих линий номерам входов; пользуясь этой таблицей, он записывает нужное значение в конфигурационный регистрIntеrruрt Linе. Определить, есть ли еще претенденты на тот же номер прерывания, можно, лишь просмотрев конфигурационные регистры функций всех устройств, обнаруженных на шине (это не так уж сложно сделать, пользуясь функциями РСI BIOS).

Порядок выполнения:

  1. Ознакомиться с теоретическими сведениями, приведенными в методическом указании.

  2. Установите и запустите программу PCIExplorer, и ознакомьтесь с подключенными к шинеPCIустройствами и их прерываниями.

  3. Запустить программу PCI_32, где возможно просмотреть более детальную информацию об устройствах, подключенных к шине. (Для того, чтобы запустить программу, откройте Пуск->Выполнить->cmd и открытьpci32.exe).

  4. После завершения лабораторной работы удалите программу PCI Explorer используя тот же установочный файл.

Рис. 3 – Детальная информация об устройстве вывода графического изображения.

Рис. 4 – Просмотр адресов прерываний

Рис. 5 - Детальная информация об IDEконтроллере, подключенном к шинеPCI

Рис. 6 – Результат выполнения программы PCI32

Требования к отчету:

Отчет должен содержать:

  1. Распечатку результатов работы.

  2. Схему устройств подключенных к шине PCI.

  3. Вывод о проделанной работе.