Compartilhar via


Guia de design do driver do SPB (Barramento Periférico Simples)

Esta seção descreve como escrever um driver para um dispositivo de controlador de barramento periférico simples (SPB) ou para um dispositivo periférico conectado a um SPB. A categoria SPB inclui ônibus como I²C e SPI. O fornecedor de hardware de um dispositivo controlador SPB fornece um driver de controlador SPB para gerenciar as funções de hardware no controlador. Esse driver pode dar suporte a uma família de dispositivos controladores semelhantes. O fornecedor de hardware de um dispositivo periférico conectado ao SPB fornece um driver periférico SPB para gerenciar as funções de hardware no dispositivo periférico. Esse driver pode dar suporte a uma família de dispositivos periféricos em uma variedade de plataformas de hardware que fornecem SPBs compatíveis.

Em versões do Windows antes do Windows 8, o sistema operacional obteve informações de dispositivos conectados a SPB em uma placa-mãe do computador apenas indiretamente por meio do firmware da plataforma. A partir do Windows 8, os fornecedores de hardware podem fornecer drivers do Windows para controlar diretamente seus controladores SPB e seus dispositivos periféricos conectados ao SPB e disponibilizar esses dispositivos para uso pelo sistema operacional e por aplicativos. Para obter mais informações, consulte drivers de controlador SPB e drivers de dispositivo periférico SPB.

Os SPBs são frequentemente usados para conectar dispositivos periféricos de baixa velocidade a chipsets de placa-mãe e módulos SoC (System on a Chip). Um circuito integrado requer menos pinos para se conectar a um barramento serial do que a um barramento paralelo, que transmite vários bits de dados por ciclo de relógio. Normalmente, os SPBs são usados em aplicativos sensíveis ao custo em que contagens de pinos baixos e conexões simples são mais importantes do que a velocidade de transmissão de dados. Como os SPBs são executados em baixa velocidade e exigem poucas conexões elétricas, eles são frequentemente usados em aplicativos nos quais a energia da bateria deve ser conservada.

Por exemplo, a placa-mãe de um laptop pode usar um barramento I²C para se comunicar com um dispositivo de baixa velocidade que monitora o nível da bateria. Da mesma forma, o módulo SoC em um smartphone ou outro dispositivo móvel pode usar um barramento I²C para se conectar a um dispositivo de sensor, como um acelerômetro, um dispositivo GPS ou um sensor de temperatura.

Um SPB não é um barramento Plug and Play. Os dispositivos periféricos normalmente têm conexões fixas com um SPB e não podem ser removidos. Mesmo que um dispositivo periférico possa ser desconectado de um slot em um SPB, o slot normalmente é dedicado a esse dispositivo. Durante a inicialização do sistema, o firmware ACPI na plataforma de hardware enumera os dispositivos periféricos conectados ao SPB para o Gerenciador de Plug and Play e especifica os recursos de hardware dedicados a cada dispositivo.

Incluído nesses recursos está uma ID de conexão que identifica a conexão do dispositivo com o SPB. O ID de conexão encapsula as informações (por exemplo, um endereço de barramento e uma frequência de relógio de barramento) que um controlador SPB requer para estabelecer uma conexão com o dispositivo. Outros recursos de hardware podem incluir uma interrupção à qual o driver conecta seu ISR. No entanto, os recursos de hardware do dispositivo não incluem memória para registros de dispositivo. Um dispositivo periférico conectado ao SPB não é mapeado em memória e só pode ser acessado por meio do SPB. Para obter mais informações, consulte IDs de conexão para dispositivos periféricos SPB-Connected.

Um SPB não possui meios específicos de barramento para transmitir solicitações de interrupção de dispositivos periféricos para o processador. Em vez disso, um dispositivo periférico conectado ao SPB sinaliza uma interrupção por meio de um caminho de hardware separado que está fora do SPB e do controlador SPB. A ISR (rotina de serviço de interrupção) para um dispositivo periférico conectado ao SPB deve ser executada em IRQL = PASSIVE_LEVEL para que possa enviar solicitações de Entrada/Saída de forma sincronamente para acessar serialmente os registros de hardware do dispositivo pelo SPB. Para obter mais informações, consulte Interrupções de dispositivos periféricos SPB-Connected.