Программирование драйверов Windows

       

Механизмы прерываний


Шина PCI использует четыре равно-приоритетных линии запросов на прерывание INTA-INTD. Эти линии являются активными по низкому уровню (сигналом прерывания является низкий уровень в линии), переключаемые по уровню (информативным значением является логический уровень &#8212 в отличие от того случая, когда информативным является фронт сигнала, то есть переход от одного уровня к другому). Данные линии допускают возможность совместного использования (это, возможно, станет технически более понятным, если сказать, что такая линия прерываний реализуется по электронной схеме "open drain", N-МОП аналог "открытого коллектора" для ТТЛ логики). Устройство, подключаемое к PCI и представляющее одну функцию, должно использовать только линию INTA.

Многофункциональные устройства могут использовать комбинации из четырех линий, начиная с INTA. Единственное ограничение состоит в том, что каждая из восьми функций (возможных в одном устройстве) может использовать только одну линию прерывания. Соответственно, устройство с внутренними восемью функциями может задействовать имеющиеся линии INTA, INTB, INTC, INTD следующим образом:

  • Все восемь функций подключены к INTA.
  • Семь подключены к INTA, одна к INTB.
  • Две подключены к INTA, две к INTB, две к INTC и две к INTD.
  • Четыре подключены к INTA, четыре к INTB.
  • И т.п.
  • Спецификация PCI относительно безразлична к приоритетам прерываний. Приоритеты, в данном случае, зависят от внешнего контроллера, который переадресует запрос на прерывание PCI устройства в соответствующую линию системных прерываний. Рекомендуемые схемы представления прерываний PCI устройств с использованием программируемых редиректоров (redirector или router) прерываний разной сложности можно найти в книге Тома Шанли и Дона Андерсона, PCI System Architecture, 4 издание, стр. 227-230, содержащей изложение спецификации PCI с полезными комментариями.

    Например, на персональных компьютерах редиректор может преобразовать запрос функциональной единицы PCI по линиям INTA-INTD в запрос по одной из линий IRQ0-IRQ15, схема 14-4 в указанном издании.

    Шина 1394 симулирует прерывания устройств (впрочем, как и шина USB). Устройство должно послать пакет данных для того, чтобы сообщить хост-контроллеру о своем состоянии, когда требуется вмешательство операционной системы. Драйвер, отвечающий за данное устройство, должен отреагировать на такой пакет данных, который размещается IEEE 1394 интерфейсом в системном адресном пространстве.

    Семейство стандартов 1394 включает Open Host Controller Interface. Спецификация OHCI является наиболее значимым стандартом для разработчиков драйверов, работающих с устройствами шины 1394. Этот интерфейс обеспечивает общий механизм работы с прерываниями и DMA передачей данных. Ассоциация 1394 Trade Association предоставляет информацию по спецификации OHCI и другие связанные с ним данные на интернет сайте 1394.ta.org.




    Для шины USB настоящего механизма прерываний, строго говоря, не определено. Вместо этого, USB интерфейс хост-компьютера опрашивает подключенные устройства на предмет наличия данных о прерывании. Опрос происходит в фиксированные интервалы времени, обычно каждые 1-32 миллисекунды. Устройству разрешается посылать в момент опроса до 64 байт данных.

    С точки зрения драйвера, возможности работы с прерываниями и DMA передачей данных фактически определяются USB хост-контроллером, который и обеспечивает поддержку физической реализации USB интерфейса. Достаточно много усилий было предпринято для стандартизации интерфейса хост-адаптера, в результате чего появились два типа интерфейсов: Open Host Controller Interface (OpenHCI) и Universal Host Controller Interface (UHCI). Собственно хост-контроллер и поддерживает общепринятые механизмы прерываний и DMA передачи данных. Внешние пользовательские USB устройства должны лишь пассивно и в соответствии с протоколом участвовать в обмене данными.




    В стандартах PC Card и CardBus определен один проводник (линия) для прерываний &#8212 IREQ, или CINT. Эта линия прерываний управляется уровнем (level sensitive), следовательно, может быть использована совместно несколькими картами на одной и той же шине. Однако при использовании многофункциональных PCMCIA карт (если линия прерываний используется совместно несколькими функциями карты) должно быть обеспечено арбитрирование средствами программного обеспечения.



    Содержание раздела







    Forekc.ru
    Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий