Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Sommige general-purpose I/O (GPIO)-controllerapparaten kunnen hun GPIO-pinnen configureren om te functioneren als onderbrekingsaanvraaginvoer. Deze interruptaanvraaginvoeren worden aangestuurd door randapparatuur die fysiek zijn verbonden met de GPIO-pinnen. De stuurprogramma's voor deze GPIO-controllers kunnen de interruptverzoeken voor afzonderlijke GPIO-pinnen inschakelen, uitschakelen, maskeren, ontmaskeren en wissen.
Ondersteuning voor GPIO-interrupts is optioneel. De GPIO Framework-extensie (GpioClx) vereist geen GPIO-controllers om GPIO-interrupts te ondersteunen.
In deze sectie
| Onderwerp | Beschrijving |
|---|---|
GPIO-interruptafhandeling is inherent een proces met twee fasen. De interrupt van de GPIO-controller (General-Purpose I/O), die ervoor zorgt dat de onderbrekingsserviceroutine (ISR) van de GPIO-frameworkextensie (GpioClx) wordt uitgevoerd, wordt de primaire interrupt genoemd. Deze ISR wijst de onderbrekende GPIO-pin toe aan een globale systeemonderbreking (GSI) en geeft deze GSI door aan de hardwareabstractielaag (HAL). De HAL genereert een secundaire interrupt om een tweede ISR uit te voeren die logisch is verbonden met de GPIO-pin via deze GSI. Dit proces wordt weergegeven in het diagram in het gpio-stuurprogrammaondersteuningsoverzicht. |
|
Stuurprogramma's voor randapparaten die interrupts verzenden naar GPIO-pinnen verkrijgen GPIO-interrupts als abstracte Windows-interruptbronnen. KMDF-stuurprogramma's (Kernel Mode Driver Framework ) ontvangen deze resources via hun EvtDevicePrepareHardware-gebeurtenis callback-functies. |
|
Vanaf Windows 8 kunnen stuurprogrammaframeworks (KMDF) en gebruikersmodus-stuurprogramma's (UMDF) optioneel hun interruptserviceroutines (ISR's) registreren om op passief niveau te worden uitgevoerd. |
|
Als optie kan het stuurprogramma voor een GPIO-controller (general-purpose I/O) ondersteuning bieden voor GPIO-interrupts. Ter ondersteuning van GPIO-interrupts implementeert een GPIO-controllerstuurprogramma een set callbackfuncties om deze interrupts te beheren. Het stuurprogramma bevat verwijzingen naar deze callbackfuncties in het registratiepakket dat het stuurprogramma levert wanneer zich registreert als een client van de GPIO frameworkuitbreiding (GpioClx). |
|
Synchronisatie onderbreken voor GPIO-controllerstuurprogramma's |
GPIO-controllerstuurprogramma's kunnen de GPIO_CLX_AcquireInterruptLock en GPIO_CLX_ReleaseInterruptLock methoden aanroepen om interruptvergrendelingen te verkrijgen en los te laten die intern worden geïmplementeerd door de GPIO Framework-extensie (GpioClx). Stuurprogrammacode die wordt uitgevoerd op IRQL = PASSIVE_LEVEL kan deze methoden aanroepen om te synchroniseren met de onderbrekingsserviceroutine (ISR) in GpioClx. GpioClx wijdt een afzonderlijke interruptvergrendeling aan elke bank van pinnen in de GPIO-controller. |
In sommige gevallen kunnen onderbrekingsaanvraaglijnen van twee of meer randapparaten verbonden zijn met dezelfde fysieke GPIO-pin (General-Purpose I/O). De GPIO-pin voor een gedeelde interruptlijn wordt doorgaans geconfigureerd voor door niveau geactiveerde interrupts. |
|
GPIO-pinnen (General-Purpose I/O) die als interrupt-invoer zijn geconfigureerd, kunnen naast in- en uitschakelen ook worden gemaskeerd en ontmaskerd. |