Compartir a través de


Administración de energía del receptor GNSS para plataformas modernas en espera

En este tema se describe la administración de energía del sistema de navegación por satélite global (GNSS) para plataformas modernas compatibles con espera.

Un equipo Windows que implemente el modelo de energía en espera moderno también puede contener un dispositivo global de sistema satélite de navegación (GNSS). Un dispositivo GNSS permite al usuario obtener información de posicionamiento de alta precisión desde un sistema de navegación por satélite, como los sistemas de posicionamiento global (GPS) o el sistema satélite de navegación en órbita global (GLONASS). Una vez que la plataforma de hardware entra en espera moderna, el dispositivo GNSS debe entrar en un modo de funcionamiento de bajo consumo en el que consume no más de 1 mW de potencia. El dispositivo GNSS debe permanecer en este modo hasta que la plataforma salga del modo de espera moderno.

Los dispositivos GNSS que admiten GPS y el sistema global de navegación por satélite de navegación en órbita (GLONASS) han estado disponibles durante algún tiempo, pero los dispositivos GNSS más recientes admiten sistemas de navegación por satélite como BeiDou Navigation Satellite System (BDS) y Galileo.

Normalmente, una plataforma en espera moderna se basa en un sistema en un circuito integrado de chip (SoC). Windows admite las siguientes opciones para agregar un dispositivo GNSS a esta plataforma:

  • Incorpore un módulo de banda ancha móvil (MBB) que contenga un dispositivo GNSS integrado. Este método es común en teléfonos móviles.
  • Seleccione un SoC que contenga un dispositivo GNSS integrado.
  • Use un bus de bajo consumo, como I2C, SPI o UART, para conectar un dispositivo GNSS independiente al SoC.

Si es posible, el integrador de sistemas debe seleccionar un dispositivo GNSS que implemente un modo de suspensión de bajo consumo en el que el dispositivo no consume más de 1 mW de potencia. El proveedor del dispositivo GNSS debe proporcionar un controlador de sensor de ubicación que traduzca los datos de ubicación del dispositivo GNSS al formulario requerido por las aplicaciones cliente. Estas aplicaciones se conectan al dispositivo GNSS a través de la API de ubicación de Windows. El controlador del sensor de ubicación para el dispositivo GNSS realiza un seguimiento de la siguiente información:

  • El número de clientes que están conectados actualmente al dispositivo GNSS a través de la API de ubicación.
  • Estado del interruptor de encendido/apagado de radio para el dispositivo GNSS. El usuario controla este modificador a través de la aplicación Configuración de Windows. Para obtener más información, consulte Integración de la administración de radio.

El controlador del sensor de ubicación usa esta información para determinar cuándo el dispositivo GNSS está inactivo para que se pueda colocar en un modo de bajo consumo. Un dispositivo GNSS se usa activamente solo si uno o varios clientes están conectados al dispositivo. De lo contrario, el dispositivo está inactivo.

Para ampliar la duración de la batería del sistema, el acceso al dispositivo GNSS está restringido durante el modo de espera moderno. Las aplicaciones de pantalla de bloqueo pueden acceder a la información de geovalla y posición durante el modo de espera moderno. Sin embargo, las aplicaciones que no son de pantalla de bloqueo pueden usar la API de ubicación para obtener datos de ubicación del dispositivo GNSS solo mientras la pantalla está activada y la plataforma interactúa con el usuario. Poco después de que la pantalla se apague y la plataforma entre en espera moderna, las aplicaciones que no son de pantalla de bloqueo que tienen conexiones con el dispositivo GNSS se desconectan automáticamente mediante Windows y las aplicaciones se suspenden.

Modos de administración de energía

Se espera que el receptor GNSS tenga 4 modos de administración de energía, como se describe a continuación.

Modos de potencia del receptor GNSS

Modo de alimentación del dispositivo Descripción Estado de alimentación del dispositivo (Dx) Estado de radio (como se muestra al usuario) Número de clientes conectados Consumo medio de energía (mW) Mecanismo de transición

Activo (adquisición)

El receptor GNSS está obteniendo una corrección por satélite.

D0

Activado

>= 1

~200 mW

N/D

Activo (seguimiento de 1 Hz)

El receptor GNSS ha adquirido una corrección por satélite y proporciona datos a una o varias aplicaciones periódicamente.

D0

Activado

>= 1

~100 mW (específico del dispositivo)

N/D

En reposo

El receptor GNSS no tiene clientes conectados El hardware del receptor GNSS todavía tiene energía aplicada para conservar el contexto en el dispositivo y reducir el tiempo de latencia de reanudación al modo activo.

D3(D3hot)

Desactivado o activado

0

<1 mW (específico del dispositivo)

Iniciado por software. Este es el estado de suspensión selectiva para las radios GNSS conectadas directamente al bus serie universal (USB) o a un dispositivo compuesto USB.

Energía quitada

El receptor GNSS no tiene clientes conectados, la radio está apagada y una entidad externa ha quitado toda la potencia del receptor GNSS.

D3(D3cold)

Desactivado o activado

0

0 mW

Iniciado por software y requiere coordinación de hardware para quitar energía.

El controlador de software para el receptor GNSS también debe controlar la administración de radio, como se describe a continuación.

Requisitos de implementación de la plataforma

Una plataforma moderna en espera tiene varias opciones para integrar físicamente un receptor GNSS. El receptor GNSS puede formar parte de un dispositivo independiente que está conectado al SoC mediante un bus de comunicaciones de bajo consumo. El receptor GNSS también puede integrarse en una radio de banda ancha móvil (MBB), ya que los receptores GNSS son comunes en los teléfonos móviles. Por último, el receptor GNSS se puede integrar en el propio SoC.

Estas varias opciones presentan un desafío para el integrador del sistema al determinar qué implementación seleccionar para una plataforma que requiere la funcionalidad de GNSS. En el caso de las plataformas en espera modernas de Windows, se recomienda que los integradores de sistemas integren GNSS en el orden de prioridad siguiente:

  1. Si el sistema está equipado con una radio MBB, utilice el receptor GNSS integrado en el módulo MBB.
  2. Si el sistema está equipado con un SoC que tiene un receptor GNSS incorporado, use el receptor GNSS integrado en el SoC.
  3. Integre un receptor GNSS independiente conectado al SoC a través de un bus de comunicaciones de bajo consumo (como UART, SPI o I2C).

El integrador del sistema no debe exponer ningún receptor GNSS extraño a Windows. En presencia de varios receptores GNSS expuestos al sistema operativo, Windows NO agregará la información de ubicación de todos los dispositivos GNSS.

Mecanismo de administración de energía de software

Se espera que los dispositivos GNSS en las plataformas Windows se administren mediante un controlador de User-Mode Driver Framework (UMDF) que usa el modelo de extensión de clase de sensor de Windows e implementa la interfaz ISensorDriver. Este controlador GNSS se denomina controlador de sensor de ubicación y se espera que administre el receptor GNSS subyacente y proporcione datos a las solicitudes de aplicación para obtener información de ubicación.

Información general y modelo de aplicación

Los controladores del sensor de ubicación usan el número de clientes de aplicaciones conectadas como mecanismo principal para determinar cuándo el dispositivo GNSS puede entrar en el modo de suspensión o apagado. El controlador del sensor de ubicación también es responsable de comunicarse con una biblioteca de administrador de radio proporcionada por el proveedor de GNSS que permite al usuario controlar si la radio GNSS está habilitada o deshabilitada. El controlador del sensor de ubicación puede usar tanto el número de clientes conectados como la preferencia del usuario para el estado de radio para asegurarse de que el dispositivo GNSS está en modo de suspensión o apagado de bajo consumo siempre que sea posible.

Las aplicaciones de Microsoft Store administran la duración de las aplicaciones en primer plano y en segundo plano y, por lo tanto, tienen una influencia significativa en el número de clientes de aplicaciones conectados al controlador del sensor de ubicación. Una aplicación en primer plano solicita información de ubicación a través de la API de ubicación de Windows. Cuando el usuario cambia la aplicación en primer plano al segundo plano, el modelo de aplicación de Microsoft Store garantiza que la aplicación cliente esté desconectada del receptor GNSS.

Este mecanismo de modelo de aplicación permite que el controlador del sensor de ubicación realice un seguimiento sencillo del número de clientes de aplicaciones conectados. Siempre que haya cero clientes de aplicaciones conectadas, el controlador del sensor de ubicación puede realizar la transición del dispositivo GNSS a un modo de suspensión o apagado.

Cuando el sistema entra en espera moderno, Windows suspenderá automáticamente todas las aplicaciones en primer plano, lo que dará lugar al controlador del sensor de ubicación que observa el número de clientes conectados que pasan a cero.

Integración de la administración de radio

El controlador del sensor de ubicación también debe implementar una interfaz para comunicarse con la biblioteca de administrador de radio proporcionada por el proveedor. La biblioteca del administrador de radio permite a Windows exponer un control de radio de dispositivo GNSS "on/off" en la aplicación Configuración de Windows.

Requisitos de implementación del controlador del sensor de ubicación

El controlador del sensor de ubicación debe colocar el dispositivo GNSS en un estado D3 de bajo consumo cuando el dispositivo GNSS no está en uso. El dispositivo GNSS no está en uso cuando no hay clientes conectados actualmente o el GNSS se ha deshabilitado a través del administrador de radio.

El controlador del sensor de ubicación debe conservar el dispositivo GNSS en el estado D3 en todo momento cuando el dispositivo GNSS se haya deshabilitado a través del administrador de radio. Este requisito impide que el controlador use una cola administrada por energía y simplemente reenvíe las solicitudes de los clientes conectados. El controlador del sensor de ubicación debe usar una cola no administrada por energía para E/S y administrarla directamente mediante los métodos StopIdle y ResumeIdle . El sensor de ubicación debe seguir siendo el propietario de la directiva de energía para la pila de controladores del dispositivo GNSS. El controlador debe establecer el valor de bPowerManaged en FALSE al llamar a IWDFDevice::CreateIoQueue para crear la cola de E/S.

Como se mencionó anteriormente, el controlador usa el número de clientes conectados y el estado de la radio desde el administrador de radio para determinar si el dispositivo GNSS está inactivo. Cuando el dispositivo GNSS está inactivo, el controlador llama al método ResumeIdle, lo que hace que el marco de trabajo del controlador inicie una transición D3. El marco de trabajo del controlador ejecutará la implementación del controlador del método OnD0Exit .

Cuando se debe reactivar el dispositivo GNSS debido a un nuevo cliente conectado o encendido de la radio, el controlador llama al método StopIdle . El marco de trabajo del controlador ejecutará la implementación del controlador del método OnD0Entry . Tenga en cuenta que el controlador debe ejecutar el método StopIdle con el parámetro WaitForD0 establecido en FALSE.

El diagrama de estado que se proporciona a continuación ilustra esta relación y sirve como guía para el desarrollador de controladores para cuándo llamar a los métodos StopIdle y ResumeIdle .

Dado que el controlador es responsable de realizar un seguimiento de si el dispositivo está inactivo, debe administrar directamente la cola de E/S y los accesos resultantes del dispositivo de hardware.

El controlador del sensor de ubicación debe implementar los métodos IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspend e IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart . Tenga en cuenta que el marco de trabajo del controlador llamará a IPnpCallbackSelfManagedIo::OnSelfManagedIoInit cuando se inicie el dispositivo, incluido el arranque del sistema. Las llamadas posteriores son a la devolución de llamada IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart . Estas interfaces deben registrarse cuando el marco de trabajo del controlador llama al método CreateDevice.

IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart indica al controlador del sensor de ubicación que las solicitudes en el controlador pueden interactuar directamente con el hardware del dispositivo GNSS, incluidas las solicitudes de las devoluciones de llamada de ISensorDriver:: . Tenga en cuenta que el marco de trabajo del controlador garantiza que se pueda tener acceso al hardware del dispositivo en los métodos OnD0Exit y OnD0Entry .

Del mismo modo, cuando el marco llama al método IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspend , el controlador debe completar todas las solicitudes de ISensorDriver inmediatamente antes de volver de OnSelfManagedIoSuspend. El controlador no puede acceder al hardware del dispositivo si lo hace, podría impedir que cualquiera de estas solicitudes se complete en un segundo. Si el controlador del sensor de ubicación tiene una solicitud pendiente al hardware del dispositivo GNSS, la solicitud debe cancelarse si no se puede completar de ninguna otra manera sin infringir esta restricción de tiempo.

Si el controlador no interactúa directamente con un dispositivo de hardware o se garantiza que todas las solicitudes de hardware pendientes se completen en un segundo, el controlador debe implementar el método OnSelfManagedIoSuspend mediante el procedimiento siguiente:

  1. Establezca una marca global que indique que el dispositivo está inactivo.
  2. Llame al método StopSynchronously en la cola de Windows Driver Frameworks (WDF).
  3. Detenga cualquier otro trabajo asincrónico que tenga acceso al hardware del dispositivo GNSS.
  4. Llame al método Start en la cola WDF.
  5. Borre la marca global establecida en el paso 1.

Para obtener un ejemplo de código que realiza estas operaciones, consulte la implementación OnSelfManagedIoSuspend en Sensors Geolocation Sample Driver (UMDF Version 1).

Si el controlador interactúa directamente con un dispositivo de hardware, las solicitudes pendientes al hardware se deben cancelar antes de vaciar la cola de E/S. El controlador debe implementar el método OnSelfManagedIoSuspend mediante el procedimiento siguiente:

  1. Establezca una marca global que indique que el dispositivo está inactivo.
  2. Llame al método Stop en la cola de WDF.
  3. Cancele todas las solicitudes de hardware pendientes para permitir que se completen todos los subprocesos de devolución de llamada de ISensorDriver .
  4. Llame al método StopSynchronously en la cola de WDF.
  5. Detenga cualquier otro trabajo asincrónico que tenga acceso al hardware del dispositivo GNSS.
  6. Llame al método Start en la cola WDF.
  7. Borre la marca global establecida en el paso 1.

Todos los controladores de sensor de ubicación deben purgar sincrónicamente la cola de E/S dentro de su implementación del método OnSelfManagedIoFlush .

Modos de suspensión y eliminación de energía

Los dispositivos GNSS pueden admitir un modo de suspensión y un modo de apagado cuando el dispositivo conserva el contexto local y todavía puede responder a las solicitudes a través del bus de comunicaciones sin señalización externa. (Normalmente, un dispositivo en modo de apagado no puede responder a las solicitudes de bus). El controlador del sensor de ubicación debe escribirse para comprender si el dispositivo subyacente es capaz del modo de eliminación de energía. El controlador del sensor de ubicación debe habilitar D3cold solo si el dispositivo subyacente es capaz del modo de eliminación de energía y el controlador es capaz de guardar o restaurar el contexto y volver a inicializar el dispositivo. De lo contrario, el sensor de ubicación debe seguir usando D3 como estado inactivo, pero no habilitar D3cold. Esto permite que los controladores subyacentes de bus y filtro coloquen el dispositivo en modo de baja potencia y no el modo de apagado.

Cuando el controlador del sensor de ubicación indica que es compatible con D3cold y comienza una transición D3, los controladores de filtro y bus subyacentes son responsables de quitar la potencia del dispositivo. El mecanismo puede ser implementado por ACPI en el caso de los dispositivos GNSS conectados a UART. O bien, el mecanismo se puede habilitar mediante una combinación del controlador del concentrador USB y el controlador ACPI en el caso de dispositivos GNSS enumerados por USB.

Si el dispositivo GNSS está en el SoC, el controlador propietario y el firmware del proveedor de SoC implementados en los controladores subyacentes es responsable de quitar la energía del dispositivo GNSS. Si el dispositivo GNSS consume más de 1 mW en su modo de alimentación en suspensión, el controlador GNSS, el firmware de la plataforma y el hardware deben diseñarse para colocar el dispositivo en el modo de apagado cuando todos los clientes están desconectados.

Detección de inactividad

El controlador del sensor de ubicación para un dispositivo GNSS debe realizar la transición del dispositivo al modo de alimentación de suspensión siempre que sea posible. Si una aplicación solicita un intervalo de informe largo, el controlador del sensor de ubicación debe realizar la transición del dispositivo GNSS al modo de alimentación de suspensión hasta que se solicite la siguiente corrección. El controlador del sensor de ubicación debe realizar la transición del dispositivo GNSS al modo de energía activo con tiempo suficiente para triangular una corrección y proporcionar a la aplicación datos de ubicación.

Por ejemplo, supongamos que el intervalo de informe solicitado más corto es de 30 minutos y el dispositivo requiere un minuto para preparar y adquirir una corrección de ubicación. En este escenario, el controlador del sensor de ubicación debe:

  • Inmediatamente después de proporcionar información de ubicación, llame a ResumeIdle, que pasará el dispositivo GNSS al modo de suspensión (D3).
  • Arm un temporizador para que expire 28 minutos en el futuro. (TimerExpiration = ReportInterval – WarmUpTime).
  • Cuando expire el temporizador, llame a StopIdle, que pasará el dispositivo GNSS a D0.
  • Cuando el dispositivo haya adquirido una corrección, proporcione información de ubicación a la aplicación. Nota El controlador del sensor de ubicación debe configurar cuidadosamente D3cold.

Si el dispositivo requiere energía continua para lograr la latencia de reanudación de WarmUpTime, D3cold no debe estar habilitado. D3cold se puede habilitar dinámicamente en tiempo de ejecución cambiando el valor de ExcludeD3Cold en la estructura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS.

Cuando un dispositivo GNSS conectado a USB pasa al modo de suspensión (D3) con D3cold deshabilitado, el dispositivo pasará al estado de suspensión USB que ahorra una potencia significativa del chipset y del procesador. Si el controlador del sensor de ubicación habilita D3cold y realiza la transición al modo de suspensión (D3), la plataforma subyacente puede quitar la alimentación del dispositivo incluso cuando se conecta a través del bus USB.

Configuraciones de hardware admitidas

Windows admite cuatro configuraciones de hardware físico para el dispositivo GNSS. El bus de conectividad diferencia cada configuración de hardware.

GNSS conectado al SoC a través de UART

En esta configuración, la radio GNSS es un dispositivo independiente conectado a un UART en el SoC. La radio GNSS puede tener uno o varios GPIOs entre la radio y el SoC con el fin de realizar la transición entre los modos de energía activo y de suspensión o para controlar las condiciones de secuenciación de restablecimiento y encendido.

Si la radio GNSS consume menos de 1 mW en su modo de alimentación en suspensión, la radio GNSS puede estar conectada a cualquier raíl de alimentación del sistema que cumpla las especificaciones del dispositivo.

El dispositivo GNSS debe declararse en el espacio de nombres ACPI y los GPIOs para la administración de energía deben controlarse mediante el _PS3 y _PS0 métodos de control bajo el dispositivo en el espacio de nombres ACPI. El controlador ACPI ejecuta los métodos _PS3 y _PS0 en respuesta a las transiciones D3 y D0 iniciadas por el controlador del sensor de ubicación. El integrador del sistema debe declarar los GPIOs como parte de una región de operación GPIO en el espacio de nombres ACPI.

Si el receptor GNSS consume más de 1 mW en su modo de alimentación de suspensión, el receptor GNSS debe estar conectado a un raíl de alimentación que se puede encender y desactivar mediante un GPIO controlado por el firmware ACPI en el SoC. En esta configuración, el controlador del sensor de ubicación debe habilitar D3cold. El GPIO para controlar el raíl de alimentación conmutable debe exponerse en una región de operación GPIO ACPI. El integrador del sistema debe describir un recurso de alimentación para el raíl de alimentación conmutable, incluidos los métodos _OFF y _ON, así como las referencias al recurso de alimentación bajo el dispositivo GNSS en el espacio de nombres.

El controlador ACPI de Windows evaluará el método _OFF cuando el controlador del sensor de ubicación pase a D3. Cuando el controlador del sensor de ubicación pasa a D0, el controlador ACPI de Windows evaluará el método _ON bajo el recurso de energía. La implementación de los métodos de _OFF y _ON debe alternar el GPIO que controla el raíl de alimentación conmutable e implementar los retrasos de secuenciación de energía necesarios.

GNSS integrado en el SoC

Si el dispositivo GNSS está integrado físicamente en el SoC, la implementación de comunicaciones y administración de energía es específica del propio SoC.

El dispositivo GNSS todavía debe enumerarse a través de ACPI, aunque las comunicaciones con el receptor GNSS subyacente pueden producirse a través de un controlador de transporte proporcionado por el proveedor de SoC. En esta configuración, el controlador del sensor de ubicación debe seguir implementando una transición D3 para entrar en el modo de suspensión o apagado cuando todos los clientes se hayan desconectado. La transición D3 garantiza que las herramientas y diagnósticos de administración de energía del sistema operativo Windows puedan observar fácilmente el estado de energía del dispositivo GNSS.

Los integradores de sistemas que planean aprovechar una radio GNSS integrada en el sistema SoC deben consultar estrechamente con el proveedor de SoC para el soporte de firmware, controlador y administración de energía.

GNSS integrado en una radio MBB conectada a USB como un dispositivo compuesto USB

El diseñador del sistema puede optar por integrar un módulo MBB conectado a USB que contenga un receptor GNSS incrustado. En esta configuración de hardware, el controlador del sensor de ubicación se comunica con el receptor GNSS incrustado directamente a través del bus USB como una función en un dispositivo compuesto USB.

Nota Los sistemas con dispositivos GNSS en el módulo MBB requieren una consideración cuidadosa de la integración. Póngase en contacto con su representante de Microsoft para revisar el hardware, el software y el diseño de firmware para estas soluciones.

En esta configuración, el dispositivo GNSS es una parte integrada del módulo MBB. La radio GNSS puede compartir el procesamiento, la fuente de alimentación y los componentes de antena RF con la radio MBB. La radio GNSS se expone directamente al software como una interfaz en un dispositivo compuesto USB. El controlador del sensor de ubicación se comunica con la radio GNSS directamente a través del bus USB mediante interfaces de controlador USB implementadas dentro del controlador del sensor de ubicación.

La administración de energía del hardware GNSS se controla mediante comunicaciones en banda al módulo GNSS. El módulo GNSS y el controlador del sensor de ubicación deben admitir un mecanismo en banda para activar y desactivar la radio GNSS. Este mecanismo no debe basarse en el uso de los GPIOs del SoC al módulo MBB+GNSS.

Del mismo modo, el módulo GNSS y el controlador del sensor de ubicación deben admitir la transición del dispositivo al estado D3 para que el dispositivo compuesto USB pueda entrar en el estado de suspensión USB (suspensión selectiva). Todas las funciones de un dispositivo compuesto USB deben suspenderse para que el dispositivo compuesto se suspenda. El dispositivo GNSS debe estar en modo suspensión (D3) para que la función GNSS y todo el dispositivo compuesto USB esté en estado de suspensión.

Nota El dispositivo GNSS y el controlador deben admitir la suspensión selectiva; de lo contrario, el controlador host USB del SoC no puede entrar en modo de bajo consumo y evitará el ahorro de energía durante el modo de espera moderno.

En esta configuración, el dispositivo GNSS se enumera a través de USB y el controlador compuesto USB, pero se describe en el espacio de nombres ACPI. En esta configuración no hay compatibilidad con las comunicaciones GPIO entre el dispositivo GNSS en el módulo MBB y el SoC. El dispositivo GNSS debe permanecer enumerado en Windows a través de ACPI durante todo el tiempo que la plataforma permanece en el estado de alimentación del sistema S0, incluso si el usuario deshabilita la radio. El dispositivo GNSS no debe desaparecer nunca del bus USB durante cualquier parte del sistema a tiempo.

GNSS integrado en una radio MBB conectada a USB mediante servicios de dispositivo

El diseñador del sistema puede optar por integrar un módulo MBB conectado a USB que contenga un receptor GNSS incrustado. En esta configuración de hardware, el controlador del sensor de ubicación se comunica con el receptor GNSS incrustado a través de la interfaz de servicios de dispositivo de banda ancha móvil en lugar de que el dispositivo GNSS se expone como una función USB independiente como parte del dispositivo compuesto que representa todo el módulo MBB.

Nota Esta configuración no se recomienda. Los integradores de sistemas que eligen este método de integración de dispositivos GNSS deben ponerse en contacto con su representante de Microsoft para validar la implementación correcta. Se prefiere exponer el dispositivo GNSS como parte de un dispositivo compuesto USB que representa el módulo MBB.

En esta configuración, el dispositivo GNSS es una parte integrada del módulo MBB. La radio GNSS puede compartir el procesamiento, la fuente de alimentación y los componentes de antena RF con la radio MBB. La radio GNSS se expone indirectamente al software a través de la interfaz de servicios de dispositivo a la que se puede acceder mediante la interfaz COM WindowsIMbnDeviceServices. El controlador del sensor de ubicación se comunica con la radio GNSS a través de la interfaz IMbnDeviceServices.

La administración de energía del hardware GNSS se controla mediante comunicaciones en banda a través de la interfaz de servicios de dispositivo al módulo MBB. El hardware GNSS debe admitir un mecanismo en banda a través de la interfaz de servicios del dispositivo para apagar la radio y colocar el dispositivo GNSS en un modo de bajo consumo. Estos mecanismos deben ser accesibles por el controlador del sensor de ubicación a través de la interfaz de servicios del dispositivo.

En esta configuración, el dispositivo GNSS debe enumerarse mediante ACPI y se describe en el espacio de nombres ACPI como elemento secundario del módulo de banda ancha móvil. El dispositivo GNSS no tendrá recursos de hardware descritos en el dispositivo en el espacio de nombres ACPI.

El controlador del sensor de ubicación debe seguir realizando el mismo conjunto de instrucciones de implementación de administración de energía, como se describe en la sección requisitos de implementación del controlador anterior.

En esta configuración no hay compatibilidad con las comunicaciones GPIO entre el dispositivo GNSS en el módulo MBB y el SoC. Toda la administración de energía y las comunicaciones de radio se realizan físicamente a través del bus USB y se exponen al controlador del sensor de ubicación a través de la interfaz de servicios del dispositivo. El dispositivo GNSS debe permanecer enumerado en Windows a través de ACPI para todo el sistema a tiempo, incluso si el usuario deshabilita la radio.

Al implementar esta configuración de hardware, se recomienda al integrador de sistemas asociarse estrechamente con el proveedor del módulo MBB para asegurarse de que el dispositivo GNSS se expone correctamente en el espacio de nombres ACPI.

Problemas de reactivación

No hay problemas de reactivación para los dispositivos GNSS. No se espera que los dispositivos GNSS admitan la reactivación del SoC desde un estado de bajo consumo.

Prueba y validación

Los proveedores de dispositivos GNSS, los proveedores de módulos MBB y los integradores de sistemas deben seguir estas recomendaciones para probar y validar la implementación de la administración de energía del dispositivo GNSS y sus componentes de software relacionados. Para obtener más información, vea Global Navigation Satellite System (GNSS) Test Guidance (Guía de pruebas del sistema de navegación por satélite global[GNSS]).

Administración de energía del sensor de ubicación

El integrador del sistema debe validar que el controlador del sensor de ubicación del dispositivo GNSS realiza transiciones de administración de energía y entra en el estado D3 cuando todos los clientes se han desconectado o se ha deshabilitado la radio.

Los casos de prueba básicos son:

  • Observe que el controlador del sensor de ubicación pasa a D3 en un plazo de 10 segundos a partir de la desactivación de la pantalla para el modo de espera moderno.
  • Observe que el controlador del sensor de ubicación pasa a D3 en un plazo de 10 segundos a partir de la radio que se está desactivando en la aplicación Configuración de Windows.
  • Observe la transición del controlador del sensor de ubicación a D0 inmediatamente después de salir del modo de espera moderno e iniciar una aplicación que usa la API de ubicación.

La manera más fácil de observar transiciones de estado Dx del controlador del sensor de ubicación es usar windows Performance Toolkit para comparar con otros dispositivos de sensor de Windows. Este método usa la instrumentación de Windows para validar que el IRP D3 realiza la transición a través de la pila de controladores de dispositivo que consta del dispositivo GNSS. El administrador de energía de Windows incluye instrumentación integrada de seguimiento de eventos para Windows (ETW), incluida la instrumentación para IRP de alimentación del dispositivo (Dx). Para ver esta información en un modo manual, obtenga e instale Windows Performance Toolkit (WPT) en el sistema sometido a prueba.

Inicie un seguimiento XPerf en modo de usuario mediante los siguientes comandos:

  1. Abra un símbolo del sistema del administrador.

  2. Vaya a la carpeta \%ProgramFiles%\Windows Kits\8.0\Windows Performance Toolkit\ .

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

  4. Realice la transición del sistema a un modo de espera moderno mediante el botón de encendido.

  5. Espere 120 segundos.

  6. Cambie el sistema fuera del modo de espera moderno mediante el botón de encendido.

  7. Espere 60 segundos.

  8. Ejecute el siguiente comando para detener el registro de eventos: xperf.exe -stop power_session

  9. Convierta el archivo de seguimiento binario en formato .csv y legible: xperf.exe –i \user.etl > power.txt

  10. Abra el archivo power.txt en un editor de texto y busque el identificador de hardware del dispositivo GNSS. El identificador de hardware del dispositivo GNSS se puede determinar en la pestaña Detalles de las propiedades del dispositivo en Administrador de dispositivos en Ruta de acceso de instancia de dispositivo. En el ejemplo siguiente, la ruta de acceso de la instancia del dispositivo GNSS es ACPI\MST0731\2&daba3ff&0.

  11. El IRP D3 para el dispositivo GNSS se indica mediante un evento de tipo Microsoft-Windows-Kernel-Power/IRP/Stop con la ruta de acceso de la instancia de dispositivo del dispositivo GNSS y el último valor de evento de 3 para el estado D3. La salida del evento siguiente del archivo power.txt muestra el inicio del 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. Este evento se debe registrar cerca del principio del archivo de salida de power.txt. El parámetro 0x868e2728 en el ejemplo anterior es un puntero a la estructura IRP D3. Al buscar los eventos posteriores con este mismo puntero IRP, se puede detectar una vista del IRP D3 que fluye a través de la pila de controladores que consta del dispositivo GNSS. Tenga en cuenta que el puntero IRP será específico del sistema y de la duración del arranque.

  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"

Validar el dispositivo GNSS vuelve a D0 cuando la pantalla está activada es un proceso similar. Se registrará un evento Microsoft-Windows-Kernel-Power/IRP/Start para el dispositivo GNSS con un estado de destino 0 (D0). El IRP D0 fluirá a través de los controladores que componen la pila de dispositivos GNSS de forma similar a la IRP D3.

Lista de comprobación de administración de energía de GNSS

Los integradores de sistemas, los proveedores de radio GNSS y los proveedores de SoC deben usar la siguiente lista de comprobación para asegurarse de que su diseño de administración de energía del sistema sea compatible con Windows 8 y versiones posteriores.

  • Integre un dispositivo GNSS en la plataforma moderna compatible con espera en el siguiente orden de preferencia de configuración:

    1. Integrado junto con un módulo MBB (para sistemas equipados con MBB), conectados a través de USB.
    2. Integrado en el SoC (para sistemas que tienen GNSS en el SoC).
    3. Independiente fuera del SoC conectado a UART, I2C u otro bus de bajo consumo.
  • Seleccione un dispositivo GNSS que tenga un consumo medio de energía de suspensión (radio desactivada) de menos de 1 mW, incluidas las interfaces de conexión de bus.

  • Si el dispositivo GNSS tiene un consumo medio de energía de suspensión (radio desactivada) de más de 1 mW, el integrador del sistema y el proveedor del dispositivo GNSS deben admitir la eliminación completa de la energía del dispositivo GNSS cuando no hay clientes de aplicaciones conectados o el usuario apaga la radio.

  • Asegúrese de que el proveedor del dispositivo GNSS proporciona un controlador de sensor de ubicación que implementa la administración de energía en tiempo de ejecución en función del número de clientes conectados y el estado de la radio GNSS.

  • Asegúrese de que el proveedor del dispositivo GNSS proporciona una biblioteca de administrador de radio que expone la radio de GNSS en la aplicación Configuración de Windows.

    El controlador del sensor de ubicación debe implementar una interfaz privada para comunicar el estado de encendido y apagado de radio entre la biblioteca de administrador de radio proporcionada por el proveedor y el controlador del sensor de ubicación proporcionado por el proveedor.

  • Si el GNSS es un dispositivo independiente fuera del soC conectado a través de UART, I2C u otro bus de bajo consumo, el integrador de sistemas y el proveedor de dispositivos GNSS deben:

    1. Documente los GPIOs entre el dispositivo GNSS y el propio SoC.
    2. Exponga los GPIOs para la administración de energía como parte de una región de operación GPIO en el espacio de nombres ACPI.
  • Si el GNSS es un dispositivo independiente fuera del soC conectado a través de UART, I2C u otro bus de bajo consumo y el consumo medio de energía del dispositivo GNSS en el modo de alimentación de suspensión es mayor que 1 mW, el integrador del sistema y el proveedor de dispositivos GNSS deben:

    1. Proporcione un recurso de energía ACPI y _ON/_OFF métodos de control para describir el dominio de energía GNSS.
    2. Proporcione los métodos _PR0 y _PR3 en el dispositivo GNSS en el espacio de nombres ACPI que hacen referencia al recurso de energía ACPI descrito.
    3. Asegúrese de que el controlador del sensor de ubicación realiza una transición D3 y habilita D3cold en el controlador.
  • Si el GNSS forma parte de un módulo MBB, el integrador del sistema y el proveedor de dispositivos GNSS deben:

    1. Exponga el dispositivo GNSS como parte de un dispositivo compuesto USB.
    2. Proporcione un controlador de sensor de ubicación que se comunique con el dispositivo GNSS directamente a través del bus USB.
    3. Asegúrese de que la radio está activada y apagada y toda la administración de energía del dispositivo GNSS se puede realizar en banda a través del bus USB. No se puede usar ningún GPIOs para cambiar el estado de energía o radio GNSS en esta configuración de hardware.
    4. Asegúrese de que el dispositivo USB que describe el módulo MBB o el dispositivo compuesto USB que describe la radio MBB y GNSS entran en el estado de suspensión USB durante el modo de espera moderno.
    5. El controlador del sensor de ubicación DEBE entrar en el modo D3 (suspensión) cuando todos los clientes están desconectados o la radio se ha desactivado incluso si se comunica con el dispositivo a través de la interfaz de servicios del dispositivo.
    6. Si el dispositivo GNSS se controla a través de la interfaz de servicios de dispositivos de banda ancha móvil (que no se recomienda), el dispositivo GNSS debe describirse en el espacio de nombres ACPI del sistema sin recursos de hardware. El dispositivo GNSS debe describirse como un elemento secundario del módulo de banda ancha móvil en el espacio de nombres ACPI.
  • Pruebe y valide que el dispositivo GNSS y el controlador del sensor de ubicación realicen la administración de energía correctamente. Valide los siguientes casos de prueba como mínimo:

    • Observe que el controlador del sensor de ubicación pasa a D3 en un plazo de 10 segundos a partir de la desactivación de la pantalla para el modo de espera moderno.
    • Observe que el controlador del sensor de ubicación pasa a D3 en un plazo de 10 segundos a partir de la radio que se está desactivando en la aplicación Configuración de Windows.
    • Observe la transición del controlador del sensor de ubicación a D0 inmediatamente después de salir del modo de espera moderno e iniciar una aplicación que usa la API de ubicación.
  • Valide el consumo de energía del dispositivo GNSS en estado de suspensión (D3) y asegúrese de que sea inferior a 1 mW en promedio.