Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esta seção descreve como escrever um driver para um dispositivo 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 para um dispositivo controlador SPB fornece um driver de controlador SPB para gerenciar as funções de hardware no controlador. Este driver pode suportar uma família de dispositivos de controlador semelhantes. O fornecedor de hardware para um dispositivo periférico conectado ao SPB fornece um driver de periférico SPB para gerenciar as funções de hardware no dispositivo periférico. Este driver pode suportar uma família de dispositivos periféricos em uma variedade de plataformas de hardware que fornecem SPBs compatíveis.
Em versões do Windows anteriores ao Windows 8, o sistema operacional obtinha informações de dispositivos conectados ao SPB em uma placa-mãe de PC 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 placas-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 clock. Normalmente, os SPBs são usados em aplicações sensíveis ao custo, nas quais contagens baixas de pinos e conexões simples são mais importantes do que a velocidade de transmissão de dados. Como os SPBs funcionam a baixas velocidades e requerem poucas conexões elétricas, eles são frequentemente usados em aplicações nas quais a energia da bateria deve ser conservada.
Por exemplo, a placa-mãe do PC em 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 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 desligado de uma ranhura num SPB, a ranhura é normalmente dedicada a este 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 Plug and Play e especifica os recursos de hardware dedicados a cada dispositivo.
Incluído nesses recursos está um 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 controlador liga o seu ISR. No entanto, os recursos de hardware para o dispositivo não incluem memória para registradores de dispositivo. Um dispositivo periférico conectado ao SPB não é mapeado em memória e pode ser acessado somente através do SPB. Para obter mais informações, consulte IDs de conexão para dispositivos periféricos SPB-Connected.
Um SPB não fornece 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 através de um caminho de hardware separado que se encontra fora tanto do SPB quanto do controlador SPB. A rotina de serviço de interrupção (ISR) para um dispositivo periférico conectado ao SPB deve ser executada em IRQL = PASSIVE_LEVEL para que ele possa enviar solicitações de E/S de forma síncrona para acessar em série os registros de hardware do dispositivo pelo SPB. Para obter mais informações, consulte Interrupções de dispositivos periféricos SPB-Connected.