Condividi tramite


Gestione alimentazione ricevitore GNSS per piattaforme di standby moderne

In questo argomento viene illustrato il risparmio energia GNSS (Global Navigation Satellite System) per le piattaforme moderne con supporto per standby.

Un PC Windows che implementa il modello di alimentazione standby moderno può contenere anche un dispositivo GNSS (Global Navigation Satellite System). Un dispositivo GNSS consente all'utente di ottenere informazioni di posizionamento ad alta precisione da un sistema di navigazione satellitare, ad esempio i sistemi gps (Global Positioning Systems) o global orbiting navigation satellite System (GLONASS). Dopo che la piattaforma hardware entra in standby moderno, il dispositivo GNSS deve entrare in una modalità di funzionamento a basso consumo in cui consuma non più di 1 mW di alimentazione. Il dispositivo GNSS deve quindi rimanere in questa modalità fino a quando la piattaforma non esce dallo standby moderno.

I dispositivi GNSS che supportano GPS e Global Orbiting Navigation Satellite System (GLONASS) sono stati disponibili per qualche tempo, ma i dispositivi GNSS più recenti supportano sistemi di navigazione satellite come BeiDou Navigation Satellite System (BDS) e Galileo.

Una piattaforma standby moderna è in genere costruita attorno a un circuito integrato System on a Chip (SoC). Windows supporta le opzioni seguenti per l'aggiunta di un dispositivo GNSS a tale piattaforma:

  • Incorporare un modulo MBB (Mobile Broadband) che contiene un dispositivo GNSS integrato. Questo metodo è comune nei telefoni cellulari.
  • Selezionare un SoC che contiene un dispositivo GNSS integrato.
  • Usare un bus a basso consumo, ad esempio I2C, SPI o UART, per connettere un dispositivo GNSS autonomo al SoC.

Se possibile, l'integratore di sistema deve selezionare un dispositivo GNSS che implementa una modalità sospensione a basso consumo in cui il dispositivo consuma non più di 1 mW di alimentazione. Il fornitore del dispositivo GNSS deve fornire un driver del sensore di posizione che converte i dati sulla posizione dal dispositivo GNSS al modulo richiesto dalle applicazioni client. Queste applicazioni si connettono al dispositivo GNSS tramite l'API Posizione di Windows. Il driver del sensore di posizione per il dispositivo GNSS tiene traccia delle informazioni seguenti:

  • Numero di client attualmente connessi al dispositivo GNSS tramite l'API Location.
  • Stato dell'interruttore radio attivato/spento per il dispositivo GNSS. L'utente controlla questo passaggio tramite l'applicazione Windows Impostazioni. Per altre informazioni, vedere Integrazione della gestione radio.

Il driver del sensore di posizione usa queste informazioni per determinare quando il dispositivo GNSS è inattiva in modo che possa essere posizionato in modalità a basso consumo. Un dispositivo GNSS viene usato attivamente solo se uno o più client sono connessi al dispositivo. In caso contrario, il dispositivo è inattiva.

Per estendere la durata della batteria del sistema, l'accesso al dispositivo GNSS è limitato durante lo standby moderno. Le applicazioni a schermo di blocco possono accedere alle informazioni di geofencing e posizione durante lo standby moderno. Tuttavia, le applicazioni non a schermo di blocco possono usare l'API Location per ottenere i dati sulla posizione dal dispositivo GNSS solo mentre la visualizzazione è attivata e la piattaforma interagisce con l'utente. Poco dopo la disattivazione dello schermo e la piattaforma entra in standby moderno, tutte le applicazioni non a schermo di blocco con connessioni al dispositivo GNSS vengono disconnesse automaticamente da Windows e le applicazioni vengono sospese.

Modalità risparmio energia

Il ricevitore GNSS dovrebbe avere 4 modalità di risparmio energia, come descritto di seguito.

Modalità di alimentazione del ricevitore GNSS

Modalità di alimentazione del dispositivo Descrizione Stato alimentazione dispositivo (Dx) Radio State (come mostrato all'utente) Numero di client Connessione Consumo medio di energia (mW) Meccanismo di transizione

Attivo (acquisizione)

Il ricevitore GNSS sta acquisendo una correzione satellite.

D0

Attivato

>= 1

~200 mW

N/D

Attivo (rilevamento 1 Hz)

Il ricevitore GNSS ha acquisito una correzione satellite e fornisce dati a una o più applicazioni su base periodica.

D0

Attivato

>= 1

~100 mW (specifico del dispositivo)

N/D

Sospendi

Il ricevitore GNSS non ha client connessi L'hardware del ricevitore GNSS ha ancora la potenza applicata per mantenere il contesto nel dispositivo e ridurre il tempo di latenza di ripresa alla modalità Attiva.

D3(D3hot)

Disattivato o attivato

0

<1 mW (specifico del dispositivo)

Avviato dal software. Questo è lo stato di sospensione selettiva per le radio GNSS collegate direttamente al bus USB (Universal Serial Bus) o a un dispositivo composito USB.

Alimentazione rimossa

Il ricevitore GNSS non ha client connessi, la radio viene spenta e tutta l'alimentazione del ricevitore GNSS è stata rimossa da un'entità esterna.

D3(D3cold)

Disattivato o attivato

0

0 mW

Avviato dal software e richiede il coordinamento hardware per rimuovere l'alimentazione.

Anche il driver software per il ricevitore GNSS deve gestire la gestione della radio come descritto di seguito.

Requisiti di implementazione della piattaforma

Una piattaforma standby moderna offre più opzioni per l'integrazione fisica di un ricevitore GNSS. Il ricevitore GNSS può far parte di un dispositivo autonomo connesso al SoC da un bus di comunicazione a basso consumo. Il ricevitore GNSS può anche essere integrato in una radio mobile broadband (MBB) come ricevitori GNSS sono comuni nei telefoni cellulari. Infine, il ricevitore GNSS può essere integrato nel SoC stesso.

Queste più opzioni presentano una sfida per l'integratore di sistemi quando si determina quale implementazione selezionare per una piattaforma che richiede la funzionalità GNSS. Per le piattaforme standby moderne di Windows, gli integratori di sistemi sono consigliati per integrare GNSS nell'ordine di priorità seguente:

  1. Se il sistema è dotato di una radio MBB, usare il ricevitore GNSS integrato nel modulo MBB.
  2. Se il sistema è dotato di un SoC con un ricevitore GNSS di onboarding, usare il ricevitore GNSS integrato nel SoC.
  3. Integrare un ricevitore GNSS autonomo collegato al SoC su un bus di comunicazione a basso consumo,ad esempio UART, SPI o I2C.

L'integratore di sistemi non deve esporre alcun ricevitore GNSS estraneo a Windows. In presenza di più ricevitori GNSS esposti al sistema operativo, Windows NON aggrega le informazioni sulla posizione da tutti i dispositivi GNSS.

Meccanismo di risparmio energia software

I dispositivi GNSS nelle piattaforme Windows devono essere gestiti da un driver UMDF (User-Mode Driver Framework) che usa il modello windows Sensor Class Extension e implementa l'interfaccia ISensorDriver. Questo driver GNSS viene chiamato driver del sensore di posizione e dovrebbe gestire il ricevitore GNSS sottostante e fornire dati alle richieste dell'applicazione per le informazioni sulla posizione.

Panoramica e modello di applicazione

I driver del sensore di posizione usano il numero di client dell'applicazione connessi come meccanismo principale per determinare quando il dispositivo GNSS può accedere alla modalità di sospensione o rimozione dell'alimentazione. Il driver del sensore di posizione è anche responsabile della comunicazione con una libreria di gestione radio fornita dal fornitore GNSS che consente all'utente di controllare se la radio GNSS è abilitata o disabilitata. Il driver del sensore di posizione può usare sia il numero di client connessi che la preferenza dell'utente per lo stato radio per garantire che il dispositivo GNSS sia in modalità di sospensione a basso consumo o di alimentazione rimossa quando possibile.

Le app di Microsoft Store gestiscono la durata delle applicazioni in primo piano e in background e pertanto hanno un'influenza significativa sul numero di client dell'applicazione connessi al driver del sensore di posizione. Un'applicazione in primo piano richiede informazioni sulla posizione tramite l'API Location di Windows. Quando l'applicazione in primo piano viene spostata in background dall'utente, il modello di app di Microsoft Store garantisce che l'applicazione client venga disconnessa dal ricevitore GNSS.

Questo meccanismo del modello di applicazione consente al driver del sensore di posizione di tenere traccia facilmente del numero di client dell'applicazione connessi. Ogni volta che sono presenti zero client dell'applicazione connessa, il driver del sensore di posizione può eseguire la transizione del dispositivo GNSS in modalità sospensione o rimozione alimentazione.

Quando il sistema entra in standby moderno, Windows sospende automaticamente tutte le applicazioni in primo piano con conseguente rilevamento del numero di client connessi che passano a zero.

Integrazione della gestione radio

Il driver del sensore di posizione deve anche implementare un'interfaccia per comunicare con la libreria di gestione radio fornita dal fornitore. La libreria di gestione radio consente a Windows di esporre un controllo radio del dispositivo GNSS "on/off" nell'applicazione Windows Impostazioni.

Requisiti di implementazione del driver del sensore di posizione

Il driver del sensore di posizione deve posizionare il dispositivo GNSS in uno stato D3 a basso consumo quando il dispositivo GNSS non è in uso. Il dispositivo GNSS non è in uso quando non sono presenti client attualmente connessi o il servizio GNSS è stato disabilitato tramite la gestione radio.

Il driver del sensore di posizione deve mantenere sempre il dispositivo GNSS nello stato D3 quando il dispositivo GNSS è stato disabilitato tramite il gestore radio. Questo requisito impedisce al driver di usare una coda gestita dall'alimentazione e di inoltrare semplicemente le richieste dai client connessi. Il driver del sensore di posizione deve usare una coda non gestita dall'alimentazione per I/O e gestire direttamente l'inattività usando i metodi StopIdle e ResumeIdle . Il sensore di posizione deve continuare a essere il proprietario dei criteri di alimentazione per lo stack di driver del dispositivo GNSS. Il driver deve impostare il valore di bPowerManaged su FAL edizione Standard quando si chiama IWDFDevice::CreateIoQueue per creare la coda di I/O.

Come accennato in precedenza, il driver usa il numero di client connessi e lo stato della radio dal gestore radio per determinare se il dispositivo GNSS è inattivo. Quando il dispositivo GNSS è inattiva, il driver chiama il metodo ResumeIdle che fa sì che il framework driver avvii una transizione D3. Il framework driver eseguirà l'implementazione del driver del metodo OnD0Exit .

Quando il dispositivo GNSS deve essere riattivato a causa di un nuovo client connesso o dell'accensione della radio, il driver chiama il metodo StopIdle . Il framework driver eseguirà l'implementazione del driver del metodo OnD0Entry . Si noti che il driver deve eseguire il metodo StopIdle con il parametro WaitForD0 impostato su FAL edizione Standard.

Il diagramma di stato fornito di seguito illustra questa relazione e funge da guida per lo sviluppatore di driver per quando chiamare i metodi StopIdle e ResumeIdle .

Poiché il driver è responsabile di tenere traccia dell'inattività del dispositivo, deve gestire direttamente la coda di I/O e gli accessi ai dispositivi hardware risultanti.

Il driver del sensore di posizione deve implementare i metodi IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspend e IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart . Si noti che il framework del driver chiamerà IPnpCallbackSelfManagedIo::OnSelfManagedIoInit all'avvio del dispositivo, incluso l'avvio del sistema. Le chiamate successive vengono eseguite al callback IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart . Queste interfacce devono essere registrate quando il framework driver chiama il metodo CreateDevice.

IPnpCallbackSelfManagedIo ::OnSelfManagedIoRestart segnala al driver del sensore di posizione che le richieste nel driver possono interagire direttamente con l'hardware del dispositivo GNSS, incluse le richieste da ISensorDriver:: callback. Si noti che il framework driver garantisce che l'hardware del dispositivo sia accessibile nei metodi OnD0Exit e OnD0Entry .

Analogamente, quando il metodo IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspend viene chiamato dal framework, il driver deve completare tutte le richieste ISensorDriver immediatamente prima di tornare da OnSelfManagedIoSuspend. Il driver non può accedere all'hardware del dispositivo in caso contrario potrebbe impedire il completamento di una di queste richieste entro un secondo. Se il driver del sensore di posizione ha una richiesta in sospeso all'hardware del dispositivo GNSS, la richiesta deve essere annullata se non può essere completata in altro modo senza violare questo vincolo di tempo.

Se il driver non interagisce direttamente con un dispositivo hardware o tutte le richieste hardware in sospeso vengono completate entro un secondo, il driver deve implementare il metodo OnSelfManagedIoSuspend usando la procedura seguente:

  1. Impostare un flag globale che indica che il dispositivo è inattivo.
  2. Chiamare il metodo StopSynchronously nella coda Windows Driver Frameworks (WDF).
  3. Arrestare qualsiasi altro lavoro asincrono che accede all'hardware del dispositivo GNSS.
  4. Chiamare il metodo Start nella coda WDF.
  5. Cancellare il flag globale impostato nel passaggio 1.

Per un esempio di codice che esegue queste operazioni, vedere l'implementazione onSelfManagedIoSuspend in Sensors Geolocation Sample Driver (UMDF Versione 1).

Se il driver interagisce direttamente con un dispositivo hardware, tutte le richieste in sospeso all'hardware devono essere annullate prima di scaricare la coda di I/O. Il driver deve implementare il metodo OnSelfManagedIoSuspend usando la procedura seguente:

  1. Impostare un flag globale che indica che il dispositivo è inattivo.
  2. Chiamare il metodo Stop nella coda WDF.
  3. Annullare tutte le richieste hardware in sospeso per consentire il completamento di tutti i thread di callback ISensorDriver .
  4. Chiamare il metodo StopSynchronously nella coda WDF.
  5. Arrestare qualsiasi altro lavoro asincrono che accede all'hardware del dispositivo GNSS.
  6. Chiamare il metodo Start nella coda WDF.
  7. Cancellare il flag globale impostato nel passaggio 1.

Tutti i driver del sensore di posizione devono eliminare in modo sincrono la coda di I/O all'interno dell'implementazione del metodo OnSelfManagedIoFlush .

Modalità sospensione e risparmio energia rimosse

I dispositivi GNSS possono supportare sia una modalità sospensione che una modalità di spegnimento quando il dispositivo ha un contesto locale mantenuto e può comunque rispondere alle richieste sul bus di comunicazione senza segnalazione esterna. In genere, un dispositivo in modalità di alimentazione rimossa non può rispondere alle richieste del bus. Il driver del sensore di posizione deve essere scritto per capire se il dispositivo sottostante è in grado di rimuovere la modalità di alimentazione. Il driver del sensore di posizione deve abilitare D3cold solo se il dispositivo sottostante è in grado di rimuovere la modalità di alimentazione e il driver è in grado di salvare/ripristinare il contesto e di inizializzare nuovamente il dispositivo. In caso contrario, il sensore di posizione deve continuare a usare D3 come stato di inattività, ma non abilitare D3cold. In questo modo i driver di bus e filtro sottostanti possono inserire il dispositivo in modalità sospensione a basso consumo e non la modalità di alimentazione rimossa.

Quando il driver del sensore di posizione indica che supporta D3cold e avvia una transizione D3, i driver di bus e filtro sottostanti sono responsabili della rimozione dell'alimentazione dal dispositivo. Il meccanismo può essere implementato da ACPI nel caso di dispositivi GNSS connessi con UART. In alternativa, il meccanismo può essere abilitato da una combinazione del driver dell'hub USB e del driver ACPI nel caso di dispositivi GNSS con enumerazione USB.

Se il dispositivo GNSS si trova nel SoC, il driver proprietario e il firmware del fornitore soC implementato nei driver sottostanti sono responsabili della rimozione dell'alimentazione dal dispositivo GNSS. Se il dispositivo GNSS utilizza più di 1 mW nella modalità di alimentazione in sospensione, il driver GNSS, il firmware della piattaforma e l'hardware devono essere progettati per posizionare il dispositivo in modalità di alimentazione rimossa quando tutti i client vengono disconnessi.

Rilevamento inattiva

Il driver del sensore di posizione per un dispositivo GNSS deve eseguire la transizione del dispositivo alla modalità di alimentazione in sospensione, quando possibile. Se un'app richiede un intervallo di report lungo, il driver del sensore di posizione deve eseguire la transizione del dispositivo GNSS alla modalità di alimentazione in sospensione fino a quando non viene richiesta la correzione successiva. Il driver del sensore di posizione deve eseguire la transizione del dispositivo GNSS alla modalità di alimentazione attiva con tempo sufficiente per triangolare una correzione e fornire all'app i dati sulla posizione.

Si supponga, ad esempio, che l'intervallo di report più breve richiesto sia di 30 minuti e che il dispositivo richieda un minuto per riscaldare e acquisire una correzione della posizione. In questo scenario, il driver del sensore di posizione deve:

  • Subito dopo aver specificato le informazioni sulla posizione, chiamare ResumeIdle che eseguirà la transizione del dispositivo GNSS alla modalità sospensione (D3).
  • Arm a timer per scadere 28 minuti in futuro. (TimerExpiration = ReportInterval - WarmUpTime).
  • Quando il timer scade, chiama StopIdle che eseguirà la transizione del dispositivo GNSS a D0.
  • Quando il dispositivo ha acquisito una correzione, fornire informazioni sulla posizione all'applicazione. Nota Il driver del sensore di posizione deve configurare attentamente D3cold.

Se il dispositivo richiede una potenza continua per ottenere la latenza di ripresa per WarmUpTime, D3cold non deve essere abilitato. D3cold può essere abilitato in modo dinamico in fase di esecuzione modificando il valore di ExcludeD3Cold nella struttura WDF_DEVICE_POWER_POLICY_IDLE_edizione Standard TTINGS.

Quando un dispositivo GNSS collegato tramite USB passa alla modalità sospensione (D3) con D3cold disabilitato, il dispositivo passerà allo stato di sospensione USB che consente di risparmiare una notevole potenza del chipset e del processore. Se il driver del sensore di posizione abilita D3cold e passa alla modalità sospensione (D3), la piattaforma sottostante può rimuovere l'alimentazione dal dispositivo anche quando è collegata tramite il bus USB.

Configurazioni hardware supportate

Windows supporta quattro configurazioni hardware fisiche per il dispositivo GNSS. Il bus di connettività distingue ogni configurazione hardware.

GNSS connesso al SoC tramite UART

In questa configurazione, la radio GNSS è un dispositivo autonomo connesso a un UART nel SoC. La radio GNSS può avere uno o più OGGETTI Criteri di gruppo tra la radio e il SoC ai fini della transizione tra le modalità di alimentazione attiva e sospensione o per la gestione delle condizioni di reimpostazione e sequenziazione dell'alimentazione.

Se la radio GNSS utilizza meno di 1 mW nella modalità di alimentazione in sospensione, la radio GNSS può essere connessa a qualsiasi binario di alimentazione del sistema che soddisfi le specifiche del dispositivo.

Il dispositivo GNSS deve essere dichiarato nello spazio dei nomi ACPI e gli oggetti Criteri di gruppo per il risparmio energia devono essere controllati dai metodi di controllo _PS3 e _PS0 nel dispositivo nello spazio dei nomi ACPI. I metodi _PS3 e _PS0 vengono eseguiti dal driver ACPI in risposta alle transizioni D3 e D0 avviate dal driver del sensore di posizione. L'integratore di sistema deve dichiarare gli oggetti Criteri di gruppo come parte di un'area operativa GPIO nello spazio dei nomi ACPI.

Se il ricevitore GNSS utilizza più di 1 mW nella modalità di alimentazione in sospensione, il ricevitore GNSS deve essere collegato a una guida elettrica che può essere accesa e disattivata usando un GPIO controllato dal firmware ACPI nel SoC. In questa configurazione, il driver del sensore di posizione deve abilitare D3cold. Il GPIO per il controllo della guida di alimentazione commutabile deve essere esposto in un'area operativa GPIO ACPI. L'integratore di sistemi deve descrivere una risorsa di alimentazione per la guida di alimentazione commutabile, inclusi i metodi _OFF e _ON, nonché i riferimenti alla risorsa di alimentazione nel dispositivo GNSS nello spazio dei nomi.

Il driver ACPI di Windows valuterà il metodo _OFF quando il driver del sensore di posizione passa a D3. Quando il driver del sensore di posizione passa a D0, il driver ACPI di Windows valuterà il metodo _ON sotto la risorsa di alimentazione. L'implementazione dei metodi _OFF e _ON deve attivare o disattivare il GPIO che controlla la guida di alimentazione commutabile e implementare eventuali ritardi di sequenziazione di alimentazione necessari.

GNSS integrato nel SoC

Se il dispositivo GNSS è fisicamente integrato nel SoC, l'implementazione di comunicazioni e risparmio energia è specifica per il SoC stesso.

Il dispositivo GNSS deve comunque essere enumerato tramite ACPI, anche se le comunicazioni con il ricevitore GNSS sottostante possono verificarsi tramite un driver di trasporto fornito dal fornitore SoC. In questa configurazione, il driver del sensore di posizione deve comunque implementare una transizione D3 per attivare la modalità di sospensione o rimozione dell'alimentazione quando tutti i client sono disconnessi. La transizione D3 garantisce che gli strumenti di risparmio energia e la diagnostica del sistema operativo Windows possano osservare facilmente lo stato di alimentazione del dispositivo GNSS.

Gli integratori di sistemi che prevedono di sfruttare una radio GNSS integrata nel sistema SoC devono rivolgersi a stretto contatto con il fornitore SoC per il supporto firmware, driver e risparmio energia.

GNSS integrato in una radio MBB collegata tramite USB come dispositivo composito USB

La finestra di progettazione del sistema può scegliere di integrare un modulo MBB collegato tramite USB che contiene un ricevitore GNSS incorporato. In questa configurazione hardware, il driver del sensore di posizione comunica con il ricevitore GNSS incorporato direttamente sul bus USB come una funzione in un dispositivo composito USB.

Nota I sistemi con dispositivi GNSS nel modulo MBB richiedono un'attenta considerazione sull'integrazione. Contattare il rappresentante Microsoft per esaminare l'hardware, il software e la progettazione del firmware per queste soluzioni.

In questa configurazione, il dispositivo GNSS è una parte integrata del modulo MBB. La radio GNSS può condividere componenti di elaborazione, alimentazione e antenna RF con la radio MBB. La radio GNSS viene esposta direttamente al software come un'interfaccia in un dispositivo composito USB. Il driver del sensore di posizione comunica con la radio GNSS direttamente sul bus USB usando le interfacce del driver USB implementate all'interno del driver del sensore di posizione.

Il risparmio energia dell'hardware GNSS è basato sulle comunicazioni in banda al modulo GNSS. Il modulo GNSS e il driver del sensore di posizione devono supportare un meccanismo in banda per attivare e disattivare la radio GNSS. Questo meccanismo non deve basarsi sull'uso di oggetti Criteri di gruppo dal SoC al modulo MBB+GNSS.

Analogamente, il modulo GNSS e il driver del sensore di posizione devono supportare la transizione del dispositivo allo stato D3 in modo che il dispositivo composito USB possa entrare nello stato di sospensione USB (sospensione selettiva). Tutte le funzioni in un dispositivo composito USB devono essere sospese affinché il dispositivo composito venga sospeso. Il dispositivo GNSS deve essere in modalità sospensione (D3) affinché la funzione GNSS e l'intero dispositivo composito USB siano nello stato di sospensione.

Nota Il dispositivo GNSS e il driver devono supportare la sospensione selettiva altrimenti il controller host USB nel SoC non può entrare in modalità a basso consumo e impedirà il risparmio di energia durante lo standby moderno.

In questa configurazione il dispositivo GNSS viene enumerato tramite USB e il driver composito USB, ma è descritto nello spazio dei nomi ACPI. In questa configurazione non è disponibile alcun supporto per le comunicazioni GPIO tra il dispositivo GNSS nel modulo MBB e il SoC. Il dispositivo GNSS deve rimanere enumerato in Windows tramite ACPI durante l'intero periodo di tempo in cui la piattaforma rimane nello stato di alimentazione del sistema S0, anche se la radio è disabilitata dall'utente. Il dispositivo GNSS non deve mai scomparire dal bus USB durante qualsiasi parte del sistema in tempo.

GNSS integrato in una radio MBB collegata tramite USB con i servizi di dispositivo

La finestra di progettazione del sistema può scegliere di integrare un modulo MBB collegato tramite USB che contiene un ricevitore GNSS incorporato. In questa configurazione hardware, il driver del sensore di posizione comunica con il ricevitore GNSS incorporato tramite l'interfaccia dei servizi di dispositivo mobile broadband anziché il dispositivo GNSS esposto come funzione USB autonoma come parte del dispositivo composito che rappresenta l'intero modulo MBB.

Nota Questa configurazione non è consigliata. Gli integratori di sistema che scelgono questo metodo di integrazione dei dispositivi GNSS devono contattare il rappresentante Microsoft per convalidare l'implementazione corretta. È preferibile esporre il dispositivo GNSS come parte di un dispositivo composito USB che rappresenta il modulo MBB.

In questa configurazione, il dispositivo GNSS è una parte integrata del modulo MBB. La radio GNSS può condividere componenti di elaborazione, alimentazione e antenna RF con la radio MBB. La radio GNSS viene esposta indirettamente al software tramite l'interfaccia dei servizi di dispositivo a cui è possibile accedere tramite l'interfaccia COM WindowsIMbnDeviceServices. Il driver del sensore di posizione comunica con la radio GNSS tramite l'interfaccia IMbnDeviceServices.

Il risparmio energia dell'hardware GNSS è basato sulle comunicazioni in banda tramite l'interfaccia dei servizi dispositivo al modulo MBB. L'hardware GNSS deve supportare un meccanismo in banda sull'interfaccia dei servizi dispositivo per disattivare la radio e posizionare il dispositivo GNSS in modalità a basso consumo. Questi meccanismi devono essere accessibili dal driver del sensore di posizione tramite l'interfaccia dei servizi di dispositivo.

In questa configurazione, il dispositivo GNSS deve essere enumerato da ACPI e descritto nello spazio dei nomi ACPI come elemento figlio del modulo mobile broadband. Il dispositivo GNSS non avrà risorse hardware descritte nel dispositivo nello spazio dei nomi ACPI.

Il driver del sensore di posizione deve comunque eseguire lo stesso set di linee guida per l'implementazione del risparmio energia, come descritto nella sezione precedente requisiti di implementazione del driver.

In questa configurazione non è disponibile alcun supporto per le comunicazioni GPIO tra il dispositivo GNSS nel modulo MBB e il SoC. Tutte le comunicazioni di risparmio energia e radio vengono eseguite fisicamente sul bus USB ed esposte al driver del sensore di posizione tramite l'interfaccia dei servizi dispositivo. Il dispositivo GNSS deve rimanere enumerato in Windows tramite ACPI per tutto il sistema in tempo, anche se la radio è disabilitata dall'utente.

Quando si implementa questa configurazione hardware, l'integratore di sistemi è incoraggiato a collaborare con il fornitore del modulo MBB per garantire che il dispositivo GNSS sia esposto correttamente nello spazio dei nomi ACPI.

Problemi di riattivazione

Non ci sono problemi di riattivazione per i dispositivi GNSS. Non è previsto che i dispositivi GNSS supportino la riattivazione del SoC da uno stato a basso consumo.

Test e convalida

I fornitori di dispositivi GNSS, i fornitori di moduli MBB e gli integratori di sistemi devono seguire queste raccomandazioni per testare e convalidare l'implementazione del risparmio energia del dispositivo GNSS e dei relativi componenti software. Per altre informazioni, vedere Global Navigation Satellite System (GNSS) Test Guidance(Guida al test del sistema GNSS).

Risparmio energia sensore di posizione

L'integratore di sistemi deve verificare che il driver del sensore di posizione per il dispositivo GNSS esegua transizioni di risparmio energia e entri nello stato D3 quando tutti i client sono stati disconnessi o la radio è stata disabilitata.

I test case di base sono:

  • Osservare che il driver del sensore di posizione passa a D3 entro 10 secondi dalla disattivazione dello schermo per lo standby moderno.
  • Osservare che il driver del sensore di posizione passa a D3 entro 10 secondi dalla disattivazione della radio nell'applicazione Windows Impostazioni.
  • Osservare la transizione del driver del sensore di posizione a D0 immediatamente dopo l'uscita dallo standby moderno e l'avvio di un'applicazione che usa l'API Location.

Il modo più semplice per osservare le transizioni di stato Dx del driver del sensore di posizione consiste nell'usare Windows Performance Toolkit per confrontarsi con altri dispositivi del sensore Windows. Questo metodo usa la strumentazione di Windows per convalidare la transizione dell'IRP D3 tramite lo stack di driver di dispositivo che comprende il dispositivo GNSS. Windows Power Manager include la strumentazione ETW (Event Tracing for Windows), inclusa la strumentazione per gli IRP dx (Device Power Power). Per visualizzare queste informazioni in modalità manuale, ottenere e installare Windows Performance Toolkit (WPT) nel sistema sottoposto a test.

Avviare una traccia XPerf in modalità utente usando i comandi seguenti:

  1. Aprire un prompt dei comandi di Amministrazione istrator.

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

  3. Avvia Xperf: xperf.exe -start power_session -on Microsoft-Windows-Kernel-Power

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

  5. Attendere 120 secondi.

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

  7. Attendere 60 secondi.

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

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

  10. Aprire il file power.txt in un editor di testo e cercare l'ID hardware del dispositivo GNSS. L'ID hardware del dispositivo GNSS può essere determinato dalla scheda Dettagli delle proprietà del dispositivo in Gestione dispositivi in Percorso istanza del dispositivo. Nell'esempio seguente il percorso dell'istanza del dispositivo GNSS è ACPI\MST0731\2&daba3ff&0.

  11. L'IRP D3 per il dispositivo GNSS è indicato da un evento di tipo Microsoft-Windows-Kernel-Power/IRP/Stop con il percorso dell'istanza del dispositivo GNSS e l'ultimo valore dell'evento pari a 3 per lo stato D3. L'output dell'evento seguente dal file power.txt mostra l'inizio dell'IRP D3.

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

  12. Questo evento deve essere registrato all'inizio del file di output power.txt. Il parametro 0x868e2728 nell'esempio precedente è un puntatore alla struttura IRP D3. Individuando gli eventi successivi con questo stesso puntatore IRP, è possibile individuare una visualizzazione dell'IRP D3 che scorre attraverso lo stack di driver che comprende il dispositivo GNSS. Si noti che il puntatore IRP sarà specifico del sistema e della durata di avvio.

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

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

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

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

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

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

La convalida del dispositivo GNSS torna a D0 quando lo schermo è attivato è un processo simile. Un evento Microsoft-Windows-Kernel-Power/IRP/Start per il dispositivo GNSS verrà registrato con uno stato di destinazione 0 (D0). L'IRP D0 scorrerà i driver che comprendono lo stack di dispositivi GNSS in modo simile a D3 IRP.

Elenco di controllo per il risparmio energia GNSS

Gli integratori di sistemi, i fornitori di radio GNSS e i fornitori soC 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.

  • Integrare un dispositivo GNSS nella piattaforma moderna con supporto per standby nell'ordine di preferenza di configurazione seguente:

    1. Integrato con un modulo MBB (per i sistemi dotati di MBB), connesso tramite USB.
    2. Integrato nel SoC (per i sistemi con GNSS nel SoC).
    3. Autonomo all'esterno del SoC connesso a UART, I2C o a un altro bus a basso consumo.
  • Selezionare un dispositivo GNSS con un consumo medio di energia di sospensione (radio off) inferiore a 1 mW, incluse le interfacce di connessione del bus.

  • Se il dispositivo GNSS ha un consumo medio di energia di sospensione (radio off) superiore a 1 mW, l'integratore di sistema e il fornitore di dispositivi GNSS devono supportare la rimozione dell'alimentazione completamente dal dispositivo GNSS quando non sono presenti client dell'applicazione connessi o la radio viene disattivata dall'utente.

  • Assicurarsi che il fornitore del dispositivo GNSS fornisca un driver del sensore di posizione che implementa il risparmio energia di runtime in base al numero di client connessi e allo stato della radio GNSS.

  • Assicurarsi che il fornitore del dispositivo GNSS fornisca una libreria di gestione radio che espone la radio GNSS nell'applicazione Windows Impostazioni.

    Il driver del sensore di posizione deve implementare un'interfaccia privata per comunicare lo stato di radio on/off tra la libreria di gestione radio fornita dal fornitore e il driver del sensore di posizione fornito dal fornitore.

  • Se GNSS è un dispositivo autonomo all'esterno del SoC connesso tramite UART, I2C o un altro bus a basso consumo, l'integratore di sistema e il fornitore di dispositivi GNSS devono:

    1. Documentare tutti gli oggetti Criteri di gruppo tra il dispositivo GNSS e il SoC stesso.
    2. Esporre tutti gli oggetti Criteri di gruppo per il risparmio energia come parte di un'area operativa GPIO nello spazio dei nomi ACPI.
  • Se GNSS è un dispositivo autonomo all'esterno del SoC connesso tramite UART, I2C o altro bus a basso consumo e il consumo medio di energia del dispositivo GNSS nella modalità di alimentazione in sospensione è maggiore di 1 mW, l'integratore di sistemi e il fornitore di dispositivi GNSS devono:

    1. Fornire una risorsa di alimentazione ACPI e metodi di controllo _ON/_OFF per descrivere il dominio di alimentazione GNSS.
    2. Specificare i metodi _PR0 e _PR3 nel dispositivo GNSS nello spazio dei nomi ACPI che fanno riferimento alla risorsa di alimentazione ACPI descritta.
    3. Assicurarsi che il driver del sensore di posizione eseese la transizione D3 e che D3cold nel driver.
  • Se GNSS fa parte di un modulo MBB, l'integratore di sistemi e il fornitore di dispositivi GNSS devono:

    1. Esporre il dispositivo GNSS come parte di un dispositivo composito USB.
    2. Fornire un driver del sensore di posizione che comunica con il dispositivo GNSS direttamente tramite il bus USB.
    3. Assicurarsi che la radio on/off e tutta la gestione dell'alimentazione del dispositivo GNSS possa essere eseguita in banda sul bus USB. Nessun oggetto Criteri di gruppo può essere usato per modificare lo stato di alimentazione o radio GNSS in questa configurazione hardware.
    4. Assicurarsi che il dispositivo USB che descrive il modulo MBB o il dispositivo composito USB che descrive sia la radio MBB che la radio GNSS entra nello stato di sospensione USB durante lo standby moderno.
    5. Il driver del sensore di posizione DEVE entrare in modalità D3 (sospensione) quando tutti i client sono disconnessi o la radio è stata disattivata anche se comunica con il dispositivo tramite l'interfaccia dei servizi del dispositivo.
    6. Se il dispositivo GNSS è controllato sull'interfaccia dei servizi per dispositivi mobili a banda larga (non consigliata), il dispositivo GNSS deve essere descritto nello spazio dei nomi ACPI di sistema senza risorse hardware. Il dispositivo GNSS deve essere descritto come figlio del modulo mobile broadband nello spazio dei nomi ACPI.
  • Testare e verificare che il dispositivo GNSS e il driver del sensore di posizione eseguano correttamente il risparmio energia. Convalidare almeno i test case seguenti:

    • Osservare che il driver del sensore di posizione passa a D3 entro 10 secondi dalla disattivazione dello schermo per lo standby moderno.
    • Osservare che il driver del sensore di posizione passa a D3 entro 10 secondi dalla disattivazione della radio nell'applicazione Windows Impostazioni.
    • Osservare la transizione del driver del sensore di posizione a D0 immediatamente dopo l'uscita dallo standby moderno e l'avvio di un'applicazione che usa l'API Location.
  • Convalidare il consumo di energia del dispositivo GNSS nello stato di sospensione (D3) e assicurarsi che sia inferiore a 1 mW in media.