Interruptions principales et secondaires
La gestion des interruptions GPIO est par nature un processus en deux étapes. L’interruption du contrôleur d’E/S à usage général (GPIO), qui provoque l’exécution de la routine de service d’interruption (ISR) de l’extension d’infrastructure GPIO (GpioClx), est appelée interruption principale. Cet ISR mappe la broche GPIO d’interruption à une interruption de système global (GSI) et la transmet à la couche d’abstraction matérielle (HAL). Le HAL génère une interruption secondaire pour exécuter un deuxième ISR qui est logiquement connecté à la broche GPIO par le biais de cette GSI. Ce processus est illustré dans le diagramme dans vue d’ensemble de la prise en charge des pilotes GPIO.
GpioClx implémente un ISR pour traiter les demandes d’interruption que le contrôleur GPIO reçoit via des broches GPIO configurées en tant qu’entrées d’interruption. Lorsqu’un périphérique déclare une interruption sur une broche GPIO et que l’interruption est activée et non masquée dans le contrôleur GPIO, le matériel du contrôleur GPIO déclare une interruption au processeur. En réponse à cette interruption, l’ISR dans GpioClx interroge le contrôleur GPIO pour identifier la broche GPIO qui a généré l’interruption, puis détermine quel GSI est affecté à cette broche. L’ISR GpioClx transmet cette GSI à hal, et le HAL appelle l’ISR qui est logiquement connecté à la GSI.
En règle générale, ce deuxième ISR appartient au pilote du périphérique qui a déclaré l’interruption sur la broche GPIO. Pour plus d’informations sur la façon dont un pilote de périphérique connecte logiquement son ISR à une broche d’interruption GPIO, consultez Ressources d’interruption basées sur GPIO.