Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Некоторые устройства контроллера ввода-вывода общего назначения (GPIO) могут настроить свои пины GPIO для работы в качестве входных данных запроса прерывания. Эти входные данные запроса прерывания управляются периферийными устройствами, физически подключенными к пин-кодам GPIO. Драйверы для этих контроллеров GPIO могут активировать, деактивировать, маскировать, демаскировать и очищать запросы прерываний на отдельных контактах GPIO.
Поддержка прерываний GPIO является необязательной. Расширение платформы GPIO (GpioClx) не требует контроллеров GPIO для поддержки прерываний GPIO.
В этом разделе
| Тема | Описание |
|---|---|
Обработка прерываний GPIO по сути является двухэтапным процессом. Прерывание от контроллера операций ввода-вывода общего назначения (GPIO), которое вызывает выполнение подпрограммы службы прерываний (ISR) расширения фреймворка GPIO (GpioClx), называется основным прерыванием. Этот ISR сопоставляет прерывающий пин GPIO с глобальным прерыванием системы (GSI) и передает этот GSI в уровень абстракции аппаратного обеспечения (HAL). HAL генерирует вторичное прерывание для запуска второго ISR, который логически соединён с контактом GPIO через данный GSI. Этот процесс показан на схеме в обзоре поддержки драйверов GPIO. |
|
Драйверы для периферийных устройств, которые отправляют прерывания в контакты ввода-вывода общего назначения (GPIO), получают прерывания GPIO в виде абстрактных ресурсов прерываний Windows. Драйвера Kernel-Mode Driver Framework (KMDF) получают эти ресурсы через свои функции обратного вызова события EvtDevicePrepareHardware. |
|
Начиная с Windows 8, драйверы в режиме ядра (KMDF) и драйверные платформы пользовательского режима (UMDF) могут, по желанию, регистрировать подпрограммы службы прерываний (ISR) для выполнения на пассивном уровне. |
|
В качестве варианта драйвер для контроллера ввода-вывода общего назначения (GPIO) может обеспечить поддержку прерываний GPIO. Для поддержки прерываний GPIO драйвер контроллера GPIO реализует набор функций обратного вызова для управления этими прерываниями. Драйвер включает указатели на эти функции обратного вызова в пакет регистрации, который драйвер предоставляет, когда он регистрирует себя в качестве клиента расширения платформы GPIO (GpioClx). |
|
Драйверы контроллера GPIO могут вызывать методы GPIO_CLX_AcquireInterruptLock и GPIO_CLX_ReleaseInterruptLock для получения и выпуска блокировок прерываний, реализованных внутри расширения платформы GPIO (GpioClx). Код драйвера, работающий на IRQL = PASSIVE_LEVEL, может вызывать эти методы для синхронизации с подпрограммой обработки прерываний (ISR) в GpioClx. GpioClx выделяет отдельную блокировку прерывания для каждого банка пинов в контроллере GPIO. |
|
В некоторых случаях строки запросов прерываний с двух или нескольких периферийных устройств могут подключаться к одному и тому же физическому пин-коду ввода-вывода общего назначения (GPIO). Вывод GPIO для общей линии прерываний обычно настраивается для прерываний с уровневой активацией. |
|
Выводы общего назначения ввода-вывода (GPIO), настроенные как входы прерываний, могут быть замаскированы и демаскированы, а также включены и выключены. |