Compartilhar via


Arquitetura e visão geral do HID sobre o transporte SPI

Este artigo descreve a pilha de driver para dispositivos que dão suporte a HID sobre o transporte SPI.

Arquitetura e visão geral

A pilha de driver HID SPI consiste em componentes novos e existentes fornecidos pela Microsoft, bem como componentes fornecidos pelo fabricante de silício SPI. A ilustração a seguir ilustra a pilha e esses componentes.

A pilha de driver HID sobre SPI.

O Windows fornece uma interface para barramentos simples e de baixo consumo de energia para se comunicar efetivamente com o sistema operacional. Essa interface é chamada de barramento periférico simples (SPB) e suporta barramentos como Inter-Integrated Circuit (I2C) e Serial Peripheral Interface (SPI). Para obter detalhes adicionais sobre o SPB, consulte o tópico SPB (barramento periférico simples).

Windows fornece um driver de miniporte HID baseado em KMDF que implementa a versão 1.0 da especificação de protocolo para HID sobre SPI. Esse driver é chamado HIDSPI.sys. Windows carrega esse driver com base em uma correspondência de ID compatível, que é exposta pela ACPI (Interface de Energia e Configuração Avançada). Os integradores de sistemas podem usar um INF de extensão para carregar esse driver com base na ID de hardware de seu periférico. O driver garante que os aplicativos que usam HID IOCTLs sejam compatíveis com o nível do aplicativo para software que aproveita os HID IOCTLs e o conjunto de APIs. Uma conexão GPIO é fornecida ao driver, o que permite que o dispositivo declare uma interrupção quando requer atenção ou tem dados.

Observação

O driver de dispositivo HIDSPI.sys dá suporte apenas ao barramento SPI. Ele não oferece suporte a I2C, SMBUS ou outros barramentos de baixa potência no Windows.

O driver do controlador SPI

O driver do controlador SPI expõe uma interface IOCTL SPB (Barramento Periférico Serial) para executar operações de leitura e gravação. Esse driver fornece os intrínsecos reais do controlador (por exemplo, SPI). A Extensão de Classe SPB, em nome do driver do controlador, lida com toda a interação com o hub de recursos e implementa as filas necessárias para gerenciar destinos simultâneos.

Observação

O driver HID SPI não funcionará em sistemas que não tenham um barramento SPI compatível com a plataforma SPB. Entre em contato com o fabricante do sistema para determinar se o barramento SPI no sistema do dispositivo é compatível com a plataforma SPB.

O driver do controlador GPIO

O controlador GPIO (Entrada/Saída de Uso Geral) fornece interrupções do dispositivo por GPIO. Geralmente, esse é um componente subordinado simples que usa pinos GPIO para sinalizar o Windows de novos dados ou outros eventos. O GPIO também pode controlar o dispositivo por abordagens diferentes do canal SPI.

O hub de recursos

As conexões em uma plataforma SoC normalmente não são detectáveis, pois não há padrões para enumeração de dispositivos nos barramentos usados no SoC. Como resultado, esses dispositivos devem ser definidos estaticamente na ACPI (Interface de Energia e Configuração Avançada). Além disso, os componentes geralmente têm várias dependências abrangendo vários barramentos, em oposição a uma estrutura de árvore de ramificação estrita.

O hub de recursos é um proxy que gerencia as conexões entre todos os dispositivos e controladores de barramento. O driver HIDSPI usa o hub de recursos para redirecionar solicitações de abertura de dispositivo para o driver de controlador apropriado. Para obter mais informações sobre o hub de recursos, consulte o tópico IDs de conexão para dispositivos conectados ao SPB.

Extensão de classe HIDSPI (HIDSPICx)

Para implementações que exigem maior desempenho ou integração, é possível que os fabricantes de sistemas desenvolvam silício personalizado para processar transações HIDSPI. Para isso, a extensão de classe HIDSPICx é fornecida com o Windows. O HIDSPICx permite o desenvolvimento de um driver de controlador HIDSPI HWA personalizado sem usar SpbCx.

Para dispositivos HWA, o fornecedor fornece um driver cliente responsável por implementar a interface definida pela extensão de classe e se comunicar com a extensão de classe.

A pilha de driver HIDSPICx e HWA.