Interrupciones de GPIO
Algunos dispositivos de controlador de E/S de uso general (GPIO) pueden configurar sus patillas GPIO para que funcionen como entradas de solicitud de interrupción. Estas entradas de solicitud de interrupción están controladas por dispositivos periféricos que están conectados físicamente a los patillas GPIO. Los controladores de estos controladores GPIO pueden habilitar, deshabilitar, enmascarar, desenmascarcar y borrar solicitudes de interrupción en patillas GPIO individuales.
La compatibilidad con interrupciones gpIO es opcional. La extensión del marco gpIO (GpioClx) no requiere controladores GPIO para admitir interrupciones de GPIO.
En esta sección
Tema | Descripción |
---|---|
El control de interrupciones gpIO es inherentemente un proceso de dos fases. La interrupción del controlador de E/S de uso general (GPIO), que hace que se ejecute la rutina de servicio de interrupción (ISR) de la extensión del marco GPIO (GpioClx), se denomina interrupción principal. Este ISR asigna la patilla GPIO de interrupción a una interrupción global del sistema (GSI) y pasa este GSI a la capa de abstracción de hardware (HAL). Hal genera una interrupción secundaria para ejecutar un segundo ISR que está conectado lógicamente al pin GPIO a través de este GSI. Este proceso se muestra en el diagrama de Información general sobre la compatibilidad con controladores GPIO. |
|
Los controladores para dispositivos periféricos que envían interrupciones a patillas de E/S de uso general (GPIO) adquieren interrupciones GPIO como recursos abstractos de interrupción de Windows. Los controladores del marco de controladores en modo kernel (KMDF) reciben estos recursos a través de sus funciones de devolución de llamada de eventos EvtDevicePrepareHardware. |
|
A partir de Windows 8, el marco de controlador en modo kernel (KMDF) y los controladores del marco de controladores en modo de usuario (UMDF) pueden, como opción, registrar sus rutinas de servicio de interrupción (ISR) para ejecutarse en el nivel pasivo. |
|
Como opción, el controlador para un controlador de E/S de uso general (GPIO) puede proporcionar compatibilidad con interrupciones gpIO. Para admitir interrupciones GPIO, un controlador de controlador GPIO implementa un conjunto de funciones de devolución de llamada para administrar estas interrupciones. El controlador incluye punteros a estas funciones de devolución de llamada en el paquete de registro que proporciona el controlador cuando se registra como un cliente de la extensión de marco GPIO (GpioClx). |
|
Sincronización de interrupciones para controladores de controlador GPIO |
Los controladores del controlador GPIO pueden llamar a los métodos de GPIO_CLX_AcquireInterruptLock y GPIO_CLX_ReleaseInterruptLock para adquirir y liberar bloqueos de interrupción implementados internamente por la extensión de marco GPIO (GpioClx). El código de controlador que se ejecuta en IRQL = PASSIVE_LEVEL puede llamar a estos métodos para sincronizar con la rutina del servicio de interrupción (ISR) en GpioClx. GpioClx dedica un bloqueo de interrupción independiente a cada banco de patillas del controlador GPIO. |
Habilitación y deshabilitación de interrupciones gpIO compartidas |
En algunos casos, las líneas de solicitud de interrupción de dos o más dispositivos periféricos pueden conectarse al mismo pin físico de E/S de uso general (GPIO). La patilla GPIO para una línea de interrupción compartida se configura normalmente para las interrupciones desencadenadas por el nivel. |
Las patillas de E/S de uso general (GPIO) configuradas como entradas de interrupción se pueden enmascarar y desenmascarar además de habilitarse y deshabilitarse. |