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


Автоматическое распознавание и конфигурирование


Спецификация PCI обязывает каждую отдельную функцию (функциональную единицу устройства, а значит, и шины) иметь свою собственную область для хранения конфигурационных данных, размер которой равен 256 байт. Эта область известна как конфигурационное пространство функциональных единиц PCI (PCI function's configuration space).

Первые 64 байта такого конфигурационного пространства (называемого заголовком) имеют предопределенную структуру (таблица 2.4), в то время как остальные 192 байта могут быть использованы по усмотрению разработчика данной PCI платы. Системное программное обеспечение может использовать этот заголовок для идентификации функциональной единицы PCI и выделения ей ресурсов. Заголовок включает:

  • Информацию о поставщике (Vendor ID), тип устройства (Device ID) и версию устройства (Revision ID).
  • Два стандартных регистра состояния команд для того, чтобы имелась возможность работы с ошибками в устройстве (Status Register и Command Register).
  • Список ресурсов, в котором описываются требования к памяти и пространству ввода/вывода.
  • Регистр вывода прерывания (Int Pin) и регистр линии прерывания (Int Line), описанные выше.
  • Указатель на расширение ПЗУ (Expansion ROM Base Address), специфичное для данного устройства.

Регистр Class Code внутренне разбит на три поля (Class Code, старший байт, Sub-Class Code и ProgIF, младший байт) и содержит информацию для использования классовыми системными драйверами (предназначенными для обслуживания целого класса родственных устройств, например, сетевых контроллеров, устройств мультимедиа, docking-станций, шинных мостов, кодирующих/декодирующих контроллеров, интеллектуальных контроллеров ввода/вывода). Например, значение Class Code, равное 0C (hex), в спецификации PCI 2.2 определяет контроллеры последовательных шин. Тогда значение Sub-Class Code, равное 00, определяет IEEE 1394, 01 &#8212 ACCESS.bus, 02 &#8212 SSA (Serial Storage Architecture), 03 &#8212 USB, 04 &#8212 Fibre Channel, 05 &#8212 SMBus (System Management Bus).


Начало  Назад  Вперед