Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Certains appareils de contrôleur d’E/S à usage général (GPIO) peuvent configurer leurs broches GPIO pour fonctionner en tant qu’entrées de demande d’interruption. Ces entrées de demande d’interruption sont pilotées par des périphériques connectés physiquement aux broches GPIO. Les pilotes de ces contrôleurs GPIO peuvent activer, désactiver, masquer, décocher et effacer les demandes d’interruption sur des broches GPIO individuelles.
La prise en charge des interruptions GPIO est facultative. L’extension de framework GPIO (GpioClx) ne nécessite pas de contrôleurs GPIO pour prendre en charge les interruptions GPIO.
Dans cette section
| Sujet | Descriptif |
|---|---|
La gestion des interruptions GPIO est intrinsèquement un processus en deux étapes. L’interruption du contrôleur d’E/S à usage général (GPIO), qui entraîne l’exécution de la routine de service d’interruption de l’extension du framework GPIO (GpioClx), est appelée interruption principale. Cet ISR mappe la broche GPIO d'interruption à une interruption système globale (GSI) et transmet le GSI à la couche d'abstraction du matériel (HAL). Le HAL génère une interruption secondaire pour exécuter un second ISR qui est logiquement connecté au pin GPIO par ce GSI. Ce processus est illustré dans le diagramme de la vue d’ensemble de la prise en charge des pilotes GPIO. |
|
Les pilotes pour les périphériques qui envoient des interruptions aux broches d’E/S à usage général (GPIO) acquièrent des interruptions GPIO en tant que ressources d’interruption Windows abstraites. Les pilotes KMDF (Kernel-Mode Driver Framework) reçoivent ces ressources via leurs fonctions de rappel d’événements EvtDevicePrepareHardware. |
|
À compter de Windows 8, l’infrastructure de pilote en mode noyau (KMDF) et les pilotes UMDF (User-Mode Driver Framework) peuvent, en tant qu’option, inscrire leurs routines de service d’interruption (ISR) pour s’exécuter au niveau passif. |
|
En option, le pilote pour un contrôleur d’E/S à usage général (GPIO) peut prendre en charge les interruptions GPIO. Pour prendre en charge les interruptions GPIO, un pilote de contrôleur GPIO implémente un ensemble de fonctions de rappel pour gérer ces interruptions. Le pilote inclut des pointeurs vers ces fonctions de rappel dans le paquet d’inscription que le pilote fournit lorsqu’il s’inscrit en tant que client de l’extension de framework GPIO (GpioClx). |
|
Les pilotes de contrôleur GPIO peuvent appeler les méthodes GPIO_CLX_AcquireInterruptLock et GPIO_CLX_ReleaseInterruptLock pour acquérir et libérer des verrous d’interruption implémentés en interne par l’extension de framework GPIO (GpioClx). Code du pilote qui s’exécute à IRQL = PASSIVE_LEVEL peut appeler ces méthodes pour se synchroniser avec la routine de service d’interruption (ISR) dans GpioClx. GpioClx consacre un verrou d’interruption distinct à chaque banque de broches dans le contrôleur GPIO. |
|
Activation et désactivation des interruptions GPIO partagées |
Dans certains cas, les lignes de requête d’interruption de deux périphériques ou plus peuvent se connecter à la même broche d’E/S à usage général physique (GPIO). Le pin GPIO pour une ligne d’interruption partagée est généralement configuré pour des interruptions déclenchées au niveau. |
Les broches d’E/S à usage général (GPIO) configurées en tant qu’entrées d’interruption peuvent être masquées et démasquées en plus d’être activées et désactivées. |