Поделиться через


Ресурсы прерывания GPIO-Based

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

Драйверы периферийных устройств, использующие ресурсы прерываний на основе GPIO, могут игнорировать низкоуровневые сведения о реализации, например, создается ли прерывание контактом GPIO вместо контроллера прерывания или контактом прерывания на микросхеме процессора.

Прерывание на основе GPIO — это ресурс типа CmResourceTypeInterrupt. Параметры конфигурации для этого прерывания содержатся в элементе u.Interrupt структуры CM_PARTIAL_RESOURCE_DESCRIPTOR , описывающей ресурс прерывания. Чтобы подключить подпрограмму службы прерываний (ISR) к прерыванию, драйвер UMDF или KMDF предоставляет необработанные и переведенные описания ресурса прерывания методу создания прерываний.

Драйвер KMDF или UMDF для периферийного устройства вызывает метод WdfInterruptCreate для подключения ISR к прерыванию с устройства. Одним из входных параметров этого метода является указатель на структуру WDF_INTERRUPT_CONFIG , содержащую сведения о конфигурации для прерывания.

Если драйвер периферийных устройств использует более одного ресурса прерывания GPIO, этот драйвер должен учитывать порядок, в котором эти ресурсы отображаются в необработанных и преобразованных списках ресурсов, которые предоставляются в качестве входных параметров для функции EvtDevicePrepareHardware или метода OnPrepareHardware . Ресурсы в этих списках отображаются в порядке, в котором они описаны в встроенном ПО платформы, который должен соответствовать порядку, ожидаемому драйвером.