Condividi tramite


Gestione della potenza della fotocamera

Modalità di risparmio energia

I componenti off-System in un chip (SoC) del sottosistema della fotocamera devono supportare due modalità di risparmio energia. I componenti della fotocamera devono supportare una modalità attiva in cui il dispositivo fotocamera trasmette attivamente contenuto a un'applicazione. Inoltre, i componenti della fotocamera devono supportare una modalità di alimentazione rimossa in cui il dispositivo fotocamera viene disattivato, l'alimentazione viene rimossa e il dispositivo fotocamera consuma zero watt. Nella tabella seguente vengono descritte le modalità di risparmio energia attive e rimosse per il dispositivo fotocamera.

Mode Descrizione Stato di alimentazione del dispositivo (Dx) Consumo medio di energia elettrica Uscire dalla latenza per l'attività Meccanismo di transizione

Attivo (streaming)

Il dispositivo fotocamera è attivamente in streaming contenuto in un'applicazione. Il contenuto potrebbe essere full-motion, anteprima o ancora acquisizione di foto.

Sensore, AF e flash specifico.

N/D

Transizione D0 avviata dal software.

Un'applicazione ha avviato lo streaming impostando lo stato di un pin di acquisizione su KSSTATE_ACQUIRE.

Alimentazione - rimossa

Il dispositivo fotocamera non è in streaming contenuto in nessuna applicazione. Nessun contesto viene mantenuto sul sensore della fotocamera, sul dispositivo flash o sul motore di messa a fuoco automatica.

0 watt

< 200 millisecondi al primo frame (vedere la tabella seguente).

Transizione D3 avviata dal software.

Lo stato di tutti i pin di streaming è stato impostato su qualsiasi valore diverso da KSSTATE_RUN.

Nota Windows prevede che il tempo di transizione dalla modalità attiva alla modalità di alimentazione (la latenza disattivata) sia inferiore a 100 millisecondi. La maggior parte degli sforzi di gestione delle energia è concentrata sulla riduzione del tempo di transizione dalla modalità di alimentazione rimossa alla modalità attiva (la latenza in corso).

Le stesse due modalità di risparmio energia, attive e rimosse, devono essere supportate dalle unità di elaborazione delle immagini on-SoC. Il fornitore di SoC definisce i singoli componenti che comprendono le unità di elaborazione delle immagini e i relativi stati di risparmio energia. È consigliabile che un singolo driver controlli le unità di elaborazione delle immagini on-SoC e che tutte le unità di elaborazione delle immagini per l'acquisizione di fotocamere vengano presentate al plug-in del motore di alimentazione (PEP) come singolo componente gestito dall'alimentazione.

Meccanismi di risparmio energia software

Entrambe le unità di elaborazione delle immagini on-System su un chip (SoC) e i componenti della fotocamera off-SoC devono utilizzare nessuna potenza (zero watt) quando il sistema è in standby connesso e lo schermo viene disattivato. Il meccanismo software primario per la gestione della potenza è il conteggio dei riferimenti del pin di acquisizione della fotocamera. Questo numero di riferimenti viene mantenuto dal driver del controller della fotocamera, ovvero un minidriver AVStream. Questo meccanismo di gestione energia di base può essere usato in qualsiasi momento in cui il sistema viene attivato, inclusi i tempi in cui la visualizzazione del sistema è attivata.

Il driver del controller della fotocamera deve inoltrare le transizioni dello stato di risparmio energia ai driver che controllano componenti off-SoC, ad esempio il sensore della fotocamera, lo stato di messa a fuoco automatico e il flash. In risposta, i driver che controllano questi dispositivi devono intraprendere azioni specifiche per modificare gli stati di alimentazione e rimuovere o applicare energia.

Il sottosistema della fotocamera deve essere esposto a Windows tramite un singolo minidriver AVStream denominato driver del controller della fotocamera. È consigliabile che il driver del controller della fotocamera non accede direttamente all'hardware e non gestisca direttamente i componenti hardware. Invece, il driver del controller della fotocamera deve inoltrare richieste di risparmio energia e hardware ad altri driver che comprendono il sottosistema della fotocamera.

L'hardware di elaborazione delle immagini on-SoC deve essere gestito dal plug-in del motore di alimentazione SoC (PEP). L'hardware di elaborazione delle immagini deve essere gestito da un driver WDF (Windows Driver Frameworks) e questo driver deve abilitare la cooperazione con il PEP impostando il membro IdleTimeout nella struttura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS su SystemManagedIdleTimeout. Questa impostazione consente al PEP di controllare qualsiasi topologia di condivisione di clock e power rail univoca per l'hardware SoC. Il driver che controlla l'unità di elaborazione delle immagini nel SoC deve rappresentare l'intera unità di elaborazione delle immagini come un singolo componente gestito da alimentazione in modo che le funzionalità WDF predefinite per la gestione energia possano essere usate.

I componenti del sottosistema della fotocamera off-SoC devono essere gestiti da uno o più driver in modalità kernel (KMDF). I driver per i componenti off-SoC devono passare allo stato di alimentazione rimosso (D3) quando i componenti non sono più necessari per l'acquisizione della fotocamera. Inoltre, i driver per i componenti off-SoC devono abilitare D3cold, che consente al sottosistema ACPI sottostante di modificare lo stato delle linee GPIO per applicare e rimuovere l'alimentazione. Per altre informazioni, vedere Supporto di D3cold in un driver.

Il diagramma a blocchi seguente mostra l'architettura del driver consigliata.

architettura del driver consigliata per il sottosistema della fotocamera

Tutti i driver che comprendono il sottosistema della fotocamera, tra cui il driver del controller della fotocamera, il driver dell'unità di elaborazione delle immagini e i driver per i componenti della fotocamera off-SoC, devono essere enumerati nello stesso file di installazione del driver (.inf). Tutti i driver del sottosistema della fotocamera devono essere membri della classe di configurazione del dispositivo PnP di imaging. ClassGuid per i dispositivi di imaging è {6bdd1fc6-810f-11d0-bec7-08002be2092f}.

Ogni driver che rappresenta un singolo componente della fotocamera deve essere enumerato come singolo dispositivo nello spazio dei nomi ACPI.

Stati attivi e rimossi dall'alimentazione

Il driver del controller della fotocamera deve passare i dispositivi della fotocamera allo stato di alimentazione rimosso quando nessuna applicazione trasmette contenuto dal dispositivo fotocamera. Un'applicazione può arrestare lo streaming perché è stata chiusa dall'utente o viene passata in background e viene sospesa.

Se un'applicazione avvia lo streaming da una fotocamera i cui dispositivi si trovano nello stato di alimentazione rimosso, il driver del controller della fotocamera deve eseguire la transizione dei dispositivi fotocamera allo stato attivo entro 100 millisecondi.

Per modificare gli stati di alimentazione dei vari componenti del sottosistema della fotocamera, i driver del controller della fotocamera usano interfacce proprietarie per comunicare con gli altri driver che comprendono il sottosistema della fotocamera. Per eseguire una query sull'interfaccia appropriata, un driver del sottosistema fotocamera deve usare il metodo standard, che consiste nell'inviare una richiesta di I /O IRP_MN_QUERY_INTERFACE che recupera un set di puntatori a funzione.

Il driver del controller della fotocamera deve posizionare il dispositivo fotocamera nello stato di alimentazione rimosso quando tutti i pin di streaming hanno immesso lo stato di KSSTATE_STOP . Windows sospende automaticamente le applicazioni in primo piano quando l'utente preme il pulsante di alimentazione e il sistema entra in standby connesso. Quando un'applicazione di acquisizione viene sospesa, le API di acquisizione della fotocamera fornite dalla Windows Runtime vengono notificate e cambieranno lo stato dei pin di acquisizione della fotocamera, causando loro di immettere lo stato di KSSTATE_STOP.

Quando il primo pin di streaming entra nello stato KSSTATE_ACQUIRE , il driver del controller della fotocamera deve posizionare il dispositivo fotocamera, inclusa l'unità di elaborazione delle immagini on-SoC, nello stato attivo.

Funzionalità della fotocamera associata

Il sensore della fotocamera e i dispositivi flash potrebbero avere funzioni aggiuntive a livello di piattaforma che devono essere gestite dal driver. Queste funzioni possono includere quanto segue:

  • Abilitazione, disabilitazione e configurazione del sensore della fotocamera sul bus I2C.
  • Configurazione della frequenza di burst flash e del livello di luminosità sul bus I2C.
  • Rilevamento delle condizioni termiche dal modulo flash tramite linee GPIO dal modulo flash al SoC.

Per implementare queste funzioni, gli sviluppatori di driver del dispositivo fotocamera devono usare i metodi e le indicazioni riepilogate nella tabella seguente.

Funzione Descrizione Connessione hardware/firmware Meccanismo software
Configurazione del sensore Enumera le funzionalità dell'hardware del sensore della fotocamera o configura la modalità corrente dell'operazione. Comunicazione sul bus I2C. Le risorse I2C sono descritte nel metodo _CRS nel dispositivo fotocamera nello spazio dei nomi ACPI.

L'interfaccia di richiesta di input/output (SPB) semplice (SPB) viene usata per comunicare con il controller host I2C e il dispositivo sensore della fotocamera.

Rilevamento eventi del sensore Generare eventi o indicare lo stato usando linee GPIO dal sensore della fotocamera al SoC. Risorse GPIO fornite al dispositivo fotocamera. Queste risorse sono descritte nel metodo _CRS nel dispositivo fotocamera nello spazio dei nomi ACPI. I pin GPIO che segnalano gli eventi devono essere descritti come risorse di interruzione GPIO.

L'interruzione viene elaborata dal driver in risposta all'evento GPIO.

L'interfaccia richiesta di I/O SPB viene usata per comunicare con il dispositivo sensore per determinare la causa dell'interruzione.

Configurazione flash Configurare il dispositivo flash per la frequenza di burst, il numero di LED connessi o altre proprietà. Comunicazione sul bus I2C. Le risorse I2C sono descritte nel metodo _CRS nel dispositivo fotocamera nello spazio dei nomi ACPI.

L'interfaccia richiesta di I/O SPB viene usata per comunicare con il controller host I2C e il dispositivo del sensore della fotocamera.

Coordinamento con il driver dell'unità di elaborazione delle immagini Avviare e coordinare l'acquisizione con il circuito di elaborazione delle immagini nel SoC. N/D

L'interfaccia privata viene esposta dal driver che gestisce le unità di elaborazione delle immagini.

Enumerazione del dispositivo fotocamera

Per identificare i dispositivi della fotocamera nella piattaforma, le applicazioni in genere esegue una query sulla gestione Plug and Play (PnP) per le istanze dei dispositivi fotocamera. Ogni istanza di PnP corrisponde a un singolo dispositivo fotocamera. Per identificare tale istanza, l'integratore di sistema definisce un dispositivo fotocamera nello spazio dei nomi ACPI. Un dispositivo fotocamera può trasmettere contenuto a un'unica applicazione alla volta. Tuttavia, un'applicazione può trasmettere da più dispositivi fotocamera contemporaneamente.

Ogni dispositivo fotocamera rappresentato dal driver del controller della fotocamera (minidriver AVStream) deve essere enumerato nello spazio dei nomi ACPI come dispositivo separato figlio del driver grafico.

Come caso speciale, se la piattaforma SoC non è in grado di trasmettere contemporaneamente contenuto da tutti i dispositivi della fotocamera nella piattaforma in qualsiasi combinazione delle relative risoluzioni o modalità segnalate, è possibile enumerare invece un singolo dispositivo fotocamera. Tuttavia, questa implementazione richiede un'attenta considerazione e deve essere eseguita solo in collaborazione diretta con Microsoft.

I dispositivi che rappresentano il resto del sottosistema della fotocamera, tra cui l'unità di elaborazione delle immagini on-SoC e il sensore di fotocamera off-SoC, lo stato attivo automatico e il flash, devono essere enumerati come uno o più dispositivi nello spazio dei nomi ACPI. L'unità di elaborazione immagini on-SoC deve essere enumerata come dispositivo separato dai dispositivi che rappresentano i componenti off-SoC della fotocamera.

Elenco di controllo del risparmio energia della fotocamera

Gli integratori di sistema, i fornitori di sensori della fotocamera e i fornitori di sistemi in un chip (SoC) devono usare l'elenco di controllo in questo articolo per assicurarsi che la progettazione della gestione energia del sistema sia compatibile con Windows 10.

  • L'integratore di sistema deve comunicare e collaborare con il fornitore soC durante la selezione dei componenti del sensore della fotocamera e l'integrazione dei dispositivi della fotocamera.
  • Lo sviluppatore del driver del controller della fotocamera deve eseguire le operazioni seguenti:
    • Disattivare l'alimentazione all'hardware della fotocamera quando le applicazioni non sono più in streaming dal dispositivo fotocamera. Questo si verifica quando tutti i pin di acquisizione si trovano nello stato KSSTATE_STOP.
    • Attivare l'alimentazione all'hardware della fotocamera quando un'applicazione avvia lo streaming da uno dei pin di acquisizione sul dispositivo fotocamera.
    • Sviluppare un driver KMDF che gestisce l'unità di elaborazione delle immagini on-SoC. Il driver del controller della fotocamera deve usare interfacce driver personalizzate per indicare al driver dell'unità di elaborazione delle immagini di avviare o terminare l'acquisizione della fotocamera.
    • Assicurarsi che il driver dell'unità di elaborazione delle immagini sia registrato con il framework di gestione energia di Windows (PoFx) in modo che il fornitore di SoC possa controllare la gestione della potenza dell'hardware dell'unità di elaborazione delle immagini.
    • Sviluppare un driver Windows Driver Frameworks (WDF) per gestire ogni componente hardware che gestisce l'hardware della fotocamera off-SoC, tra cui il sensore della fotocamera, lo stato attivo automatico e il flash facoltativo. Il driver del controller della fotocamera deve usare interfacce driver personalizzate per indicare ai driver l'hardware della fotocamera off-SoC per avviare o terminare l'acquisizione della fotocamera.
    • Assicurarsi che i driver che gestiscono l'hardware della fotocamera off-SoC avviano una transizione D3 quando i componenti della fotocamera devono essere spenti in modo che ACPI sia informato della transizione D3 e possa rimuovere l'alimentazione dai componenti. • Assicurarsi che i driver che gestiscono l'hardware della fotocamera off-SoC avviano una transizione D0 quando i componenti della fotocamera devono essere alimentati in modo che ACPI sia informato della transizione D0 e possano applicare alimentazione ai componenti.
    • Sviluppare qualsiasi codice driver per la gestione della configurazione dell'hardware del sensore della fotocamera o del dispositivo flash.
    • Informare l'integratore di sistema sull'ordinamento previsto di tutte le risorse GPIO e I2C necessarie per gestire l'hardware del sensore della fotocamera o il dispositivo flash.
    • Assicurarsi che tutti i driver che comprendono il sottosistema fotocamera siano enumerati nello stesso file di installazione del driver (con estensione inf).
    • Assicurarsi che tutti i driver che comprendono il sottosistema della fotocamera siano membri della classe di configurazione del dispositivo PnP per l'immagine. ClassGuid per i dispositivi di imaging è {6bdd1fc6-810f-11d0-bec7-08002be2092f}.
  • L'integratore di sistema deve progettare il firmware ACPI della piattaforma per eseguire le operazioni seguenti:
    • Enumera ogni dispositivo fotocamera come dispositivo separato nello spazio dei nomi ACPI.
    • Includere un oggetto _PLD in ogni dispositivo della fotocamera nello spazio dei nomi ACPI per indicare se la fotocamera si trova sulla parte anteriore o posteriore del computer.
    • Includere una risorsa di alimentazione nella radice dello spazio dei nomi ACPI per ogni dispositivo fotocamera. Tutti i componenti hardware off-SoC per un determinato dispositivo fotocamera (sensore, AF, flash e così via) devono trovarsi in una risorsa di alimentazione.
    • Implementare i metodi di controllo _ON e _OFF per ogni risorsa di alimentazione per modificare lo stato del pin GPIO dal SoC che guida l'hardware di cambio della barra di alimentazione.
    • Specificare i metodi _PR0 e _PR3 in ogni dispositivo fotocamera nello spazio dei nomi per fare riferimento alla risorsa di alimentazione per ogni dispositivo fotocamera e il relativo hardware associato.
    • Specificare un oggetto _CRS in ogni dispositivo fotocamera nello spazio dei nomi ACPI per enumerare le risorse GPIO e I2C per il sensore della fotocamera e l'hardware flash. Le risorse GPIO e I2C devono essere nell'ordine specificato dallo sviluppatore del driver del sensore della fotocamera.
  • L'integratore di sistema deve progettare l'hardware della piattaforma e il routing dell'alimentazione in modo che:
    • Ogni dispositivo fotocamera ha una propria barra di alimentazione, che può essere controllata indipendentemente dalle linee di alimentazione per gli altri dispositivi della fotocamera e che può essere attivata e disattivata da un pin GPIO dal SoC.
  • L'integratore di sistema deve testare e verificare che:
    • L'hardware del dispositivo fotocamera non usa energia (zero watt) quando il dispositivo fotocamera non è in uso da un'applicazione. L'integratore di sistema deve usare hardware instrumentato per misurare questo consumo di energia.