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