Partager via


Guide de conception du pilote SPB (Simple Peripheral Bus)

Cette section explique comment écrire un pilote pour un périphérique de contrôleur de bus de 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 de périphériques 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 le périphérique. Ce pilote peut prendre en charge une famille de périphériques sur une variété de plateformes matérielles qui fournissent des bases de service compatibles.

Dans les versions de Windows antérieures Windows 8, le système d’exploitation obtenait des informations auprès des appareils connectés par SPB sur une carte mère de PC uniquement indirectement par le biais du 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 mettre ces appareils à la disposition du système d’exploitation et des applications. Pour plus d’informations, consultez Pilotes de contrôleur SPB et Pilotes de périphériques SPB.

Les SPB sont fréquemment utilisés pour connecter des périphériques à faible vitesse aux puces de carte mère et aux modules Système sur puce (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és dans les applications sensibles aux coûts dans lesquelles un faible nombre de broches et des 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, ils sont fréquemment utilisés dans les applications dans lesquelles la batterie doit être conservée.

Par exemple, la carte mère du PC dans un ordinateur portable peut utiliser un bus I²C pour communiquer avec un appareil à faible vitesse qui surveille le niveau de la 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ébranché 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 dans la plateforme matérielle énumère les périphériques connectés par SPB pour le gestionnaire de Plug-and-Play et spécifie les ressources matérielles dédiées à chaque appareil.

Ces ressources incluent 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) dont un contrôleur SPB a besoin 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 périphériques au processeur. Au lieu de cela, un périphérique connecté à SPB signale une interruption via un chemin matériel distinct qui se trouve en dehors du contrôleur SPB et du contrôleur SPB. La routine de service d’interruption (ISR) pour un périphérique connecté à SPB doit s’exécuter à IRQL = PASSIVE_LEVEL afin qu’il puisse envoyer de manière synchrone des demandes d’E/S pour accéder en série aux registres matériels de l’appareil via le SPB. Pour plus d’informations, consultez Interruptions de SPB-Connected périphériques.