Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vue d’ensemble de la topologie
En termes de prise en charge du pilote Windows, le sous-système de la caméra contient des composants hors système sur une puce (SoC), tels que le capteur de caméra, une unité facultative de focus automatique et un flash, et éventuellement d’autres matériels associés. Le matériel de la caméra inclut également les unités de traitement d’images sur soC.
L’alimentation du matériel de traitement d’image sur le SoC doit être gérée par le plug-in du moteur d’alimentation (PEP) fourni par le fournisseur du SoC. Le matériel de traitement d’images doit être énuméré en tant qu’appareil unique dans ACPI et géré par un pilote WDF (Windows Driver Framework). Activez la gestion système du délai d’inactivité de l’appareil de traitement d’image pour que le PEP puisse contrôler n’importe quelle topologie de partage d’horloge et de rail d’alimentation propre au SoC. Tout matériel de traitement d’images soC doit être éteint chaque fois que l’appareil photo est désactivé.
Certaines conceptions soC ont un bloc de fonction partagé qui effectue à la fois la capture de caméra et d’autres traitements image et graphique. Dans une plateforme qui utilise un tel SoC, le PEP fourni par le fournisseur soC doit référencer l’utilisation de ce bloc partagé et le désactiver lorsque tous les clients sont inactifs.
Dans certaines plateformes, le matériel de traitement d’images soC peut être partagé entre deux appareils photo ou plus. Dans ce cas, le matériel de traitement d’images est multiplexé entre les appareils photo. Les composants de chaque appareil photo doivent être décrits indépendamment dans l’espace de noms ACPI et doivent être énumérés en tant qu’objets d’appareil distincts pour le gestionnaire Windows Plug-and-Play.
Les plateformes qui ont deux caméras incorporées (ou plus) sont requises par Windows pour pouvoir utiliser (autrement dit, diffuser du contenu à partir de) les deux caméras (ou toutes) en même temps avec n’importe quelle combinaison des modes et résolutions pris en charge par les caméras individuelles. Les fournisseurs soC qui ne peuvent pas répondre à cette exigence doivent travailler directement avec Microsoft pour obtenir des conseils sur l’implémentation de leurs pilotes et microprogramme système.
Configuration d’alimentation prise en charge
Windows prend en charge une configuration de gestion de l’alimentation matérielle unique pour les appareils photo dans les plateformes de secours modernes. En bref, chaque capteur de caméra doit être connecté au système sur une puce (SoC) via un lien MIPI-CSI, et peut éventuellement être connecté à un bus I2C et à une ou plusieurs broches GPIO. L’appareil de capteur de caméra, son flash facultatif et tous les autres composants de caméra soC hors soC doivent être placés sur un rail d’alimentation qui peut être allumé et désactivé par microprogramme ACPI.
Si, en plus d’un lien MIPI-CSI, l’appareil photo a des broches I2C ou GPIO pour contrôler le capteur ou l’appareil flash de la caméra, ces broches doivent être acheminées vers les broches correspondantes du contrôleur I2C ou du contrôleur GPIO sur le SoC. L’intégrateur système doit énumérer les ressources I2C et GPIO pour le capteur de caméra et l’appareil flash dans un objet _CRS sous l’appareil photo dans l’espace de noms ACPI.
Note L’intégrateur système doit travailler avec le développeur du pilote du sous-système de caméra pour déterminer la façon dont les pilotes de caméra attendent que les ressources GPIO et I2C soient ordonnées. Par exemple, un pilote qui reçoit deux ressources I2C fait la distinction entre elles en fonction de l’ordre dans lequel elles apparaissent dans la liste des ressources. De même, un pilote qui reçoit trois ressources GPIO s’attend à ce que ces ressources soient répertoriées dans un ordre particulier. L’intégrateur système doit énumérer les ressources I2C et GPIO dans le même ordre dans l’objet _CRS.
Le capteur de caméra et l’appareil flash doivent être placés sur un rail d’alimentation qui peut être activé et désactivé par les méthodes de contrôle ACPI. Nous vous recommandons d’utiliser une broche GPIO à partir du SoC pour contrôler le matériel de commutateur d’alimentation. Le GPIO doit être énuméré dans une région d’opération GPIO afin que son état puisse être modifié par les méthodes de contrôle ACPI. L’intégrateur système doit décrire la ressource d’alimentation d’un appareil photo (capteur, flash ou tout autre composant de caméra) dans l’espace de noms ACPI. Cette ressource doit inclure une méthode _ON et une méthode _OFF pour modifier l’état du signal GPIO routé vers le matériel de commutateur d’alimentation. Sous le périphérique de caméra dans l’espace de noms ACPI, l’intégrateur système doit fournir un objet _PR0 et un objet _PR3 qui font référence à la ressource d’alimentation.
Lorsque le pilote du contrôleur de la caméra détecte que toutes les broches de diffusion en continu sont entrées dans l’état KSSTATE_STOP, il utilise une interface privée pour indiquer aux pilotes contrôlant les composants de la caméra hors du SoC que la capture n’est plus nécessaire. À son tour, ces pilotes appellent la méthode IWDFDevice2::ResumeIdle pour indiquer au cadre de pilotes que leur matériel est inactif. En réponse, l’infrastructure du pilote lance une transition vers D3, ce qui entraîne le flux d’un IRP D3 à travers la pile de pilotes de périphérique de caméra. (Un IRP D3 est un IRP IRP_MJ_POWER qui spécifie une valeur d’énumération DEVICE_POWER_STATE de PowerDeviceD3.) Le pilote ACPI Windows, Acpi.sys, observe l’IRP D3 et exécute la méthode _OFF de la ressource d’alimentation identifiée par l’objet _PR3 sous le périphérique de caméra dans l’espace de noms ACPI.
La dernière phrase du paragraphe précédent suppose que la ressource d’alimentation ne fournit pas d’alimentation aux appareils autres que l’appareil photo. Si d’autres appareils ont des références à cette ressource d’alimentation, Acpi.sys exécute la méthode _OFF uniquement après que tous les autres appareils qui référencent la ressource d’alimentation ont passé à D3. Pour plus d’informations, consultez Activation des transitions vers D3cold.
Le retour du matériel de la caméra à l’état d’alimentation actif est un processus similaire. Lorsque le pilote du contrôleur de caméra détecte la première broche de capture de flux pour entrer dans l’état KSSTATE_ACQUIRE, le pilote du contrôleur de caméra communique avec les pilotes pour les autres composants on-SoC et off-SoC qui composent le sous-système de caméra. En réponse, le pilote qui contrôle l’unité de traitement d’images soC appelle la méthode IWDFDevice2 ::StopIdle, qui informe le PEP que le matériel de l’unité de traitement d’image doit être activé. Le pilote du contrôleur de caméra indique aux pilotes contrôlant les composants de la caméra hors du SoC qu’ils doivent revenir à l’état actif. À leur tour, ces pilotes appellent StopIdle pour informer l’infrastructure du pilote que le matériel n’est plus inactif, ce qui déclenche le flux d’un IRP D0 à travers la pile de pilotes de périphérique de caméra. (Un IRP D0 est un IRP IRP_MJ_POWER qui spécifie une valeur d’énumération DEVICE_POWER_STATE de PowerDeviceD0.) Acpi.sys répond à l’IRP D0 en exécutant la méthode _ON de la ressource d’alimentation identifiée par l’objet _PR0 sous le périphérique de caméra dans l’espace de noms ACPI.
Si la plateforme a plusieurs périphérique de caméra, chacun d’entre eux doit avoir son propre rail d’alimentation et sa propre ressource d’alimentation commutables indépendamment, avec une description dans l’espace de noms ACPI. Pour chaque appareil photo dans l’espace de noms ACPI, l’intégrateur système doit fournir un objet _PLD qui indique si l’appareil photo est sur l’avant ou à l’arrière de l’ordinateur. Si un appareil photo est intégré dans le couvercle d’un ordinateur à facteur de forme de palourde et fait face à l’utilisateur lorsque le couvercle est ouvert, l’objet _PLD de cet appareil doit indiquer que la caméra est sur l’avant de la plateforme. Si un appareil photo est intégré au couvercle d’un ordinateur à facteur de forme de palourde et s’éloigne de l’utilisateur lorsque le couvercle est ouvert, l’objet _PLD de cet appareil doit indiquer que la caméra est à l’arrière du système.
Problèmes de sortie de l’état de veille
Le matériel du périphérique de caméra ne doit pas prendre en charge le réveil. Windows ne s’attend pas à ce que les périphériques de caméra soient en mesure de sortir le SoC de son état d’alimentation le plus faible pendant la veille moderne. De nombreux téléphones cellulaires permettent au SoC de se réveiller du sommeil lorsque l’utilisateur appuie sur le bouton de l’appareil photo. Le bouton de l’appareil photo est traité par Windows comme un appareil d’entrée utilisateur dont l’opération est distincte et indépendante de l’intégration ou de la gestion de l’alimentation de l’appareil photo, de son capteur et du flash facultatif.