Condividi tramite


Interrupt primari e secondari

La gestione degli interrupt GPIO è intrinsecamente un processo a due fasi. L'interrupt dal controller GPIO (General-Purpose I/O), che causa l'esecuzione della routine del servizio di interruzione GPIO (GpioClx) dell'estensione del framework GPIO (ISR), viene chiamata interrupt principale. Questo ISR esegue il mapping del pin GPIO di interruzione a un interrupt di sistema globale (GSI) e passa questo GSI al livello di astrazione hardware (HAL). HAL genera un interrupt secondario per eseguire un secondo ISR connesso logicamente al pin GPIO tramite questo GSI. Questo processo è illustrato nel diagramma in Panoramica del supporto driver GPIO.

GpioClx implementa un ISR per gestire le richieste di interruzione ricevute dal controller GPIO tramite pin GPIO configurati come input di interrupt. Quando un dispositivo periferico asserisce un interrupt su un pin GPIO e l'interrupt è abilitato e non mascherato nel controller GPIO, l'hardware del controller GPIO asserisce un interrupt per il processore. In risposta a questo interrupt, l'ISR in GpioClx esegue una query sul controller GPIO per identificare il pin GPIO che ha generato l'interrupt e quindi determina quale GSI viene assegnato a questo pin. L'ISR GpioClx passa questo GSI a HAL e hal chiama l'ISR connesso logicamente all'GSI.

In genere, questo secondo ISR appartiene al driver per il dispositivo periferico che ha asserito l'interrupt sul pin GPIO. Per informazioni sul modo in cui un driver di dispositivo periferico connette logicamente l'ISR a un pin di interrupt GPIO, vedere Risorse di interrupt basate su GPIO.