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

       

Доступ к регистрам


Шина PCI позволяет использовать 32 разрядные адреса, но системное пространство ввода/вывода все еще ограничено адресами до 64K (16 разрядов). Соответственно, там должны пребывать и все регистры PCI. Более того, в системах, содержащих шины EISA или ISA, разработчикам следует воздерживаться и от использования адресов, которые могли бы использовать устаревшие устройства, подключаемые к этим шинам, по причинам, указанным выше.

Наряду с адресацией пространства ввода вывода и адресацией памяти, архитектура PCI определяет диапазон адресов во внутренней памяти устройства, называемых конфигурационным пространством (configuration space). При обсуждении автоматического конфигурирования PCI будет объяснено, какую структуру это конфигурационное пространство имеет и как используется в процессе идентификации устройств (плат) на шине PCI.


Спецификация IEEE 1394 удовлетворяет стандарту IEEE 1212 архитектуры Control and Status Register (CSR). Стандарт CSR определяет фиксированную 64-разрядную схему адресации, включающую 10-разрядный шинный номер и 6-разрядный идентификатор узла (Node ID) c остающимся 48-разрядным полем для использования по усмотрению устройства.

Как в случае со спецификацией USB, регистры предназначены для управления и хранения информации о состоянии устройства, а также для передачи небольших (до 64 байт) пакетов данных. Синхронная передача используется в тех случаях, когда необходимо выдержать указанную пропускную способность шины (например, при работе с видеокамерой), асинхронная передача данных используется при гарантированном поступлении данных (например, при считывании данных с жесткого диска.)




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

Механизм передачи данных является асинхронным и блочным. В каждом блоке передаваемых данных, называемом USB-фреймом, может передаваться до 1280 байт данных. Каждый фрейм занимает фиксированный временной интервал 1 мсек.

Оперирование командами и блоками данных реализуется при помощи такой логической абстракции, как USB pipe-канал. Pipe-канал является каналом связи между хост-контроллером и конечной точкой (endpoint &#8212 еще одна логическая абстракция спецификации USB) внешнего устройства, которой обычно является буфер некоторой протяженности внутри внешнего устройства. Открытый pipe-канал можно сравнить с открытым файлом. Кстати сказать, с ним ассоциирован дескриптор открытого канала.

Для передачи команд (и данных, входящих в состав команд) используется pipe-канал по умолчанию (default pipe), в то время как для передачи данных может быть использовано любое количество потоковых pipe-каналов (stream pipes) и pipe-каналов сообщений (message pipes).

Концепция "конечных точек" (endpoints) USB сильно напоминает концепцию функций устройств PCI, поскольку после конфигурирования устройства за конечными точками внутри него закрепляется и определенная функция (0 &#8212 только функции управления и контроля, остальные &#8212 по замыслу разработчика, но &#8212 на все время работы в системе).




Стандарт PC Card определяет 26 разрядный адресный диапазон (64 Мбайт). С другой стороны, адресация происходит по схеме, сходной со схемой, используемой в ISA архитектуре. В архитектуре CardBus схема использования пространства, адресуемого 32 разрядным адресом, аналогична схеме, примененной в архитектуре PCI.



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