Condividi tramite


Risparmio energia sensori

Un PC mobile incorpora in genere dispositivi sensore come un sensore di luce ambientale (ALS), accelerometro 3D, giroscopio 3D o magnetometro 3D. Quando un dispositivo sensore non viene usato dal sistema operativo o da un'applicazione, il software di risparmio energia può impostare il dispositivo su una modalità a basso consumo per ridurre il consumo di energia. In un PC che supporta il modello di alimentazione standby moderno, i dispositivi sensore dovrebbero passare a una modalità a basso consumo poco dopo che il PC entra in standby moderno e rimangono in questa modalità fino a quando il PC non esce dallo standby moderno.

Questo articolo illustra come implementare il risparmio energia per i dispositivi sensore. Inoltre, questo articolo illustra la gestione del risparmio energia del microcontroller del sensore facoltativo (detto anche hub di fusione del sensore o MCU del sensore) e i dispositivi di sensori aggregati. Ad esempio, un dispositivo sensore bussola può essere implementato aggregando un accelerometro, un giroscopio e un magnetometro sotto il controllo di un microcontroller del sensore. Il microcontroller espone questi dispositivi sensore a Windows come singolo dispositivo sensore logico.

Sensori e microcontroller del sensore

L'hardware del sensore è fondamentale per l'esperienza mobile moderna. A partire da Windows 10, è disponibile un'infrastruttura di sistema avanzata per esporre e gestire più dispositivi sensore. Questa infrastruttura semplifica lo sviluppo di applicazioni che incorporano informazioni sui sensori e che supportano scenari windows predefiniti critici, ad esempio la rotazione automatica dello schermo o la modifica della luminosità dello schermo in base alla luce ambientale.

Durante il runtime di sistema, i singoli sensori possono essere spenti quando non sono in uso. I requisiti per l'uso di un particolare dispositivo sensore vengono comunicati al dispositivo e ai relativi driver tramite l'API sensore Windows. Quando un dispositivo sensore non viene usato dal sistema operativo o da applicazioni, il dispositivo può essere spento dal driver del sensore o dal firmware in esecuzione sul microcontroller del sensore.

Dopo la disattivazione dello schermo del sistema e la piattaforma hardware entra in standby moderno, tutti i dispositivi sensore e i microcontroller di sensori facoltativi che non sono già in stati a basso consumo devono immettere i propri stati di basso consumo, in standby entro pochi secondi, in modo che la piattaforma nel suo complesso possa entrare in uno stato a basso consumo. Tuttavia, i driver dei sensori non monitorano direttamente le transizioni da e verso lo standby moderno per determinare quando i dispositivi dei sensori devono essere accesi e spenti. Al contrario, il driver del sensore deve consentire al dispositivo di ricevere energia quando il dispositivo viene usato attivamente da uno o più client, che possono essere applicazioni o componenti del sistema operativo. Il driver deve rimuovere l'alimentazione dal dispositivo quando nessun client usa il dispositivo.

Quando l'estensione della classe del sensore richiede al driver di avviare la segnalazione delle letture del campione del sensore, chiama il metodo di callback EvtSensorStart del driver del sensore. Quando l'estensione della classe del sensore richiede al driver di interrompere la segnalazione delle letture del campione del sensore, chiama il metodo di callback EvtSensorStop del driver. Per altre informazioni, vedere Informazioni sugli eventi del driver del sensore.

Dopo che il computer entra in standby moderno e tutti i dispositivi sensore immettono stati a basso consumo di energia, il consumo totale di energia di tutti i componenti hardware del sensore di sistema deve essere inferiore a un milliwatt. I dispositivi del sensore e il microcontroller del sensore facoltativo potrebbero entrare in uno stato di standby a basso consumo specifico dell'hardware del sensore. In alternativa, la guida di alimentazione hardware ai dispositivi del sensore e il microcontroller del sensore facoltativo può essere spento sotto il controllo dei driver del sensore e/o del firmware ACPI di sistema.

A partire da Windows 10, il supporto viene fornito per un set limitato di opzioni di connettività hardware del sensore al processore core o al sistema in un chip (SoC) in una piattaforma di standby moderna. Le sezioni seguenti illustrano in dettaglio le configurazioni hardware e software supportate, nonché i relativi comportamenti di risparmio energia sia durante lo standby moderno che quando la piattaforma viene usata attivamente.

Modalità risparmio energia

Windows prevede che ogni dispositivo sensore o il microcontroller del sensore disponga di tre modalità di alimentazione del dispositivo, attive, inattive e standby, oltre a una modalità facoltativa, zero watt, di alimentazione rimossa. La tabella seguente descrive le modalità di alimentazione per un dispositivo sensore e un microcontroller sensore facoltativo. La tabella distingue tra una modalità inattiva in cui viene usato l'hardware del sensore, ma è attualmente inattivo e una modalità inattiva in cui l'hardware del sensore non viene usato.

Mode Descrizione Consumo medio di energia Uscire dalla latenza per l'attività Meccanismo di transizione

Attive

Il microcontroller del sensore e/o del sensore sta fornendo o elaborando attivamente modifiche ambientali.

< 100 milliwatt

N/D

N/D

Inattiva (in uso)

Il dispositivo sensore e/o il microcontroller del sensore vengono usati da una o più applicazioni ed è in attesa di fornire il set successivo di informazioni sul sensore al processore principale.

< 50 milliwatt

Specifico del sensore

Hardware autonomo

Inattiva (non in uso)

Il dispositivo sensore e/o il microcontroller del sensore non vengono usati da alcuna applicazione. I dati di calibrazione per il sensore o il microcontroller del sensore vengono mantenuti.

< 5 milliwatt

Specifico del sensore

Comandi HID (Human Interface Device) o messaggi di Sensor Framework che descrivono l'utilizzo corrente dei dispositivi sensore.

Standby

Il dispositivo sensore e/o il microcontroller del sensore non vengono usati da alcuna applicazione. I dati di calibrazione per il sensore o il microcontroller del sensore vengono mantenuti. Il microcontroller sensore e/o sensore non esegue ulteriori azioni fino a quando non viene richiesto dal software in esecuzione sul processore principale.

< 1 milliwatt (per tutti i sensori di sistema)

< 10 millisecondi

Più opzioni:

  • Comando HIDI2C edizione StandardT_POWER(Sospensione)
  • Messaggio privato del driver di terze parti
  • Linea GPIO da SoC a hardware del sensore

Rimozione alimentazione

L'alimentazione viene rimossa dal dispositivo sensore e/o dal microcontroller del sensore e tutto il contesto hardware viene perso.

0 milliwatt

< 100 millisecondi

L'entità esterna rimuove l'alimentazione o applica l'alimentazione tramite firmware ACPI in risposta all'IRP di alimentazione D3.

Nota

Nella tabella precedente il termine standby si riferisce a una modalità di alimentazione del dispositivo distinta dalla modalità standby moderna, ovvero uno stato di alimentazione a livello di piattaforma.

Meccanismi di risparmio energia software

La gestione dell'alimentazione in fase di esecuzione per i dispositivi del sensore e il microcontroller del sensore è principalmente guidato dal fatto che vengano usati. Come regola generale, il driver del sensore e l'hardware devono inserire un sensore nella modalità di alimentazione inattiva quando non viene usato dal sistema operativo o da un'applicazione. Windows Sensor Platform fornisce informazioni sul numero di client del sistema operativo o dell'applicazione connessi a un determinato sensore, nonché sui requisiti per il ciclo di lavoro o la tariffa dati del sensore. Il driver del sensore e/o l'hardware usano queste informazioni per passare facilmente il dispositivo sensore alla modalità di alimentazione inattiva durante i momenti in cui il sistema è in esecuzione e lo schermo è attivato.

Dopo che lo schermo del sistema è spento e la piattaforma entra in standby moderno, Windows prevede che tutti i sensori e i microcontroller del sensore entrino in modalità standby o rimossa dall'alimentazione.

La scelta di un meccanismo di risparmio energia software da usare per i dispositivi del sensore e il microcontroller del sensore facoltativo dipende dal modo in cui l'hardware del sensore viene esposto a Windows dal driver di dispositivo e dal modo in cui l'hardware del sensore è fisicamente connesso al processore SoC o core. Windows supporta due metodi di esposizione e connessione dei dispositivi sensore. Un metodo usa il driver di classe HID del sensore predefinito tramite una connessione I2C, in cui il driver HIDI2C predefinito trasferisce le informazioni HID sulla connessione I2C. L'altro richiede un driver di terze parti che implementa l'interfaccia del driver del sensore universale e chiama i metodi nella tabella SensorscxFunctions.

Le due opzioni per la connessione a un sensore o a un microcontroller del sensore vengono confrontate nella tabella seguente. La selezione di una delle due opzioni per la connessione all'hardware del sensore determina i meccanismi di risparmio energia software necessari per eseguire la transizione dell'hardware del sensore alla modalità standby o di rimozione dell'alimentazione.

opzione Connessione ion Connessione del bus Driver del sensore necessario Provider di driver Commenti

HIDI2C

L'hardware del sensore si connette direttamente al processore SoC o core tramite I2C.

Driver di classe HID del sensore + driver di classe HID over-I2C

Microsoft. Componente Posta in arrivo a partire da Windows 8.

Vantaggi/svantaggi

Driver del sensore di terze parti

L'hardware del sensore si connette direttamente al processore SoC o core su I2C o UART.

Driver di terze parti che implementa edizione StandardNSOR_CONTROLLER_CONFIG

Fornitore del dispositivo sensore.

Vantaggi/svantaggi

HIDI2C

Per l'opzione HIDI2C, il microcontroller del sensore facoltativo è fisicamente connesso al processore SoC o core tramite un bus I2C. Il microcontroller espone più raccolte HID di primo livello, una per ogni dispositivo sensore logico. Ad esempio, un sensore bussola può essere esposto tramite HID come dispositivo sensore logico che è un'aggregazione dei sensori di accelerometro, giroscopio e magnetometro dietro il microcontroller del sensore. Questo è il più semplice da implementare in termini di connettività e software perché non richiede software di terze parti per il dispositivo sensore.

Lo stack HIDI2C di Windows è simile a quello dei controller di tocco e dei digitalizzatori penna in quanto supporta due meccanismi di risparmio energia software: un comando HID in banda e una transizione in fase di esecuzione allo stato D3.

Comando HID in banda

edizione StandardT_POWER(sospensione) Inviato al dispositivo dopo la disattivazione dello schermo e la piattaforma entra in standby moderno. Questo comando può eseguire la transizione del dispositivo alla modalità di alimentazione standby.

edizione StandardT_POWER(On) Inviato al dispositivo quando la piattaforma esiste standby moderno e lo schermo viene riattivato.

Transizione in fase di esecuzione allo stato D3 per lo stack di dispositivi del sensore HID

D3 IRP A IRP_MJ_POWER richiesta inviata allo stack di driver per il dispositivo immediatamente dopo il comando edizione StandardT_POWER(Sospensione). Questo indica al dispositivo di immettere lo stato di alimentazione del dispositivo D3. Nell'ambito della transizione a D3, il firmware ACPI del sistema potrebbe eseguire metodi di controllo per passare il dispositivo alla modalità standby o di rimozione dell'alimentazione.

D0 IRP A IRP_MJ_POWER richiesta inviata allo stack di driver per il dispositivo quando la piattaforma esiste standby moderno e lo schermo è attivato. Questo indica al dispositivo di immettere lo stato di alimentazione del dispositivo D0. Se necessario, il firmware ACPI di sistema può eseguire metodi di controllo per ripristinare la modalità di inattività (non in uso).

Driver del sensore di terze parti

Per il driver del sensore di terze parti, il microcontroller del sensore è fisicamente connesso al processore principale tramite un bus I2C o UART.

Il fornitore del dispositivo sensore deve fornire un driver UMDF (User-Mode Driver Framework) che implementa edizione StandardNSOR_CONTROLLER_CONFIG interfaccia. Il driver UMDF comunica con il dispositivo sensore tramite I2C o UART. Questa operazione può essere implementata più volte, una volta per ogni sensore che si trova dietro il microcontroller del sensore. Il driver del sensore di terze parti è responsabile della creazione e del coordinamento di tutte le combinazioni di energia.

I driver di sensori di terze parti devono essere compilati usando Windows Driver Framework (WDF) e basati sul driver di esempio Adxl354acc . Il driver deve usare una coda gestita dall'alimentazione e configurare lo stato di inattività D3 tramite una chiamata al metodo IWDFDevice3::AssignS0Idle Impostazioni Ex. Il driver deve usare i metodi IWDFDevice2::StopIdle e IWDFDevice2::ResumeIdle per indicare a WDF quando il dispositivo è inattivo o attivo. Il driver deve anche abilitare D3cold impostando il membro ExcludeD3Cold della struttura WDF_DEVICE_POWER_POLICY_IDLE_edizione Standard TTINGS su WdfFalse. L'abilitazione di D3cold consente alla piattaforma di rimuovere l'alimentazione dal dispositivo sensore dopo che diventa inattiva e entra nello stato D3.

Come procedura consigliata, inserire codice specifico del dispositivo nel driver e inserire il codice specifico della piattaforma nel firmware ACPI per abilitare il riutilizzo a basso costo del codice driver in più piattaforme.

Immissione di requisiti di standby moderni

I requisiti del driver del sensore di terze parti per il risparmio energia sono una funzione del consumo di energia in standby dell'hardware del sensore.

I driver di sensori di terze parti devono avviare una transizione a D3 quando il dispositivo sensore è pronto per entrare in modalità standby o di rimozione dell'alimentazione, anche se il dispositivo è in grado di usare un meccanismo di comunicazione in banda per passare a una modalità di alimentazione che consuma meno di un milliwatt. Il motivo di questo requisito è che molti driver di bus in Windows tengono traccia dello stato di alimentazione del dispositivo dei dispositivi endpoint e si spegne solo quando tutti i dispositivi endpoint sono spenti. Per alcune progettazioni soC e bus di connessione (in particolare USB), tutti i dispositivi endpoint e il controller host devono trovarsi in D3 affinché il SoC entri nello stato di alimentazione più basso durante lo standby moderno. L'impossibilità di entrare nello stato di alimentazione più basso può impedire facilmente a un sistema di soddisfare i requisiti moderni di standby per la durata della batteria.

Se l'hardware del sensore ha un consumo di energia di standby inferiore a un milliwatt per tutto l'hardware del sensore controllato, il driver del sensore deve passare automaticamente alla modalità standby quando i sensori (o tutti i sensori nel microcontroller) non sono più in uso.

Se l'hardware del sensore ha un consumo di energia di standby superiore a un milliwatt, il driver del sensore deve eseguire una transizione D3 e consentire ai metodi di controllo ACPI di rimuovere l'alimentazione dal dispositivo sensore. Il driver del sensore deve salvare tutto lo stato del dispositivo sensore necessario in modo che l'alimentazione possa essere rimossa dal dispositivo durante D3. Il fornitore dell'hardware del sensore deve collaborare strettamente con l'integratore di sistemi per garantire che l'hardware e il driver del sensore esegua la transizione D3 in modo affidabile e rapido.

Importante

Il driver deve salvare tutto il contesto del dispositivo sensore prima che il dispositivo entri in D3 e deve ripristinare tutto il contesto del dispositivo sensore dopo che il dispositivo entra in D0.

Poco dopo l'ingresso in standby moderno, Windows arresta automaticamente l'uso di tutti i sensori disabilitando l'uso dei sensori del sistema operativo (ad esempio, luce ambientale e rotazione) e sospendendo le applicazioni. Il driver del sensore deve aggregare lo stato di tutti gli hardware dei sensori controllati e passare questo hardware alla modalità di alimentazione del dispositivo standby quando tutti i sensori non sono più in uso.

Il meccanismo per passare il dispositivo sensore alla modalità standby può essere progettato per usare la comunicazione in banda tramite il bus che collega il dispositivo al SoC. Ad esempio, un comando di standby proprietario può essere inviato tramite il bus all'hardware del sensore. In alternativa, l'hardware del sensore potrebbe essere connesso a una linea GPIO che passa il dispositivo in modalità standby e fuori standby.

Nota

Quando viene usata una linea GPIO per impostare il dispositivo in modalità standby, il driver del sensore deve eseguire la transizione dello stack di driver a D3 e consentire ai metodi di controllo ACPI per il dispositivo (ad esempio, _PS3) di impostare la linea GPIO sullo stato necessario per posizionare l'hardware in modalità standby. Questo schema consente di scrivere il driver del sensore in modo indipendente dalla piattaforma, ovvero la linea GPIO specifica, i requisiti di intervallo e altre informazioni specifiche della piattaforma vengono codificate nel firmware ACPI fornito dall'integratore di sistema e non nel driver specifico del dispositivo.

Uscita dai requisiti di standby moderni

Quando la piattaforma esce dallo standby moderno, il driver del sensore deve eseguire di nuovo la transizione dell'hardware del sensore alla modalità di inattività (non in uso). Quando i servizi di sistema riprendono, Windows richiederà l'uso di sensori, ad esempio la rotazione e la luce ambientale, necessari per eseguire le funzioni di sistema. Quando le applicazioni riprendono, potrebbero richiedere informazioni sul sensore. Se l'hardware del sensore richiede un messaggio in banda per restituire il dispositivo alla modalità di inattività, il driver di dispositivo deve inviare questo messaggio non appena viene inviata la prima richiesta di informazioni sul sensore. Se l'hardware del sensore richiede una linea GPIO per segnalare al dispositivo di tornare allo stato di inattività, il driver deve usare questa linea GPIO per eseguire una transizione a D0 non appena viene fornita la prima richiesta di informazioni sul sensore. In questo caso, i metodi di controllo ACPI (ad esempio, _PS0) devono attivare o disattivare la riga GPIO in base alle esigenze per avviare la transizione. Infine, se in precedenza l'hardware del sensore richiedeva una transizione alla modalità di rimozione dell'alimentazione perché il consumo di energia in modalità standby supera un milliwatt, il driver del sensore deve eseguire una transizione a D0 e consentire ai metodi di controllo ACPI di ripristinare l'alimentazione al dispositivo.

Configurazioni di alimentazione hardware supportate

La configurazione di risparmio energia hardware da usare per un dispositivo sensore dipende dal consumo di energia dell'hardware del sensore in modalità standby e dal fatto che un microcontroller sensore facoltativo gestisca il dispositivo.

Alimentazione < standby un milliwatt

Se il consumo di energia di un dispositivo sensore in modalità di alimentazione standby non supera un milliwatt, la finestra di progettazione della piattaforma non è necessaria per collegare l'hardware del sensore a una guida di alimentazione che può essere attivata e disattivata dai metodi di controllo ACPI. Uno dei meccanismi seguenti viene usato per passare il sensore alla modalità di alimentazione di standby:

  • Comando HID edizione StandardT_POWER(Sospensione).
  • Riga GPIO dal SoC.
  • Comando proprietario inviato all'hardware del sensore dal driver del sensore di terze parti.

Se la piattaforma include un microcontroller del sensore, il chip microcontroller potrebbe contenere uno o più dispositivi sensore integrati o essere connessi a uno o più dispositivi sensore esterni. In entrambi i casi, questi dispositivi sensore sono, dal punto di vista software, nascosti dietro il microcontroller e invisibili a Windows. Se un microcontroller del sensore e i relativi dispositivi di sensori aggregati utilizzano meno di un milliwatt quando l'hardware del microcontroller e del sensore è in modalità di alimentazione standby, la finestra di progettazione della piattaforma non è necessaria per collegare il microcontroller o l'hardware del sensore a una guida di alimentazione che può essere attivata e disattivata dai metodi di controllo ACPI. Il microcontroller del sensore usa uno dei meccanismi seguenti per eseguire la transizione da e verso la modalità standby:

  • Un comando HIDI2C edizione StandardT_POWER (o simile) inviato sul bus di comunicazione.
  • Riga GPIO dal SoC.

Se il sensore richiede una linea GPIO dal SoC per avviare transizioni da e verso la modalità standby, il firmware della piattaforma deve fornire sia un oggetto _PS3 che un oggetto _PS0 nello spazio dei nomi ACPI nel dispositivo hardware del sensore. Il firmware ACPI deve includere anche un'area operativa GPIO che descrive la linea GPIO dal SoC all'hardware del sensore. Il metodo di controllo _PS3 attiva/disattiva la linea GPIO per passare il dispositivo alla modalità standby e il metodo di controllo _PS0 attiva/disattiva la linea GPIO per impostare l'hardware del sensore sulla modalità di inattività.

Il diagramma a blocchi seguente mostra le opzioni di risparmio energia per un sensore autonomo che utilizza meno di un milliwatt in modalità di alimentazione standby.

Un'opzione consiste nell'usare lo stack HIDI2C di Windows, come illustrato sul lato sinistro del diagramma precedente. In questo caso, la transizione del sensore alla modalità di alimentazione standby può essere avviata da un comando HID edizione StandardT_POWER(Sospensione) in banda o da un IRP D3 gestito dal driver ACPI eseguendo il metodo di controllo _PS3 per il sensore.

L'altra opzione consiste nell'usare un driver sensore di terze parti, come illustrato sul lato destro del diagramma precedente. Il driver del sensore di terze parti può avviare la transizione alla modalità di alimentazione standby usando un comando proprietario in banda o inviando un IRP D3 gestito dal driver ACPI eseguendo il metodo di controllo _PS3 per il sensore.

La finestra di progettazione della piattaforma può scegliere uno dei meccanismi indipendentemente dal fatto che i dispositivi del sensore siano integrati o esterni al chip microcontroller.

Alimentazione > standby un milliwatt

Se la piattaforma include hardware del sensore e/o un microcontroller del sensore che insieme utilizzano più di un milliwatt in modalità di alimentazione in standby, l'hardware del sensore e il microcontroller devono essere trasferiti alla modalità di rimozione dell'alimentazione quando il sistema è in standby moderno. In questa configurazione, il sensore, il microcontroller del sensore facoltativo e tutti i sensori dietro il microcontroller devono essere posizionati su un'unica guida elettrica accesa e disattivata sotto il controllo di una linea GPIO dal SoC.

Questa configurazione richiede alla finestra di progettazione della piattaforma di posizionare tutto l'hardware del sensore su un binario di alimentazione commutabile, controllato da una linea GPIO dal SoC. Se per l'hardware del sensore sono necessarie più tensioni di input, è possibile usare più commutatori, ognuno controllato dalla stessa linea GPIO. Oltre alla guida di alimentazione commutabile, il firmware ACPI della piattaforma deve definire una risorsa di alimentazione nello spazio dei nomi . Questa risorsa di risparmio energia descrive l'hardware del sensore e include i metodi _ON e _OFF responsabili dell'uso di un'area operativa GPIO per attivare o disattivare la riga GPIO dal SoC.

Il firmware della piattaforma deve includere un riferimento alla risorsa di alimentazione in ogni dispositivo sensore nello spazio dei nomi ACPI sulla barra di alimentazione commutabile, inclusi gli oggetti _PR0 e _PR3.

Il diagramma a blocchi seguente illustra le opzioni di risparmio energia per l'hardware del sensore e/o un microcontroller del sensore che insieme utilizzano più di un milliwatt in modalità di alimentazione standby. Le due opzioni sono l'uso dello stack HIDI2C di Windows, come illustrato sul lato sinistro del diagramma o per l'uso di un driver di sensori di terze parti, come illustrato sul lato destro.

Nella configurazione che usa lo stack di driver HIDI2C predefinito, come illustrato sul lato sinistro del diagramma precedente, il driver HIDI2C avvia una transizione D3 dopo la disattivazione dello schermo e la piattaforma entra in standby moderno. Quando L'IRP D3 passa attraverso il driver ACPI, l'oggetto _PR3 verrà valutato e Windows disattiva la risorsa di alimentazione specificata eseguendo il metodo _OFF. Se più sensori condividono Power Resource, Windows conta automaticamente tutti i sensori ed esegue il metodo _OFF solo dopo che tutti i sensori sono entrati in D3.

Se l'hardware del sensore usa un driver sensore di terze parti, come illustrato sul lato destro del diagramma precedente, il flusso di controllo è uguale a quello precedente, ad eccezione del fatto che il driver del sensore è responsabile dell'avvio della transizione a D3.

Dopo che la piattaforma riprende dallo standby moderno e da un'applicazione o dal sistema operativo richiede l'uso del sensore, il driver passa a D0. Un IRP D0 passa attraverso il driver ACPI e l'oggetto _PR0 viene valutato in modo che il driver ACPI eseseguono il metodo _ON per la risorsa di Alimentazione associata. Il metodo _ON attiva/disattiva la linea GPIO per attivare la guida di alimentazione commutabile. Se il sistema usa un driver sensore di terze parti, il driver deve richiedere un IRP D0 e avviare una transizione a D0 immediatamente dopo che i dati del sensore vengono richiesti dal sistema operativo o da un'applicazione.

Problemi di riattivazione

Non ci sono problemi di riattivazione per i sensori o il microcontroller del sensore facoltativo. È previsto che i dispositivi sensore siano in modalità standby o di rimozione dell'alimentazione durante lo standby moderno e non si prevede di riattivare il SoC mentre la piattaforma è in standby moderno.

Test e convalida

È fondamentale per la finestra di progettazione del sistema verificare che l'hardware del sensore entri in modalità standby o di rimozione dell'alimentazione quando lo schermo è spento per lo standby moderno. Il metodo usato per testare e convalidare il risparmio energia del dispositivo dipende dalla modalità di connessione del dispositivo sensore.

Sensore connesso HIDI2C

Se il sistema usa lo stack WINDOWS HIDI2C, l'integratore di sistemi deve contattare il fornitore del driver del sensore per informazioni su come verificare al meglio che il driver esegua correttamente il risparmio energia. I fornitori di driver di sensori sono invitati a usare la traccia di Event Tracing for Windows (ETW) per tutte le decisioni di risparmio energia nel driver di dispositivo e fornire documentazione di esempio agli integratori di sistema per descrivere come verificare l'operazione di risparmio energia corretta usando gli eventi ETW e Windows Performance Toolkit (WPT).

Driver del sensore di terze parti

Se il sistema usa un driver sensore di terze parti, l'integratore di sistemi deve contattare il fornitore del driver del sensore per informazioni su come verificare al meglio che il driver esegua correttamente il risparmio energia. I fornitori di driver di sensori sono invitati a usare la traccia di Event Tracing for Windows (ETW) per tutte le decisioni di risparmio energia nel driver di dispositivo e fornire documentazione di esempio agli integratori di sistema per descrivere come verificare l'operazione di risparmio energia corretta usando gli eventi ETW e Windows Performance Toolkit (WPT).

Se il driver avvia una transizione a D3 quando tutti i dispositivi del sensore non vengono più usati, è possibile seguire le istruzioni nell'elenco seguente per verificare che questa transizione si verifichi come previsto e che un dispositivo sensore torni a D0 quando un'applicazione o il sistema operativo deve usare di nuovo il dispositivo.

Il metodo incentrato sul software usa la strumentazione di Windows per verificare che L'IRP D3 passi attraverso lo stack di driver di dispositivo per il dispositivo sensore. Windows Power Manager include la strumentazione ETW predefinita, che include la strumentazione per il rilevamento di IRP Dx (richieste di alimentazione del dispositivo). Per visualizzare queste informazioni in modalità manuale, scaricare Windows Performance Toolkit e installarlo nel sistema sottoposto a test.

Dopo aver installato Windows Performance Toolkit, seguire queste istruzioni per avviare una traccia XPerf in modalità utente:

  1. Aprire una finestra del prompt dei comandi come Amministrazione istrator.

  2. Passare alla cartella \%ProgramFiles%\Windows Kits\8.0\Windows Performance Toolkit\ .

  3. Per avviare Xperf, eseguire il comando seguente: xperf.exe -start power_session -on Microsoft-Windows-Kernel-Power

  4. Eseguire la transizione del sistema allo standby moderno premendo il pulsante di alimentazione.

  5. Attendere 30 secondi.

  6. Eseguire la transizione del sistema dallo standby moderno premendo il pulsante di alimentazione.

  7. Eseguire il comando seguente per arrestare la registrazione degli eventi: xperf.exe -stop power_session

  8. Convertire il file di traccia binaria in formato con estensione csv e leggibile: xperf.exe –i \user.etl > power.txt

  9. Aprire il file Power.txt in un editor di testo e cercare l'ID hardware del dispositivo sensore. È possibile cercare l'ID hardware del dispositivo sensore nella scheda Dettagli delle proprietà del dispositivo in Gestione dispositivi in Percorso istanza del dispositivo. Nell'esempio seguente il percorso dell'istanza del dispositivo del sensore è ACPI\MST0731\2&daba3ff&0.

  10. L'avvio dell'IRP D3 per il dispositivo sensore è indicato da un evento di tipo Microsoft-Windows-Kernel-Power/IRP/Stop con il percorso dell'istanza del dispositivo del sensore e un ultimo valore di evento pari a 3, che indica che lo stato di destinazione è D3. L'evento di output seguente del file Power.txt mostra l'inizio dell'IRP D3. Gli ultimi due valori di parametro per questo evento (visualizzati all'estrema destra) indicano il percorso dell'istanza del dispositivo e lo stato di destinazione.

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

  11. Questo evento deve essere registrato all'inizio del file di output Power.txt. Il valore 0x868e2728 del parametro nell'evento di output precedente è un puntatore alla struttura IRP per IRP D3. Cercando gli eventi successivi nel file di traccia con lo stesso puntatore IRP, è possibile seguire lo stato di avanzamento dell'IRP D3 mentre scorre lo stack di driver per il dispositivo sensore.

  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"

Quando il driver ACPI di Windows, Acpi.sys, elabora IRP D3, Acpi.sys esegue il metodo di controllo _PR3 corrispondente. La finestra di progettazione del firmware di sistema fornisce questo metodo di controllo per indicare quale risorsa di alimentazione deve essere disattivata affinché il dispositivo sensore entri nello stato D3. Acpi.sys esegue anche il metodo di controllo _OFF in Power Resource.

È possibile usare un processo simile per verificare che il dispositivo sensore torni a D0 quando la piattaforma esce dallo standby moderno e lo schermo viene attivato. Un evento Microsoft-Windows-Kernel-Power/IRP/Start per il dispositivo sensore verrà registrato con uno stato di destinazione pari a 0 (che indica D0) immediatamente dopo che il pulsante di alimentazione viene premuto per riattivare il sistema e il sistema operativo o un'applicazione ripresa richiede i dati del sensore.

Elenco di controllo per il microcontroller del sensore e del microcontroller per la gestione dell'alimentazione

Gli integratori di sistemi e i fornitori di dispositivi dei sensori devono usare l'elenco di controllo seguente per assicurarsi che la progettazione del risparmio energia del sistema sia compatibile con Windows 8 e versioni successive.

  • Selezionare l'hardware del sensore compatibile con il driver HIDI2C predefinito e lo stack di driver HIDSensor.
  • Selezionare l'hardware del sensore con un consumo di energia di standby inferiore a un milliwatt.
  • Verificare che l'hardware del sensore e il driver di terze parti (se necessario) supportino la gestione dell'alimentazione inattiva in fase di esecuzione quando lo schermo è attivato:
    • I sensori devono essere spenti e immettere automaticamente D3 quando non vengono usati da un'applicazione o dal sistema operativo.
    • I sensori devono accendere e immettere automaticamente D0 quando i dati del sensore vengono richiesti da un'applicazione o dal sistema operativo.
    • Il driver del sensore di terze parti deve essere implementato come driver WDF e può essere basato sul driver di esempio SpbAccelerometer.
    • Il polling delle informazioni sui sensori deve essere limitato e abilitato al livello di consumo energetico più basso possibile. Ad esempio, il polling di un sensore analogico dovrebbe verificarsi dietro un microcontroller o un altro hardware di controllo a basso consumo, che può interrompere il SoC quando i nuovi dati del sensore superano un valore di rilevamento soglia. Evitare di eseguire il polling del sensore in un driver che viene eseguito periodicamente nel SoC, che può aumentare significativamente il consumo complessivo di energia del sistema.
  • Se l'hardware del sensore usa un driver di terze parti:
    • L'integratore di sistemi deve comunicare con il fornitore del dispositivo sensore per comprendere come implementare il risparmio energia per l'hardware del sensore.
    • Se l'hardware del sensore utilizza più di un milliwatt in modalità di alimentazione standby, posizionare l'hardware del sensore su una guida di alimentazione autonoma controllata da una linea GPIO dal SoC. Fornire riferimenti alla risorsa di alimentazione ACPI necessaria, ai metodi di controllo _ON/_OFF e alla risorsa di alimentazione nel dispositivo sensore nello spazio dei nomi ACPI (come descritto di seguito).
    • Se l'hardware del sensore usa una linea GPIO dal SoC per passare il dispositivo alla modalità di alimentazione standby, assicurarsi che il firmware ACPI di sistema includa i metodi di controllo _PS3 e _PS0 appropriati (come descritto di seguito).
  • Se l'hardware del sensore include un microcontroller sensore con dispositivi sensore connessi dietro di esso, il microcontroller del sensore deve avere un modo per spegnere i dispositivi del sensore. I dispositivi possono essere spenti usando la comunicazione in banda sul bus che connette il microcontroller ai dispositivi o una linea GPIO dal microcontroller ai dispositivi.
  • Se l'hardware del sensore richiede una linea GPIO dal SoC per passare il dispositivo alla modalità di alimentazione standby:
    • Assicurarsi che la riga GPIO del SoC soddisfi i requisiti di livello e trigger impostati dal fornitore dell'hardware del sensore.
    • Nello spazio dei nomi ACPI descrivere il pin GPIO SoC come parte di un'area operativa GPIO.
    • Fornire un metodo di controllo _PS3 nel dispositivo sensore nello spazio dei nomi ACPI per attivare o disattivare il segnale sulla linea GPIO in base alle esigenze per impostare l'hardware del sensore sulla modalità di alimentazione standby.
    • Fornire un metodo di controllo _PS0 nel dispositivo sensore nello spazio dei nomi ACPI per attivare o disattivare il segnale sulla linea GPIO in base alle esigenze per passare l'hardware del sensore alla modalità inattiva o attiva dopo che il dispositivo passa a D0.
  • Se l'hardware del sensore utilizza più di un milliwatt nella modalità di alimentazione standby:
    • Posizionare tutti i componenti hardware del sensore su un binario di alimentazione che può essere acceso e spento da una linea GPIO dal SoC. In alternativa, se la piattaforma contiene più sensori con requisiti di tensione di alimentazione diversi, fornire guide separate che possono essere commutate in modo indipendente.
    • Descrivere la guida di alimentazione commutabile come risorsa di alimentazione nello spazio dei nomi ACPI.
    • In questa risorsa di alimentazione specificare i metodi di controllo _ON e _OFF che attivano e disattivano la guida elettrica usando una linea GPIO descritta come parte di un'area operativa GPIO.
    • Nello spazio dei nomi ACPI specificare _PR3 e _PR0 oggetti che designano Power Resource per l'hardware del sensore.
    • Assicurarsi che i metodi _ON e _OFF incorporano eventuali requisiti di deounce o temporizzazione dell'hardware del sensore.
  • Testare e convalidare la gestione dell'alimentazione in fase di esecuzione dei dispositivi del sensore nella piattaforma. Collaborare con il fornitore dell'hardware del sensore per convalidare il risparmio energia in fase di esecuzione quando il display del sistema è acceso.
  • Testare e verificare che l'hardware del sensore entri in modalità standby o di rimozione dell'alimentazione quando la piattaforma entra in standby moderno.
    • Se l'hardware del sensore usa gli stack di driver del sensore HIDI2C + HID inclusi in Windows, vedere Test e convalida per informazioni dettagliate.
    • Se l'hardware del sensore usa un driver di terze parti, contattare il fornitore del driver del sensore per la metodologia di test consigliata.
    • Se il driver del sensore esegue una transizione a D3 come parte della relativa voce alla modalità standby o di rimozione dell'alimentazione, usare Windows Performance Toolkit come descritto in Test e convalida. Verificare che l'hardware del sensore entri in D3 quando la piattaforma entra in standby moderno e che l'hardware del sensore entra in D0 dopo che il sistema esce dalla modalità standby moderna e le informazioni sul sensore vengono richieste di nuovo.
  • Misurare il consumo di energia dell'hardware del sensore in modalità standby o di rimozione dell'alimentazione.
  • Avviare più transizioni in standby moderno e quindi testare lo stress del funzionamento dei dispositivi del sensore e le applicazioni che usano le informazioni del sensore quando lo schermo è attivato.