Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Alguns dispositivos de controlador de E/S de uso geral (GPIO) podem configurar seus pinos GPIO para funcionar como entradas de solicitação de interrupção. Essas entradas de solicitação de interrupção são controladas por dispositivos periféricos que estão fisicamente conectados aos pinos gpio. Os drivers desses controladores GPIO podem habilitar, desabilitar, mascarar, desmascarar e limpar solicitações de interrupção em pinos de GPIO individuais.
O suporte para interrupções de GPIO é opcional. A extensão da estrutura GPIO (GpioClx) não requer controladores GPIO para dar suporte a interrupções de GPIO.
Nesta seção
| Tópico | Descrição |
|---|---|
O tratamento de interrupção do GPIO é inerentemente um processo de dois estágios. A interrupção do controlador de E/S de uso geral (GPIO), que faz com que a ISR (rotina de serviço de interrupção) da extensão do framework GPIO (GpioClx) seja executada, é chamada de interrupção primária. Esse ISR mapeia o pino GPIO de interrupção para uma GSI (interrupção global do sistema) e passa esta GSI para a camada de abstração de hardware (HAL). O HAL gera uma interrupção secundária para executar o segundo ISR que está logicamente conectado ao pino GPIO por meio deste GSI. Esse processo é mostrado no diagrama na Visão Geral do Suporte ao Driver GPIO. |
|
Drivers para dispositivos periféricos que enviam interrupções para pinos de E/S de uso geral (GPIO) adquirem interrupções de GPIO como recursos abstratos de interrupção do Windows. Os drivers kmdf (estrutura de driver no modo kernel) recebem esses recursos por meio de suas funções de retorno de chamada de evento EvtDevicePrepareHardware. |
|
A partir do Windows 8, os drivers do KMDF (estrutura de driver no modo kernel) e do UMDF (estrutura de driver no modo de usuário) têm a opção de registrar suas rotinas de serviço de interrupção (ISRs) para serem executadas em nível passivo. |
|
Como opção, o driver para um controlador de E/S de uso geral (GPIO) pode fornecer suporte para interrupções de GPIO. Para dar suporte a interrupções de GPIO, um driver de controlador GPIO implementa um conjunto de funções de retorno de chamada para gerenciar essas interrupções. O driver inclui ponteiros para essas funções de retorno de chamada no pacote de registro fornecido pelo driver quando ele se registra como um cliente da extensão do framework GPIO (GpioClx). |
|
Interromper a sincronização para drivers de controlador GPIO |
Os drivers do controlador GPIO podem chamar os métodos GPIO_CLX_AcquireInterruptLock e GPIO_CLX_ReleaseInterruptLock para adquirir e liberar bloqueios de interrupção implementados internamente pela extensão da estrutura gpio (GpioClx). O código do driver que opera em IRQL = PASSIVE_LEVEL pode chamar esses métodos para sincronizar com a rotina de serviço de interrupção (ISR) no GpioClx. GpioClx dedica um bloqueio de interrupção separado a cada banco de pinos no controlador GPIO. |
Habilitando e desabilitando interrupções de GPIO compartilhadas |
Em alguns casos, as linhas de solicitação de interrupção de dois ou mais dispositivos periféricos podem se conectar ao mesmo pino de E/S de uso geral físico (GPIO). O pino GPIO para uma linha de interrupção compartilhada normalmente é configurado para interrupções acionadas por nível. |
Os pinos de E/S de uso geral (GPIO) configurados como entradas de interrupção podem ser mascarados e desmascarados, além de serem habilitados e desabilitados. |