Partager via


Gestion de l’alimentation des capteurs

Un PC mobile intègre généralement des capteurs tels qu’un capteur de lumière ambiante (ALS), un accéléromètre 3D, un gyromètre 3D ou un magnétomètre 3D. Lorsqu’un appareil capteur n’est pas utilisé par le système d’exploitation ou par une application, un logiciel de gestion de l’alimentation peut basculer l’appareil en mode basse consommation d’énergie pour réduire la consommation d’énergie. Dans un PC qui prend en charge le modèle d’alimentation de secours moderne, les capteurs sont censés basculer vers un mode de faible consommation peu après que le PC entre en veille moderne et rester dans ce mode jusqu’à ce que le PC quitte le mode de secours moderne.

Cet article explique comment implémenter la gestion de l’alimentation pour les appareils de capteur. En outre, cet article traite de la gestion de l’alimentation du microcontrôleur de capteur facultatif (également appelé hub de fusion de capteur ou MCU de capteur) et des appareils de capteur agrégés. (par exemple, un dispositif de capteur de boussole peut être implémenté en agrégeant un accéléromètre, un gyromètre et un magnétomètre sous le contrôle d’un microcontrôleur de capteur. Le microcontrôleur expose ces appareils capteurs à Windows en tant qu’appareil de capteur logique unique.)

Capteurs et microcontrôleur de capteur

Le matériel de capteur est essentiel à l’expérience mobile moderne. À compter de Windows 10, une infrastructure système riche est disponible pour exposer et gérer plusieurs appareils de capteur. Cette infrastructure simplifie le développement d’applications qui intègrent des informations sur les capteurs et prennent en charge des scénarios Windows intégrés critiques, tels que la rotation automatique de l’écran ou la modification de la luminosité de l’affichage en fonction de la lumière ambiante.

Pendant l’exécution du système, les capteurs individuels peuvent être mis hors tension lorsqu’ils ne sont pas utilisés. Les exigences relatives à l’utilisation d’un périphérique de capteur particulier sont communiquées à l’appareil et à ses pilotes par le biais de l’API de capteur Windows. Lorsqu’un périphérique de capteur n’est pas utilisé par le système d’exploitation ou par des applications, il peut être mis hors tension par le pilote de capteur ou par le microprogramme qui s’exécute sur le microcontrôleur de capteur.

Une fois que l’affichage du système s’est éteint et que la plateforme matérielle entre en veille moderne, tous les appareils de capteur et les microcontrôleurs de capteurs facultatifs qui ne sont pas déjà dans des états de faible puissance doivent entrer dans leur état de faible consommation d’énergie, en veille dans un délai de quelques secondes, afin que la plateforme dans son ensemble puisse passer à un état de faible consommation. Toutefois, les pilotes de capteurs ne surveillent pas directement les transitions vers et depuis la veille moderne pour déterminer quand les périphériques de capteur doivent être mis sous tension et désactivés. Au lieu de cela, le pilote de capteur doit permettre à l’appareil de recevoir l’alimentation lorsque l’appareil est activement utilisé par un ou plusieurs clients, qui peuvent être des applications ou des composants du système d’exploitation. Le pilote doit supprimer l’alimentation de l’appareil lorsqu’aucun client n’utilise l’appareil.

Lorsque l’extension de classe de capteur demande au pilote de commencer à signaler des exemples de lectures de capteur, elle appelle la méthode de rappel EvtSensorStart du pilote de capteur. Lorsque l’extension de classe de capteur demande au pilote d’arrêter de signaler les lectures d’exemples de capteur, elle appelle la méthode de rappel EvtSensorStop du pilote. Pour plus d’informations, consultez À propos des événements du pilote de capteur.

Une fois que l’ordinateur entre en veille moderne et que tous les capteurs entrent dans des états de faible consommation d’énergie, la consommation totale de tout le matériel de capteur système doit être inférieure à un milliwatt. Les périphériques de capteur et le microcontrôleur de capteur en option peuvent passer à un état de veille à faible consommation d’énergie spécifique au matériel du capteur. Ou bien, le rail d’alimentation matériel des périphériques de capteur et le microcontrôleur de capteur facultatif peuvent être désactivés sous le contrôle des pilotes de capteur et/ou du microprogramme ACPI du système.

À compter de Windows 10, la prise en charge d’un ensemble limité d’options de connectivité matérielle de capteur au silicium principal ou au système sur puce (SoC) est fournie dans une plateforme de secours moderne. Les sections suivantes détaillent les configurations matérielles et logicielles prises en charge, ainsi que leurs comportements de gestion de l’alimentation à la fois pendant la veille moderne et lorsque la plateforme est activement utilisée.

Modes de gestion de l’alimentation

Windows s’attend à ce que chaque appareil capteur ou microcontrôleur de capteur dispose de trois modes d’alimentation de l’appareil (actif, inactif et de secours) en plus d’un mode facultatif, sans watt et sans alimentation. Le tableau suivant décrit les modes d’alimentation d’un appareil de capteur et d’un microcontrôleur de capteur facultatif. Le tableau fait la distinction entre un mode inactif dans lequel le matériel du capteur est utilisé, mais actuellement inactif, et un mode inactif dans lequel le matériel du capteur n’est pas utilisé.

Mode Description Consommation énergétique moyenne Latence de sortie à actif Mécanisme de transition

Actif

L’appareil de capteur et/ou le microcontrôleur de capteur fournissent ou traitent activement les changements environnementaux.

< 100 milliwatts

N/A

N/A

Inactif (en cours d’utilisation)

L’appareil de capteur et/ou le microcontrôleur de capteur sont utilisés par une ou plusieurs applications et attendent de fournir le prochain ensemble d’informations de capteur au processeur main.

< 50 milliwatts

Spécifique au capteur

Matériel autonome

Inactif (non utilisé)

L’appareil de capteur et/ou le microcontrôleur de capteur n’est utilisé par aucune application. Les données d’étalonnage du capteur ou du microcontrôleur de capteur sont conservées.

< 5 milliwatts

Spécifique au capteur

Commandes HID (Human Interface Device) ou messages Sensor Framework décrivant l’utilisation actuelle des appareils de capteur.

Standby

L’appareil de capteur et/ou le microcontrôleur de capteur n’est utilisé par aucune application. Les données d’étalonnage du capteur ou du microcontrôleur de capteur sont conservées. Le capteur et/ou le microcontrôleur de capteur n’effectue aucune action supplémentaire tant que le logiciel s’exécute sur le processeur main.

< 1 milliwatt (pour tous les capteurs système)

< 10 millisecondes

Plusieurs options :

  • Commande HIDI2C SET_POWER(Veille)
  • Message privé du pilote tiers
  • Ligne GPIO du SoC au matériel de capteur

Hors tension

L’alimentation est supprimée de l’appareil capteur et/ou du microcontrôleur de capteur, et tout le contexte matériel est perdu.

0 milliwatts

< 100 millisecondes

L’entité externe supprime l’alimentation ou applique l’alimentation via le microprogramme ACPI en réponse à l’IRP d’alimentation D3.

Notes

Dans le tableau précédent, le terme veille fait référence à un mode d’alimentation d’appareil distinct de la veille moderne, qui est un état d’alimentation à l’échelle de la plateforme.

Mécanismes de gestion de l’alimentation logicielle

La gestion de l’alimentation au moment de l’exécution pour les appareils de capteur et le microcontrôleur de capteur dépend principalement de leur utilisation. En règle générale, le pilote et le matériel du capteur sont censés mettre un capteur en mode d’alimentation inactif lorsqu’il n’est pas utilisé par le système d’exploitation ou une application. La plateforme de capteurs Windows fournit des informations sur le nombre de clients d’application ou de système d’exploitation connectés à un capteur donné, ainsi que sur les exigences relatives au cycle d’utilisation ou au débit de données du capteur. Le pilote et/ou le matériel du capteur utilisent ces informations pour passer en toute transparence au mode d’alimentation inactif pendant les périodes où le système est en cours d’exécution et que l’affichage est allumé.

Une fois que l’affichage du système est hors tension et que la plateforme entre en veille moderne, Windows s’attend à ce que tous les capteurs et microcontrôleurs de capteur passent en mode de secours ou de mise hors tension.

Le choix d’un mécanisme logiciel de gestion de l’alimentation à utiliser pour les appareils de capteur et le microcontrôleur de capteur facultatif dépend de la façon dont le matériel du capteur est exposé à Windows par le pilote de périphérique et de la façon dont le matériel du capteur est physiquement connecté au soC ou au silicium de base. Windows prend en charge deux méthodes d’exposition et de connexion de capteurs. Une méthode utilise le pilote de classe HID du capteur intégré sur une connexion I2C, où le pilote HIDI2C intégré transfère les informations HID sur la connexion I2C. L’autre nécessite un pilote tiers qui implémente l’interface du pilote de capteur universel et appelle les méthodes dans la table SensorscxFunctions.

Les deux options de connexion à un capteur ou à un microcontrôleur de capteur sont comparées dans le tableau suivant. La sélection de l’une des deux options de connexion au matériel de capteur détermine les mécanismes logiciels de gestion de l’alimentation nécessaires à la transition du matériel du capteur vers le mode de secours ou de mise hors tension.

Option de connexion Connexion bus Pilote de capteur requis Fournisseur de pilotes Commentaires

HIDI2C

Le matériel de capteur se connecte directement au soC ou au noyau en silicium via I2C.

Pilote de classe HID du capteur + pilote de classe HID-over-I2C

Microsoft. Composant de boîte de réception commençant par Windows 8.

Avantages / inconvénients

Pilote de capteur tiers

Le matériel du capteur se connecte directement au soC ou au silicium de cœur via I2C ou UART.

Pilote tiers qui implémente SENSOR_CONTROLLER_CONFIG

Fournisseur d’appareils de capteur.

Avantages / inconvénients

HIDI2C

Pour l’option HIDI2C, le microcontrôleur de capteur facultatif est physiquement connecté au SoC ou au silicium de cœur via un bus I2C. Le microcontrôleur expose plusieurs collections HID de niveau supérieur, une pour chaque périphérique de capteur logique. Par exemple, un capteur de boussole peut être exposé via HID en tant qu’appareil de capteur logique qui est une agrégation des capteurs d’accéléromètre, de gyromètre et de magnétomètre derrière le microcontrôleur de capteur. Il s’agit du plus simple à implémenter en termes de connectivité et de logiciel, car il ne nécessite pas de logiciels tiers pour l’appareil de capteur.

La pile Windows HIDI2C est similaire à celle des contrôleurs tactiles et des numériseurs de stylet en ce qu’elle prend en charge deux mécanismes de gestion de l’alimentation logicielle : une commande HID in-band et une transition au moment de l’exécution vers l’état D3.

Commande HID in-band

SET_POWER(Veille) Envoyé à l’appareil une fois que l’affichage s’est éteint et que la plateforme entre en veille moderne. Cette commande peut faire passer l’appareil au mode d’alimentation de secours.

SET_POWER(On) Envoyé à l’appareil lorsque la plateforme existe de secours moderne et que l’affichage est à nouveau activé.

Transition au moment de l’exécution vers l’état D3 pour la pile d’appareils de capteur HID

D3 IRP Une requête IRP_MJ_POWER envoyée à la pile des pilotes de l’appareil immédiatement après la commande SET_POWER(Veille). Cela indique à l’appareil d’entrer l’état d’alimentation de l’appareil D3. Dans le cadre de la transition vers D3, le microprogramme ACPI système peut exécuter des méthodes de contrôle pour basculer l’appareil en mode de secours ou de mise hors tension.

D0 IRP Une requête IRP_MJ_POWER envoyée à la pile de pilotes de l’appareil lorsque la plateforme existe en veille moderne et que l’affichage est activé. Cela indique à l’appareil d’entrer l’état d’alimentation de l’appareil D0. Si nécessaire, le microprogramme ACPI système peut exécuter des méthodes de contrôle pour revenir au mode inactif (non utilisé).

Pilote de capteur tiers

Pour le pilote de capteur tiers, le microcontrôleur de capteur est physiquement connecté au silicium du cœur via un bus I2C ou UART.

Le fournisseur de périphériques de capteur doit fournir un pilote UMDF (User-Mode Driver Framework) qui implémente SENSOR_CONTROLLER_CONFIG interface. Le pilote UMDF communique avec le périphérique de capteur via I2C ou UART. Cela peut être implémenté plusieurs fois, une fois pour chaque capteur qui se trouve derrière le microcontrôleur du capteur. Le pilote de capteur tiers est responsable de la création et de la coordination de toute la gestion de l’alimentation.

Les pilotes de capteur tiers sont censés être créés à l’aide de Windows Driver Frameworks (WDF) et être basés sur l’exemple de pilote Adxl354acc . Le pilote doit utiliser une file d’attente gérée par l’alimentation et configurer l’état d’inactivité D3 via un appel à la méthode IWDFDevice3::AssignS0IdleSettingsEx . Le pilote doit utiliser les méthodes IWDFDevice2::StopIdle et IWDFDevice2::ResumeIdle pour indiquer à WDF quand l’appareil est inactif ou actif. Le pilote doit également activer D3cold en définissant le membre ExcludeD3Cold de la structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS sur WdfFalse. L’activation de D3cold permet à la plateforme de supprimer l’alimentation de l’appareil du capteur une fois qu’il devient inactif et qu’il entre dans l’état D3.

En guise de meilleure pratique, placez du code spécifique à l’appareil dans le pilote et placez du code spécifique à la plateforme dans le microprogramme ACPI pour permettre la réutilisation à faible coût du code du pilote sur plusieurs plateformes.

Entrée des exigences de secours modernes

Les exigences du pilote de capteur tiers pour la gestion de l’alimentation dépendent de la consommation d’énergie de secours du matériel du capteur.

Les pilotes de capteur tiers doivent lancer une transition vers D3 lorsque le périphérique du capteur est prêt à passer en mode de secours ou de mise hors tension, même si l’appareil est capable d’utiliser un mécanisme de communication en bande pour basculer vers un mode d’alimentation qui consomme moins d’un milliwatt. La raison de cette exigence est que de nombreux pilotes de bus dans Windows suivent l’état d’alimentation de l’appareil de leurs appareils de point de terminaison et ne s’arrêtent que lorsque tous les appareils de point de terminaison sont hors tension. Pour certaines conceptions de SoC et bus de connexion (notamment le bus série universel (USB), tous les appareils de point de terminaison et le contrôleur hôte doivent être en D3 pour que le SoC entre dans l’état d’alimentation le plus faible pendant la veille moderne. L’impossibilité d’entrer dans l’état d’alimentation le plus faible peut facilement empêcher un système de répondre aux exigences de secours modernes pour l’autonomie de la batterie.

Si le matériel du capteur a une consommation d’énergie de secours inférieure à un milliwatt pour tout le matériel du capteur contrôlé, le pilote de capteur doit automatiquement basculer l’appareil en mode de secours lorsque les capteurs (ou tous les capteurs du microcontrôleur) ne sont plus utilisés.

Si le matériel du capteur a une consommation d’énergie de secours supérieure à un milliwatt, le pilote de capteur doit effectuer une transition D3 et autoriser les méthodes de contrôle ACPI à retirer l’alimentation du périphérique du capteur. Le pilote de capteur doit enregistrer tout l’état du périphérique de capteur requis afin que l’alimentation puisse être supprimée de l’appareil pendant D3. Le fournisseur de matériel de capteur doit collaborer étroitement avec l’intégrateur système pour s’assurer que le matériel et le pilote du capteur effectuent la transition D3 de manière fiable et rapide.

Important

Le pilote doit enregistrer tout le contexte du périphérique de capteur avant que l’appareil n’entre dans D3, et doit restaurer tout le contexte du périphérique de capteur une fois que l’appareil est entré dans D0.

Peu après l’entrée en veille moderne, Windows arrête automatiquement l’utilisation de tous les capteurs en désactivant l’utilisation par le système d’exploitation des capteurs (par exemple, la lumière ambiante et la rotation) et en suspendant les applications. Le pilote de capteur doit agréger l’état de tout le matériel du capteur contrôlé et basculer ce matériel en mode d’alimentation de l’appareil de secours lorsque tous les capteurs ne sont plus utilisés.

Le mécanisme permettant de basculer l’appareil de capteur en mode de secours peut être conçu pour utiliser la communication en bande via le bus qui connecte l’appareil au SoC. Par exemple, une commande de secours propriétaire peut être envoyée via le bus au matériel du capteur. Ou bien, le matériel du capteur peut être connecté à une ligne GPIO qui met l’appareil en mode de secours et le sort de celui-ci.

Notes

Lorsqu’une ligne GPIO est utilisée pour basculer l’appareil en mode de secours, le pilote de capteur doit faire passer la pile de pilotes vers D3 et autoriser les méthodes de contrôle ACPI de l’appareil (par exemple, _PS3) à définir la ligne GPIO à l’état requis pour placer le matériel en mode de secours. Ce schéma permet au pilote de capteur d’être écrit de manière indépendante de la plateforme. La ligne GPIO spécifique, les exigences de minutage et d’autres informations spécifiques à la plateforme sont encodées dans le microprogramme ACPI fourni par l’intégrateur de système et non dans le pilote spécifique à l’appareil.

Exigences de secours modernes

Lorsque la plateforme quitte le mode de secours moderne, le pilote du capteur doit retourner le matériel du capteur en mode inactif (non utilisé). À mesure que les services système reprennent, Windows demande l’utilisation de capteurs, tels que la rotation et la lumière ambiante, qui sont nécessaires pour effectuer des fonctions système. À mesure que les applications reprennent, elles peuvent demander des informations de capteur. Si le matériel du capteur nécessite un message en bande pour renvoyer l’appareil en mode inactif, le pilote de périphérique doit envoyer ce message dès que la première demande d’informations du capteur est envoyée. Si le matériel du capteur nécessite une ligne GPIO pour indiquer à l’appareil de revenir à l’état d’inactivité, le pilote doit utiliser cette ligne GPIO pour effectuer une transition vers D0 dès que la première demande d’informations du capteur est fournie. Dans ce cas, les méthodes de contrôle ACPI (par exemple, _PS0) doivent activer la ligne GPIO comme nécessaire pour lancer la transition. Enfin, si le matériel du capteur nécessitait auparavant une transition vers le mode de mise hors tension, car la consommation d’énergie en mode veille dépasse un milliwatt, le pilote de capteur doit effectuer une transition vers D0 et autoriser les méthodes de contrôle ACPI à restaurer l’alimentation de l’appareil.

Configurations d'alimentation matérielles prises en charge

La configuration de gestion de l’alimentation matérielle à utiliser pour un appareil de capteur dépend de la consommation d’énergie du matériel du capteur en mode de secours et du fait qu’un microcontrôleur de capteur facultatif gère l’appareil.

Puissance < de secours d’un milliwatt

Si la consommation d’énergie d’un appareil capteur en mode d’alimentation de secours ne dépasse pas un milliwatt, le concepteur de plateforme n’est pas tenu d’attacher le matériel du capteur à une barre d’alimentation qui peut être activée et désactivée par les méthodes de contrôle ACPI. L’un des mécanismes suivants permet de basculer le capteur en mode d’alimentation de secours :

  • Commande HID SET_POWER(Veille).
  • Ligne GPIO du SoC.
  • Commande propriétaire envoyée au matériel du capteur par le pilote de capteur tiers.

Si la plateforme inclut un microcontrôleur de capteur, la puce du microcontrôleur peut contenir un ou plusieurs périphériques de capteur intégrés ou être connectée à un ou plusieurs périphériques de capteur externes. Dans les deux cas, ces appareils capteurs sont, du point de vue logiciel, cachés derrière le microcontrôleur et invisibles pour Windows. Si un microcontrôleur de capteur et ses appareils de capteur agrégés consomment ensemble moins d’un milliwatt lorsque le microcontrôleur et le matériel du capteur sont en mode d’alimentation de secours, le concepteur de plateforme n’est pas tenu d’attacher le microcontrôleur ou le matériel du capteur à une barre d’alimentation qui peut être activée et désactivée par les méthodes de contrôle ACPI. Le microcontrôleur de capteur utilise l’un des mécanismes suivants pour effectuer la transition de lui-même et de tous les capteurs qu’il gère vers et à partir du mode de secours :

  • Commande HIDI2C SET_POWER (ou similaire) envoyée via le bus de communication.
  • Ligne GPIO du SoC.

Si le capteur nécessite une ligne GPIO du SoC pour lancer des transitions vers et depuis le mode de secours, le microprogramme de la plateforme doit fournir un objet _PS3 et un objet _PS0 dans l’espace de noms ACPI sous le périphérique matériel du capteur. Le microprogramme ACPI doit également inclure une région d’opération GPIO qui décrit la ligne GPIO du SoC au matériel du capteur. La méthode de contrôle _PS3 bascule la ligne GPIO pour basculer l’appareil en mode veille, et la méthode de contrôle _PS0 bascule la ligne GPIO pour basculer le matériel du capteur en mode inactif.

Le diagramme de blocs suivant montre les options de gestion de l’alimentation pour un capteur autonome qui consomme moins d’un milliwatt en mode d’alimentation de secours.

Une option consiste à utiliser la pile Windows HIDI2C, comme indiqué sur le côté gauche du diagramme précédent. Dans ce cas, la transition du capteur vers le mode d’alimentation de secours peut être lancée par une commande HID SET_POWER (veille) en bande ou par une IRP D3 que le pilote ACPI gère en exécutant la méthode de contrôle _PS3 pour le capteur.

L’autre option consiste à utiliser un pilote de capteur tiers, comme indiqué à droite du diagramme précédent. Le pilote de capteur tiers peut lancer la transition vers le mode d’alimentation de secours à l’aide d’une commande interne propriétaire ou en envoyant un IRP D3 que le pilote ACPI gère en exécutant la méthode de contrôle _PS3 pour le capteur.

Le concepteur de plateforme peut choisir l’un ou l’autre mécanisme, que les périphériques de capteur soient intégrés ou externes à la puce de microcontrôleur.

Puissance > de secours d’un milliwatt

Si la plateforme inclut du matériel de capteur et/ou un microcontrôleur de capteur qui consomment ensemble plus d’un milliwatt en mode d’alimentation de secours, le matériel du capteur et le microcontrôleur doivent être transférés en mode hors tension lorsque le système est en mode de secours moderne. Dans cette configuration, le capteur, le microcontrôleur de capteur facultatif et tous les capteurs derrière le microcontrôleur doivent être placés sur un seul rail d’alimentation qui est activé et désactivé sous le contrôle d’une ligne GPIO à partir du SoC.

Cette configuration nécessite que le concepteur de plateforme place tout le matériel du capteur sur une barre d’alimentation commutable, contrôlée par une ligne GPIO à partir du SoC. Si plusieurs tensions d’entrée sont requises pour le matériel du capteur, plusieurs commutateurs, chacun contrôlé par la même ligne GPIO, peuvent être utilisés. En plus de la barre d’alimentation commutable, le microprogramme ACPI de plateforme doit définir une ressource d’alimentation dans l’espace de noms. Cette ressource d’alimentation décrit le matériel du capteur et inclut les méthodes _ON et _OFF qui sont responsables de l’utilisation d’une région d’opération GPIO pour basculer la ligne GPIO du SoC.

Le microprogramme de plateforme doit inclure une référence à la ressource d’alimentation sous chaque périphérique de capteur dans l’espace de noms ACPI sur la barre d’alimentation commutable, y compris les objets _PR0 et _PR3.

Le diagramme de blocs suivant montre les options de gestion de l’alimentation pour le matériel du capteur et/ou un microcontrôleur de capteur qui consomment ensemble plus d’un milliwatt en mode d’alimentation de secours. Les deux options sont d’utiliser la pile Windows HIDI2C, comme indiqué sur le côté gauche du diagramme, ou d’utiliser un pilote de capteur tiers, comme indiqué à droite.

Dans la configuration qui utilise la pile de pilotes HIDI2C intégrée, comme illustré sur le côté gauche du diagramme précédent, le pilote HIDI2C lance une transition D3 une fois que l’affichage s’est éteint et que la plateforme entre en veille moderne. Lorsque l’IRP D3 passe par le pilote ACPI, l’objet _PR3 est évalué et Windows désactive la ressource d’alimentation spécifiée en exécutant la méthode _OFF. Si plusieurs capteurs partagent la ressource d’alimentation, Windows référence automatiquement tous les capteurs et exécute la méthode _OFF uniquement une fois que tous les capteurs sont entrés dans D3.

Si le matériel du capteur utilise un pilote de capteur tiers, comme indiqué à droite du diagramme précédent, le flux de contrôle est le même qu’auparavant, sauf que le pilote de capteur est responsable du lancement de la transition vers D3.

Une fois que la plateforme reprend à partir de la veille moderne et qu’une application ou le système d’exploitation demande l’utilisation du capteur, le pilote passe à D0. Un IRP D0 transite par le pilote ACPI et l’objet _PR0 est évalué afin que le pilote ACPI exécute la méthode _ON pour la ressource d’alimentation associée. La méthode _ON bascule la ligne GPIO pour activer la barre d’alimentation commutable. Si le système utilise un pilote de capteur tiers, le pilote doit demander un IRP D0 et lancer une transition vers D0 immédiatement après que les données du capteur ont été demandées par le système d’exploitation ou une application.

Problèmes de veille

Il n’y a aucun problème de veille pour les capteurs ou le microcontrôleur de capteur facultatif. Les appareils capteurs sont censés être en mode de secours ou de mise hors tension pendant la veille moderne et ne sont pas censés réveiller le SoC pendant que la plateforme est en mode de secours moderne.

Test et validation

Il est essentiel pour le concepteur de système de vérifier que le matériel du capteur passe en mode de secours ou de mise hors tension lorsque l’écran est mis hors tension pour le mode de secours moderne. La méthode utilisée pour tester et valider la gestion de l’alimentation des appareils dépend de la façon dont l’appareil capteur est connecté.

Capteur connecté à HIDI2C

Si le système utilise la pile Windows HIDI2C, l’intégrateur système doit contacter le fournisseur du pilote de capteur pour plus d’informations sur la meilleure façon de vérifier que le pilote effectue correctement la gestion de l’alimentation. Les fournisseurs de pilotes de capteurs sont encouragés à utiliser le suivi d’événements pour Windows (ETW) pour toutes les décisions de gestion de l’alimentation dans leur pilote de périphérique, et à fournir des exemples de documentation aux intégrateurs système pour décrire comment vérifier le bon fonctionnement de gestion de l’alimentation à l’aide des événements ETW et du Kit de ressources de performances Windows (WPT).

Pilote de capteur tiers

Si le système utilise un pilote de capteur tiers, l’intégrateur système doit contacter le fournisseur du pilote de capteur pour plus d’informations sur la meilleure façon de vérifier que le pilote effectue correctement la gestion de l’alimentation. Les fournisseurs de pilotes de capteurs sont encouragés à utiliser le suivi d’événements pour Windows (ETW) pour toutes les décisions de gestion de l’alimentation dans leur pilote de périphérique, et à fournir des exemples de documentation aux intégrateurs système pour décrire comment vérifier le bon fonctionnement de gestion de l’alimentation à l’aide des événements ETW et du Kit de ressources de performances Windows (WPT).

Si le pilote lance une transition vers D3 lorsque tous ses périphériques de capteur ne sont plus utilisés, vous pouvez suivre les instructions de la liste suivante pour vérifier que cette transition se produit comme prévu et qu’un périphérique de capteur retourne à D0 lorsqu’une application ou le système d’exploitation doit réutiliser l’appareil.

La méthode axée sur le logiciel utilise l’instrumentation Windows pour vérifier que l’IRP D3 passe à travers la pile des pilotes de périphérique pour le périphérique de capteur. Le gestionnaire d’alimentation Windows dispose d’une instrumentation ETW intégrée, qui comprend une instrumentation pour la détection des irps Dx (demandes d’alimentation des appareils). Pour afficher ces informations en mode manuel, téléchargez windows Performance Toolkit et installez-les sur le système en cours de test.

Après avoir installé Windows Performance Toolkit, suivez ces instructions pour démarrer une trace XPerf en mode utilisateur :

  1. Ouvrez une fenêtre d’invite de commandes en tant qu’administrateur.

  2. Accédez au dossier \%ProgramFiles%\Windows Kits\8.0\Windows Performance Toolkit\ .

  3. Pour démarrer Xperf, exécutez la commande suivante : xperf.exe -start power_session -on Microsoft-Windows-Kernel-Power

  4. Faites passer le système à la veille moderne en appuyant sur le bouton Marche/Arrêt.

  5. Patientez 30 secondes.

  6. Faites sortir le système de la veille moderne en appuyant sur le bouton Marche/Arrêt.

  7. Exécutez la commande suivante pour arrêter la journalisation des événements : xperf.exe -stop power_session

  8. Convertissez le fichier de trace binaire au format .csv et lisible par l’utilisateur : xperf.exe –i \user.etl > power.txt

  9. Ouvrez le fichier Power.txt dans un éditeur de texte et recherchez l’ID matériel de l’appareil capteur. Vous pouvez rechercher l’ID matériel de l’appareil de capteur sous l’onglet Détails des propriétés de l’appareil dans Gestionnaire de périphériques sous Chemin d’accès de l’instance de l’appareil. Dans l’exemple suivant, le chemin d’instance de l’appareil du capteur est ACPI\MST0731\2&daba3ff&0.

  10. L’initiation de l’IRP D3 pour l’appareil capteur est indiquée par un événement de type Microsoft-Windows-Kernel-Power/IRP/Stop qui a le chemin d’accès instance de l’appareil du capteur et une valeur de dernier événement de 3, ce qui indique que l’état cible est D3. L’événement de sortie suivant du fichier Power.txt affiche le début de l’IRP D3. Les deux dernières valeurs de paramètre pour cet événement (affichées à l’extrême droite) indiquent le chemin d’accès et l’état cible de l’appareil instance.

    Microsoft-Windows-Kernel-Power/Irp/Start, 7605393, "Unknown" (4), 256, 0,,,,, 0x868e2728, 1, 2, 0x85fb56e0, 25, "ACPI\MSFT0731\2&daba3ff&0", 3

  11. Cet événement doit être journalisé près du début du fichier de sortie Power.txt. La valeur 0x868e2728 du paramètre dans l’événement de sortie précédent est un pointeur vers la structure IRP pour l’IRP D3. En recherchant les événements suivants dans le fichier de trace qui ont ce même pointeur IRP, vous pouvez suivre la progression de l’IRP D3 à mesure qu’il circule dans la pile de pilotes pour le périphérique capteur.

  12. Microsoft-Windows-Kernel-Power/Irp/Start, 7605393, "Unknown" (4),256, 0,,,,, 0x868e2728, 1, 2, 0x85fb56e0, 25, "ACPI\ATML1000\2&daba3ff&0", 3

  13. Microsoft-Windows-Kernel-Power/Driver/Start, 7605416, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fb56e0, "\Driver\sensdrv"

  14. Microsoft-Windows-Kernel-Power/Driver/Stop, 7605515, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fb56e0

  15. Microsoft-Windows-Kernel-Power/Driver/Start, 7605522, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fab6a0, "\Driver\i2cdrv"

  16. Microsoft-Windows-Kernel-Power/Driver/Stop, 7608342, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fab6a0

  17. Microsoft-Windows-Kernel-Power/Driver/Start, 7608351, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x857ffb90, "\Driver\ACPI"

  18. Microsoft-Windows-Kernel-Power/Driver/Stop, 7608416, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x857ffb90

  19. Microsoft-Windows-Kernel-Power/Driver/Start, 7608424, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fb56e0, "\Driver\sensdrv"

Lorsque le pilote WINDOWS ACPI, Acpi.sys, traite l’IRP D3, Acpi.sys exécute la méthode de contrôle _PR3 correspondante. Le concepteur de microprogrammes système fournit cette méthode de contrôle pour indiquer quelle ressource d’alimentation doit être désactivée pour que le périphérique du capteur entre dans l’état D3. Acpi.sys exécute également la méthode de contrôle _OFF sous ressource d’alimentation.

Vous pouvez utiliser un processus similaire pour vérifier que l’appareil de capteur retourne à D0 lorsque la plateforme quitte la veille moderne et que l’affichage s’allume. Un événement Microsoft-Windows-Kernel-Power/IRP/Start pour l’appareil de capteur sera journalisé avec un état cible de 0 (indiquant D0) immédiatement après que le bouton d’alimentation a été appuyé pour réveiller le système, et que le système d’exploitation ou une application reprise demande les données du capteur.

Liste de contrôle de gestion de l’alimentation du capteur et du microcontrôleur de capteur

Les intégrateurs système et les fournisseurs d’appareils de capteur doivent utiliser la liste de contrôle suivante pour s’assurer que la conception de la gestion de l’alimentation du système est compatible avec Windows 8 et versions ultérieures.

  • Sélectionnez le matériel de capteur compatible avec le pilote HIDI2C intégré et la pile de pilotes HIDSensor.
  • Sélectionnez le matériel du capteur dont la consommation d’énergie de secours est inférieure à un milliwatt.
  • Vérifiez que le matériel du capteur et le pilote tiers (si nécessaire) prennent en charge la gestion de l’alimentation inactive au moment de l’exécution lorsque l’affichage est activé :
    • Les capteurs doivent être mis hors tension et entrer automatiquement D3 lorsqu’ils ne sont pas utilisés par une application ou le système d’exploitation.
    • Les capteurs doivent s’allumer et entrer automatiquement D0 lorsque les données du capteur sont demandées par une application ou le système d’exploitation.
    • Le pilote de capteur tiers doit être implémenté en tant que pilote WDF et peut être basé sur l’exemple de pilote SpbAccelerometer.
    • L’interrogation des informations du capteur doit être limitée et activée au niveau de consommation d’énergie le plus bas possible. Par exemple, l’interrogation d’un capteur analogique doit se produire derrière un microcontrôleur ou un autre matériel de contrôle de faible consommation, ce qui peut interrompre le SoC lorsque de nouvelles données de capteur dépassent une valeur de détection de seuil. Évitez d’interroger le capteur dans un pilote qui s’exécute régulièrement sur le SoC, ce qui peut augmenter considérablement la consommation d’énergie globale du système.
  • Si le matériel du capteur utilise un pilote tiers :
    • L’intégrateur système doit communiquer avec le fournisseur d’appareils de capteur pour comprendre comment implémenter la gestion de l’alimentation pour le matériel du capteur.
    • Si le matériel du capteur consomme plus d’un milliwatt en mode d’alimentation de secours, placez le matériel du capteur sur une barre d’alimentation autonome contrôlée par une ligne GPIO à partir du SoC. Fournissez des références à la ressource d’alimentation ACPI requise, aux méthodes de contrôle _ON/_OFF et à la ressource d’alimentation sous le périphérique de capteur dans l’espace de noms ACPI (comme décrit ci-dessous).
    • Si le matériel du capteur utilise une ligne GPIO du SoC pour basculer l’appareil en mode d’alimentation de secours, assurez-vous que le microprogramme ACPI du système inclut les méthodes de contrôle _PS3 et _PS0 appropriées (comme décrit ci-dessous).
  • Si le matériel du capteur comprend un microcontrôleur de capteur qui a des périphériques de capteur connectés derrière lui, le microcontrôleur de capteur doit disposer d’un moyen de mettre hors tension les appareils du capteur. Les appareils peuvent être mis hors tension à l’aide d’une communication en bande via le bus qui connecte le microcontrôleur aux appareils, ou d’une ligne GPIO du microcontrôleur aux appareils.
  • Si le matériel du capteur nécessite une ligne GPIO du SoC pour basculer l’appareil en mode d’alimentation de secours :
    • Assurez-vous que la ligne GPIO du SoC répond aux exigences de niveau et de déclencheur définies par le fournisseur de matériel du capteur.
    • Dans l’espace de noms ACPI, décrivez le code pin SOC GPIO dans le cadre d’une région d’opération GPIO.
    • Fournissez une méthode de contrôle _PS3 sous le périphérique de capteur dans l’espace de noms ACPI pour activer le signal sur la ligne GPIO si nécessaire pour basculer le matériel du capteur en mode d’alimentation de secours.
    • Fournissez une méthode de contrôle _PS0 sous le périphérique de capteur dans l’espace de noms ACPI pour activer le signal sur la ligne GPIO si nécessaire pour basculer le matériel du capteur en mode inactif ou actif après le basculement de l’appareil vers D0.
  • Si le matériel du capteur consomme plus d’un milliwatt en mode d’alimentation de secours :
    • Placez tout le matériel du capteur sur une barre d’alimentation qui peut être activée et désactivée par une ligne GPIO à partir du SoC. Ou, si la plateforme contient plusieurs capteurs qui ont des exigences de tension d’alimentation différentes, fournissez des rails distincts qui peuvent être commutés indépendamment.
    • Décrire la barre d’alimentation commutable en tant que ressource d’alimentation dans l’espace de noms ACPI.
    • Sous cette ressource d’alimentation, fournissez les méthodes de contrôle _ON et _OFF qui activent et désactivent la barre d’alimentation à l’aide d’une ligne GPIO décrite dans le cadre d’une région d’opération GPIO.
    • Dans l’espace de noms ACPI, fournissez _PR3 et _PR0 objets qui désignent la ressource d’alimentation pour le matériel du capteur.
    • Assurez-vous que les méthodes _ON et _OFF incorporent les exigences de débochage ou de minutage du matériel du capteur.
  • Testez et validez la gestion de l’alimentation au moment de l’exécution des appareils de capteur dans la plateforme. Collaborez étroitement avec le fournisseur de matériel du capteur pour valider la gestion de l’alimentation au moment de l’exécution lorsque l’affichage du système est activé.
  • Testez et vérifiez que le matériel du capteur passe en mode de secours ou de mise hors tension lorsque la plateforme passe en mode de secours moderne.
    • Si le matériel du capteur utilise les piles de pilotes de capteur HIDI2C + HID incluses avec Windows, consultez Test et validation pour plus d’informations.
    • Si le matériel du capteur utilise un pilote tiers, contactez le fournisseur du pilote de capteur pour connaître la méthodologie de test recommandée.
    • Si le pilote de capteur effectue une transition vers D3 dans le cadre de son entrée en mode de secours ou de suppression d’alimentation, utilisez le Kit de ressources de performances Windows comme décrit dans Test et validation. Vérifiez que le matériel du capteur entre en D3 lorsque la plateforme entre en veille moderne, et que le matériel du capteur entre dans D0 après que le système a quitté la veille moderne et que les informations du capteur sont à nouveau demandées.
  • Mesurez la consommation d’énergie du matériel du capteur en mode veille ou hors tension.
  • Lancez plusieurs transitions vers et hors du mode de secours moderne, puis testez le fonctionnement des appareils de capteur et des applications qui utilisent les informations du capteur lorsque l’affichage est activé.