Condividi tramite


Problemi di implementazione per i driver del controller GPIO

L'estensione del framework GPIO (GpioClx) offre un'interfaccia DDI (Flexible Device Driver Interface). Questo DDI consente agli sviluppatori di scegliere tra interfacce di callback alternative. Uno sviluppatore di driver deve implementare il set di funzioni di callback degli eventi più adatte all'architettura hardware del dispositivo controller GPIO di destinazione.

Ad esempio, se il driver del controller GPIO supporta la lettura e la scrittura nei pin I/O GPIO, lo sviluppatore può scegliere di implementare una delle coppie seguenti di funzioni di callback:

CLIENT_ReadGpioPinse CLIENT_WriteGpioPins CLIENT_ReadGpioPinsUsingMask e CLIENT_WriteGpioPinsUsingMaskLe funzioniCLIENT_ReadGpioPins e CLIENT_WriteGpioPins ricevono un numero bancario, una matrice di numeri di pin GPIO e un buffer di dati da leggere o scrivere in questi pin. Se solo un numero ridotto di pin GPIO è in genere accessibile in un'operazione di lettura o scrittura, questa coppia di callback potrebbe produrre l'implementazione migliore. Questa implementazione viene in genere usata per i controller GPIO i cui registri hardware non sono mappati alla memoria. Tuttavia, se è possibile accedere a più pin GPIO durante un'operazione di lettura o scrittura o se l'hardware del controller GPIO può accedere in modo efficiente a più pin GPIO in parallelo, l'altra coppia di funzioni di callback potrebbe produrre un'implementazione migliore.

Le funzioni di callback CLIENT_ReadGpioPinsUsingMask e CLIENT_WriteGpioPinsUsingMask possono leggere o scrivere una banca di fino a 64 pin in una chiamata. La funzione CLIENT_ReadGpioPinsUsingMask legge i valori del pin GPIO in una maschera a 64 bit. La funzione CLIENT_WriteGpioPinsUsingMask usa due maschere a 64 bit. Una maschera indica quali pin GPIO impostare e l'altra maschera indica quale GPIO aggiunge per cancellare. Questa implementazione viene in genere usata per i controller GPIO mappati alla memoria.