Partager via


Guide de conception du pilote pour Bus Périphérique Simple (SPB)

Cette section explique comment écrire un pilote pour un appareil de contrôleur de bus périphérique simple (SPB) ou pour un périphérique connecté à un SPB. La catégorie SPB comprend des bus tels que I²C et SPI. Le fournisseur de matériel d’un périphérique de contrôleur SPB fournit un pilote de contrôleur SPB pour gérer les fonctions matérielles dans le contrôleur. Ce pilote peut prendre en charge une famille d’appareils de contrôleur similaires. Le fournisseur de matériel d’un périphérique connecté à SPB fournit un pilote de périphérique SPB pour gérer les fonctions matérielles dans l’appareil périphérique. Ce pilote peut prendre en charge une famille d’appareils périphériques sur diverses plateformes matérielles qui fournissent des spB compatibles.

Dans les versions de Windows antérieures à Windows 8, le système d’exploitation a obtenu des informations provenant d’appareils connectés à SPB sur une carte mère pc uniquement indirectement via le microprogramme de la plateforme. À compter de Windows 8, les fournisseurs de matériel peuvent fournir des pilotes Windows pour contrôler directement leurs contrôleurs SPB et leurs périphériques connectés à SPB, et rendre ces appareils disponibles pour une utilisation par le système d’exploitation et par les applications. Pour plus d’informations, consultez Pilotes de contrôleur SPB et Pilotes de périphérique SPB.

Les spBs sont fréquemment utilisés pour connecter des périphériques à faible vitesse aux circuits de carte mère et aux modules System on a Chip (SoC). Un circuit intégré nécessite moins de broches pour se connecter à un bus série qu’à un bus parallèle, qui transmet plusieurs bits de données par cycle d’horloge. En règle générale, les SPB sont utilisées dans les applications sensibles aux coûts dans lesquelles les nombres de broches faibles et les connexions simples sont plus importants que la vitesse de transmission des données. Étant donné que les SPB s’exécutent à faible vitesse et nécessitent peu de connexions électriques, elles sont fréquemment utilisées dans les applications dans lesquelles l’alimentation de la batterie doit être conservée.

Par exemple, la carte mère pc dans un ordinateur portable peut utiliser un bus I²C pour communiquer avec un appareil à faible vitesse qui surveille le niveau de batterie. De même, le module SoC d’un téléphone intelligent ou d’un autre appareil mobile peut utiliser un bus I²C pour se connecter à un appareil de capteur, tel qu’un accéléromètre, un appareil GPS ou un capteur de température.

Un SPB n’est pas un bus Plug-and-Play. Les périphériques ont généralement des connexions fixes à un SPB et ne peuvent pas être supprimés. Même si un périphérique peut être déconnecté d’un emplacement sur un SPB, l’emplacement est généralement dédié à cet appareil. Au démarrage du système, le microprogramme ACPI de la plateforme matérielle énumère les périphériques connectés par SPB pour le gestionnaire Plug-and-Play et spécifie les ressources matérielles dédiées à chaque appareil.

Inclus dans ces ressources est un ID de connexion qui identifie la connexion de l’appareil au SPB. L’ID de connexion encapsule les informations (par exemple, une adresse de bus et une fréquence d’horloge de bus) qu’un contrôleur SPB nécessite pour établir une connexion à l’appareil. D’autres ressources matérielles peuvent inclure une interruption à laquelle le pilote connecte son ISR. Toutefois, les ressources matérielles de l’appareil n’incluent pas de mémoire pour les registres d’appareils. Un périphérique connecté à SPB n’est pas mappé en mémoire et est accessible uniquement via le SPB. Pour plus d’informations, consultez ID de connexion pour SPB-Connected périphériques.

Un SPB ne fournit aucun moyen spécifique au bus pour transmettre les demandes d’interruption des appareils périphériques au processeur. Au lieu de cela, un périphérique connecté au SPB signale une interruption par le biais d'un chemin matériel distinct situé en dehors à la fois du SPB et du contrôleur SPB. La routine de service d’interruption (ISR) d’un périphérique connecté à SPB doit s’exécuter à IRQL = PASSIVE_LEVEL afin qu’il puisse envoyer des demandes d’E/S de manière synchrone pour accéder en série aux registres matériels de l’appareil via le SPB. Pour plus d’informations, consultez Interruptions des périphériques SPB-Connected.