SPB (Simple Peripheral Bus)
Notes
Cet article contient des références au terme esclave, un terme que Microsoft n’utilise plus. Lorsque le terme sera supprimé du logiciel, nous le supprimerons de cet article.
Cette rubrique décrit les recommandations relatives au bus périphérique simple dans Windows 10. Windows inclut la prise en charge des bus simples à faible consommation d’énergie, tels que le circuit intégré inter (I²C) et (I²C) et l’interface périphérique simple (SPI), à l’aide d’extensions d’infrastructure de l’architecture KMDF (Kernel Mode Driver Framework). Les pilotes de contrôleur ne sont pas fournis dans la boîte. Les fournisseurs de chipsets, les oem ou les IHVs doivent développer un pilote de contrôleur implémenté dans KMDF. L’architecture fournit des topologies de configuration d’appareil flexibles prenant en charge l’utilisation simultanée de bus pour les transactions de contrôle et de données, ainsi que GPIO pour la signalisation et les interruptions. La définition complète de l’appareil est définie via l’interface ACPI (Advanced Configuration and Power Interface).
Dans Windows, les bus sont pris en charge via les pilotes de contrôleur KMDF. À l’aide de la plateforme KMDF, le pilote de contrôleur est principalement utilisé pour définir les interfaces spécifiques au matériel nécessaires pour activer la fonction de contrôleur.
L’infrastructure Windows prend en charge les appareils qui partagent des bus, les bus multiplexés sur la même ligne et la configuration des appareils via ACPI. Windows utilise ACPI comme principal moyen d’identification, de configuration et de contrôle des appareils.
Le tableau suivant récapitule la prise en charge du bus périphérique simple.
Bus | Prise en charge de la boîte de réception | Extension de framework fournie | Tiers autorisé | Informations supplémentaires sur la prise en charge |
---|---|---|---|---|
I²C | Non | Oui | Oui, à l’aide de l’extension SPB Framework | Master uniquement « Appel général » n’est pas pris en charge Accès direct à la mémoire (DMA) pris en charge |
SPI | Non | Oui | Oui, à l’aide de l’extension SPB Framework | Master uniquement, « Appel général » n’est pas pris en charge Duplex intégral pris en charge DMA pris en charge |
MIPI-HSI | Non | Non | Oui, à l’aide de Windows Driver Foundation (WDF) | |
MIPI-SLIMbus | Non | Non | Oui, à l’aide de WDF | |
MIPI-CSI | Non | Non | Oui, à l’aide de WDF | |
UART | Non | Oui | Oui, à l’aide de l’extension Serial Framework (SerCx2) | DMA pris en charge Modes de transfert personnalisés pris en charge avec SerCx2 |
Considérations relatives à la conception pour SPB
Voici quelques considérations génériques pour SPB :
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. Les fabricants de systèmes doivent garantir des informations exactes dans ACPI pour énumérer les périphériques connectés à SPB pour le gestionnaire de Plug-and-Play et spécifier les ressources matérielles qui sont dédiées à chaque appareil.
Il n’existe aucune prise en charge des interruptions in-band pour SPB. La plupart des périphériques prennent en charge la signalisation des appareils par le biais d’un mécanisme d’interruption distinct (souvent basé sur GPIO) et mappés avec précision dans ACPI.
Windows prend en charge l’extension de classe SPB (spbcx.sys) dans Windows 8 et au-delà. Les partenaires SoC sont responsables du développement et de la redistribution de leur pilote de contrôleur SPB approprié.
Les pilotes périphériques pour les appareils SPB sont généralement fournis par les partenaires d’appareils SPB. Microsoft fournit un pilote de classe pour les appareils SPB pour HID sur I²C (hidi2c.sys).
Les classes d’appareil peuvent fournir des exigences HLK ou des conseils WEG sur les rubriques suivantes relatives à I²C :
- Partage du contrôleur I²C avec d’autres appareils
- Vitesse de signalisation I²C préférée
- Scénarios de gestion de l’alimentation et de veille sur I²C et GPIO.
Circuit intégré inter (I²C) : I²C est le bus principal validé dans le cadre de SPB et fortement recommandé sur les systèmes SoC.
Microsoft fournit les exigences du programme de compatibilité matérielle Windows pour I²C. Utilisez le Kit de laboratoire matériel Windows (HLK) pour tester les appareils par rapport à ces exigences.
Interface périphérique simple (SPI) : la prise en charge de SPI est facultative et jusqu’au partenaire SoC. Le programme de compatibilité matérielle Windows ne contient aucune configuration requise spécifique au bus SPI.
Prise en charge de SPB sur tous les systèmes
Microsoft prend en charge SPB sur les systèmes Arm et les plateformes x86/x64 (s’exécutant dans des configurations S3). Microsoft prend en charge SPB sur les plateformes s’exécutant dans les configurations CS (Connected Standby) et S3.
Contactez votre fournisseur de plateforme pour les pilotes et le support.
Il existe un certain nombre de scénarios d’appareil qui tirent parti de SPB pour la connectivité. I²C est disponible sur les modèles d’alimentation traditionnels CS et S3. Les SoC modernes dotés de cœurs de faible consommation de capteurs Sur SoC peuvent implémenter des solutions non I²C en fonction des besoins.
Les appareils sur des docks/ports amovibles doivent également suivre les instructions relatives aux scénarios d’ancrage, également inclus dans le WEG. Certains de ces appareils peuvent être plus judicieux sur des bus comme USB plutôt que I²C.
Extension de framework SPB
La bibliothèque d’extensions d’infrastructure SPB étend l’infrastructure de pilotes Windows pour prendre en charge les pilotes SPB. L’infrastructure SPB simplifie le développement d’un pilote de contrôleur SPB et améliore la compatibilité entre les pilotes de périphériques et le pilote contrôleur en fournissant une implémentation commune de la « moitié supérieure » du pilote qui traite les demandes d’E/S (par rapport à la « moitié inférieure », qui est pilotée par la moitié supérieure et contrôle le matériel). L’extension d’infrastructure SPB est une bibliothèque d’extensions KMDF. Il gère le traitement initial de la requête SPB et la séquence dans laquelle elles sont remises au pilote du contrôleur. L’extension de framework SPB est conçue pour prendre en charge les bus I²C et SPI, et peut convenir à d’autres bus avec une sémantique similaire.
Extension Serial Framework
La bibliothèque d’extensions d’infrastructure série étend l’infrastructure de pilotes Windows pour prendre en charge les pilotes de contrôleur série. De même que l’infrastructure SPB, l’infrastructure série simplifie le développement d’un pilote de contrôleur série et améliore la compatibilité entre les pilotes de périphérique et le pilote du contrôleur en fournissant une implémentation commune de la « moitié supérieure » du pilote qui traite les demandes d’E/S. L’extension d’infrastructure série est une bibliothèque d’extensions KMDF. Il gère le traitement initial des appels aux API série et la séquence dans laquelle ils sont remis au pilote du contrôleur. L’extension de framework série est conçue pour prendre en charge les contrôleurs UART modernes et simplifier l’implémentation et la diagnostic des pilotes de contrôleur.
Exigences I²C et UART HLK
Il existe des exigences du programme de compatibilité matérielle pour les contrôleurs I²C et UART. Les exigences pour SPI sont également en cours d’étude pour l’avenir. Les exigences de logo sont principalement destinées aux fournisseurs de silicium SoC pour le matériel d’interface de bus et les pilotes de contrôleur associés. Les OEM et les ODM ne sont pas nécessaires pour revalider le pilote matériel ou de contrôleur, mais ils sont invités à exécuter les tests si vous le souhaitez. Des étapes de configuration spéciales sont nécessaires pour valider ces exigences. Le programme d’installation comprend les éléments suivants :
- Un système ouvert avec des broches/ports I²C/UART accessibles
- Modifications apportées à ACPI pour exposer l’appareil de test I²C/UART au logiciel
- Un appareil de test spécifique (WITT) attaché au système en cours de validation
Pour plus d’informations sur la configuration, reportez-vous à la documentation HLK (Hardware Lab Kit).
Pilotes périphériques
Les périphériques sont énumérés par ACPI et sont généralement statiques. Les pilotes de fonction périphérique déterminent leurs ressources de bus appropriées en interagissant avec les extensions du framework. Les périphériques et les contrôleurs ne sont pas hiérarchiques, et les périphériques peuvent utiliser plusieurs bus SPB, GPIO, Série et autres bus à grande vitesse. Les pilotes périphériques qui accèdent aux appareils incorporés, tels que les capteurs, les périphériques d’entrée, les modems et les radios, peuvent être écrits en mode noyau ou en mode utilisateur. Ces pilotes peuvent être portables sur différentes configurations de carte ODM ou OEM tant que l’ACPI est mis à jour de manière appropriée.
Microprogramme
Les paramètres ACPI du contrôleur et les paramètres de bus sont spécifiques au fournisseur et dépendent du contrôleur particulier. Le tableau suivant récapitule les paramètres ACPI pour le contrôleur et le bus périphérique.
Bus | Paramètres ACPI du contrôleur | Paramètres ACPI périphériques |
---|---|---|
I²C | Adresses du contrôleur Configuration des broches |
Adresse de bus Fréquence d’horloge Mode esclave Mode d’adressage |
SPI | Adresses du contrôleur Configuration des broches |
Ligne de sélection de puce Fréquence d’horloge Polarité de l’horloge Phase d’horloge Mode filaire Sélection de l’appareil Polarité de sélection de l’appareil Mode esclave |
UART | Adresse/broche du contrôleur Configurer la fréquence de bauds initiale |
Débit initial en bauds Parité Longueur des bits de début et d’arrêt Méthode de contrôle de flux(Hardware/Software/None) Lignes en cours d’utilisation Taille de la mémoire tampon de réception Taille de mémoire tampon de transmission Endian-ness |
Pour obtenir un exemple d’ACPI, consultez Comment obtenir les paramètres de connexion d’un appareil. Pour plus d’informations sur l’intégration d’appareils sur des bus de faible puissance, consultez Accès aux appareils GPIO, I2C et UART.
Outils et référence technique
Titre de la ressource | Type de contenu | Description | Lien |
---|---|---|---|
Utilisation de Windows Driver Framework pour créer de meilleurs pilotes | Vidéo | Explique comment le WDF peut améliorer la fiabilité des pilotes et comment mieux réaliser des économies d’énergie et déployer des pilotes sur plusieurs versions de Windows. | Canal 9 |
Présentation des bus Low-Power | Vidéo | Montre comment intégrer un appareil sur les nouveaux bus et créer un pilote. Vous allez apprendre à écrire ACPI pour énumérer votre périphérique et commencer à écrire et tester un pilote de périphérique. | Canal 9 |
Guide de conception de l’infrastructure de pilotes Kernel-Mode | Article | Introduit Kernel-Mode Driver Framework (KMDF). | MSDN |
Guide de conception UMDF 1.x | Article | Introduit User-Mode Driver Framework (UMDF). | MSDN |
Programme de compatibilité matérielle Windows | Article | Fournit des informations sur le programme de certification Windows. | MSDN |