Compartir a través de


Administración de energía de proximidad de campo (NFP) para plataformas modernas en espera

Un dispositivo de proximidad de campo cercano (NFP) es un dispositivo receptor/transmisor de radio de corto alcance que permite a un equipo Windows asociar y emparejar con otros equipos equipados con NFP.

Un dispositivo NFP se expone al sistema operativo Windows a través de la interfaz GUID_DEVINTERFACE_NFP Plug and Play (PnP). Un controlador de terceros, proporcionado por el proveedor de dispositivos NFP, es responsable de implementar la interfaz de GUI_DEVINTERFACE_NFP y la administración de energía del dispositivo NFP físico. El dispositivo NFP se conecta normalmente a las patillas de interfaz I2C del sistema en un chip (SoC) o el silicio principal.

Por lo general, el dispositivo NFP puede entrar en modo de bajo consumo (modo de espera o modo de apagado) cuando ningún cliente de software tiene publicaciones o suscripciones de proximidad, o bien todas las publicaciones y suscripciones están deshabilitadas. Desde un punto de vista de desarrollo de controladores, esta condición se produce cuando no hay identificadores pendientes en el dispositivo. El dispositivo NFP debe colocarse en modo de espera o en modo de apagado cuando no hay controladores abiertos y habilitados para el dispositivo.

Cuando la plataforma entra en modo de espera moderno y la pantalla está desactivada, el dispositivo NFP debe entrar en modo de espera o en modo de alimentación quitado. Si el consumo de energía de un dispositivo NFP en modo de espera es mayor que un milliwatt en promedio, el dispositivo debe entrar en un modo de 0 vatios, apagado de energía.

El controlador de dispositivo NFP no se notifica directamente cuando la plataforma entra y sale del modo de espera moderno. En su lugar, Windows notifica al controlador indirectamente mediante la deshabilitación de los identificadores en la entrada al modo de espera moderno y habilita estos mismos identificadores al salir del modo de espera moderno. Una vez que la plataforma entra en espera moderna, Windows envía una notificación de deshabilitación a cada identificador abierto que aún no está deshabilitado. Cuando la plataforma sale del modo de espera moderno, Windows envía una notificación de habilitación a cada identificador que ha deshabilitado anteriormente. Un identificador abierto que ya estaba deshabilitado antes de que se especificara Modern Standby permanece deshabilitado después de la salida de Modern Standby.

Modos de administración de energía de dispositivos

A partir de Windows 8, se espera que un dispositivo NFP para una plataforma Modern Standby tenga tres modos de alimentación (activo, inactivo y en espera), además de un modo de eliminación de energía (en el que todas las entradas de energía para el dispositivo NFP se han desactivado mediante un mecanismo de hardware externo al dispositivo). Póngase en contacto con el proveedor de hardware de un dispositivo NFP para obtener más información sobre los modos de administración de energía admitidos por el dispositivo.

En la tabla siguiente se describen los modos de alimentación del dispositivo para un dispositivo NFP.

Modo de alimentación del dispositivo Descripción Consumo medio de energía Latencia de salida a activa Mecanismo de transición

Activo

El dispositivo NFP se comunica activamente con otro dispositivo NFP en un equipo cercano.

< 50 miliwatts

N/D

N/D

Inactivo

El dispositivo NFP está esperando a que otro equipo con NFP llegue cerca. El controlador del dispositivo NFP tiene publicaciones y suscripciones abiertas.

< 5 miliwatts

< 10 milisegundos (típico)

Hardware autónomo

Standby

El dispositivo NFP tiene potencia aplicada, pero no hay publicaciones o suscripciones pendientes (sin identificadores abiertos).

< 1 milliwatt (dependiente del dispositivo)

< 50 milisegundos (típico)

Comando de controlador o patilla GPIO desde el SoC o silicio principal.

Se ha quitado energía

El dispositivo NFP no tiene ninguna potencia aplicada porque la plataforma no está encendida o una entidad externa ha apagado la alimentación.

0 Vatios

< 100 milisegundos

La entidad externa quita la potencia o aplica energía a través del firmware ACPI en respuesta a un IRP D3.

Nota

  • En la tabla anterior, el término espera hace referencia a un modo de alimentación del dispositivo distinto del modo de espera moderno, que es un estado de energía para toda la plataforma.
  • En la tabla anterior, el término D3 IRP hace referencia a una solicitud de IRP_MN_SET_POWER de tipo DevicePowerState.

El consumo de energía especificado de un dispositivo NFP en modo de espera variará según el número de pieza y el fabricante. Los diseñadores del sistema deben trabajar con el proveedor del dispositivo para comprender el consumo de energía en espera específico del dispositivo. Si el consumo de energía en modo de espera es superior a un miliwatt, el dispositivo NFP debe estar conectado a un raíl de alimentación conmutable para que el dispositivo se pueda poner en modo de apagado durante la espera moderna.

Mecanismo de administración de energía de software

Windows se basa en el proveedor del dispositivo NFP para proporcionar un controlador de terceros que administra el dispositivo NFP. Windows espera que este controlador supervise el número actual de identificadores abiertos al controlador de dispositivo NFP y el estado de estos controladores para determinar cuándo colocar el dispositivo NFP en un modo de bajo consumo.

Se recomienda que los desarrolladores de controladores de NFP usen User-Mode Driver Framework (UMDF) para desarrollar sus controladores. UMDF incluye una serie de características que facilitan el desarrollo de la administración de energía en tiempo de ejecución del dispositivo.

Compatibilidad con D3

Se recomienda a los desarrolladores de controladores NFP que coloquen el dispositivo NFP en un estado D3 cuando todos los identificadores del dispositivo se hayan cerrado o todos los identificadores abiertos en el dispositivo hayan recibido la notificación de IOCTL_NFP_DISABLE. Todos los identificadores abiertos recibirán la notificación de IOCTL_NFP_DISABLE después de que la plataforma entre en espera moderna y el escritorio del usuario esté bloqueado.

Incluso si el dispositivo NFP puede lograr un consumo de energía de menos de un milliwatt en modo de alimentación inactiva, se recomienda una transición a D3 cuando se cierren todos los controladores o hayan recibido la notificación de IOCTL_NFP_DISABLE. La realización de una transición a D3 permite que todos los controladores de la pila de controladores del dispositivo NFP se notifiquen que el hardware entra en un modo de bajo consumo. Además, la instrumentación integrada en Windows puede detectar una transición a D3. Windows Performance Toolkit y otras herramientas de diagnóstico de rendimiento se pueden usar para observar esta transición. Esta compatibilidad de diagnóstico integrada reduce el coste de un integrador de sistemas para comprobar que el dispositivo NFP está IOCTL_NFP_DISABLE la administración de energía correctamente.

Para algunos buses, los dispositivos del bus deben pasar a D3 para que el controlador de bus pueda entrar en un estado de bajo consumo. En el caso de un dispositivo NFP conectado a I2C, no existe tal dependencia en el dispositivo NFP del punto de conexión que entra en D3 para que el controlador de bus I2C se apague.

Sin embargo, si las plataformas modernas en espera en el futuro usan el bus serie universal (USB) para conectarse a dispositivos NFP, un dispositivo NFP debe ser capaz de entrar en D3 para que el controlador de host USB pueda apagarse y el SoC o el silicio principal pueden entrar en un estado de inactividad de bajo consumo durante el modo de espera moderno. Se recomienda a los desarrolladores de controladores de dispositivos NFP que realicen la transición de sus dispositivos a D3 cuando estén listos para entrar en un modo de bajo consumo, independientemente del bus subyacente, para permitir que los controladores futuros vuelvan a usar y fáciles diagnósticos de administración de energía.

Si para entrar en modo de alimentación en espera el dispositivo NFP requiere que se envíe un comando desde el controlador del dispositivo NFP a través del bus de comunicaciones, este comando se debe enviar como parte de la transición a D3 en el controlador.

Si el dispositivo NFP requiere una patilla GPIO del SoC para alternar para entrar en modo de alimentación en espera, se requiere una transición a D3. Iniciando una transición a D3 notifica al controlador ACPI de Windows, Acpi.sys, que ejecuta el método de control _PS3 implementado en el dispositivo NFP en el espacio de nombres ACPI. El método _PS3 puede alternar la línea GPIO a través de una región de operación GPIO. Para que el controlador de dispositivo NFP sea más portátil, los retrasos específicos de la plataforma u otras restricciones de tiempo deben implementarse en el firmware de la plataforma para que el controlador de dispositivo NFP no tenga que personalizarse para una plataforma específica.

Para habilitar la transición del dispositivo NFP a D3 cuando el dispositivo está inactivo y la plataforma está en el estado de energía del sistema S0 (en funcionamiento), un controlador UMDF llama al método IWDFDevice2::AssignS0IdleSettingsEx. En esta llamada, el controlador proporciona un puntero a una estructura de WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS como parámetro de entrada y establece el miembro DxState de esta estructura en PowerDeviceD3.

Si el consumo de energía del dispositivo NFP en modo de espera es mayor que un milliwatt, el dispositivo debe colocarse en modo de eliminación de energía cuando se cierren todos los controladores o se hayan enviado todos los identificadores a la notificación IOCTL_NFP_DISABLE. Para que el firmware y el hardware subyacentes quiten energía del dispositivo NFP, el dispositivo ya debe haber entrado en D3 (es decir, D3hot) y el controlador de dispositivo NFP debe haber habilitado previamente la transición a D3cold. Habilitar D3cold implica que el controlador para el dispositivo NFP guarda el estado de hardware del dispositivo antes de la transición a D3 para que se pueda quitar toda la alimentación del dispositivo. El dispositivo debe poder reanudar el funcionamiento normal más adelante después de que el dispositivo esté encendido (es decir, el dispositivo sale de D3cold) y el controlador restaura el estado de hardware del dispositivo. Para habilitar D3cold, un controlador UMDF llama al método IWDFDevice2::AssignS0IdleSettingsEx. En esta llamada, el controlador proporciona un puntero a una estructura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS y establece el miembro ExcludeD3Cold de esta estructura en WdfFalse.

Para obtener más información, vea Compatibilidad con D3cold en un controlador.

Administrador de radio

Si el dispositivo NFP usa un mecanismo de RF (radio) para detectar eventos de proximidad, el proveedor del dispositivo NFP debe proporcionar un administrador de radio además de un controlador de dispositivo NFP. El administrador de radio es un archivo DLL COM que implementa la API de interfaz de usuario de administración de radios y se comunica de forma privada con el controlador de dispositivo NFP. Cuando el usuario cambia el estado de encendido/apagado de radio del dispositivo NFP en la aplicación Configuración de Windows, el controlador de dispositivo NFP recibe la notificación del cambio a través del administrador de radio. El desarrollador del controlador debe definir una interfaz privada para comunicar el estado de administración de radio entre el objeto COM del administrador de radios y el controlador del dispositivo NFP. Cuando el controlador de dispositivo NFP recibe un comando del objeto de administrador de radio para establecer el estado de encendido y apagado de radio del dispositivo, el controlador debe guardar el estado de hardware del dispositivo, desactivar los componentes de RF asociados con el dispositivo NFP y pasar el dispositivo a D3. Tenga en cuenta que la cantidad y el estado de todos los identificadores de la interfaz de GUID_DEVINTERFACE_NFP que ya están abiertos cuando el dispositivo entra en D3 debe conservarse mientras el dispositivo está en D3.

Una vez que el administrador de radios haya indicado que los componentes de RF del dispositivo NFP deben estar habilitados y encendidos, el dispositivo NFP debe volver inmediatamente a D0 cuando se produzca alguna de las siguientes condiciones:

  • Un cliente abre un nuevo identificador para el controlador de dispositivo NFP.
  • Cualquier identificador ya abierto recibe la notificación IOCTL_NFP_ENABLE.

Windows enviará la notificación IOCTL_NFP_ENABLE al controlador de dispositivo NFP cuando la plataforma salga de Modern Standby y el usuario escriba su contraseña.

Si el administrador de radios ha indicado que los componentes de RF del dispositivo NFP deben estar deshabilitados y apagados, el dispositivo NFP debe permanecer en D3, incluso si se abre un nuevo controlador o se habilita un controlador existente, hasta que el administrador de radio indica que los componentes de RF deben estar habilitados y encendidos.

Si el dispositivo NFP requiere que se envíe un comando para devolver el dispositivo NFP al modo inactivo, este comando se puede enviar a través del bus de comunicaciones (normalmente I2C) y debe producirse como parte de la finalización de la transición a D0 en el controlador de dispositivo NFP.

La transición del dispositivo NFP a D0 permite ejecutar el método de control _PS0 en el dispositivo del espacio de nombres ACPI. Si es necesario, este método de control puede alternar una línea GPIO desde el SoC al dispositivo NFP para devolver el dispositivo al modo inactivo.

Configuraciones de energía de hardware admitidas

Un dispositivo NFP no debe consumir más de un miliwatt de energía, de media, mientras que la plataforma de hardware está en modo en espera moderno. Si el dispositivo consume más de un miliwatt de energía cuando está en modo de espera, el controlador de dispositivo NFP puede colocar el dispositivo en modo en espera cuando el dispositivo no se está usando. De lo contrario, el diseñador del sistema debe conectar el dispositivo a un raíl de alimentación dedicado que se puede desactivar cuando no se usa el dispositivo.

La energía en espera es inferior a un miliwatt

Si el dispositivo NFP consume menos de un miliwatt de energía en modo de espera, el dispositivo NFP se puede colocar en cualquier raíl de alimentación del sistema y puede compartir este raíl con cualquier número de otros dispositivos. La transición del dispositivo al modo de alimentación en espera se produce como parte de su transición a D3.

La entrada del dispositivo NFP al modo en espera se puede iniciar enviando un comando a través del bus de comunicaciones (normalmente I2C) o alternando una línea GPIO de SoC que se enruta al dispositivo NFP.

Si el dispositivo NFP requiere alternar una línea GPIO desde el SoC para entrar en modo de espera, la línea GPIO debe describirse en una región de operación GPIO en el espacio de nombres ACPI. El integrador del sistema debe implementar los métodos _PS3 y _PS0 en el dispositivo NFP en el espacio de nombres ACPI. La implementación del método _PS3 debe alternar la línea GPIO para cambiar el dispositivo NFP al modo en espera. La implementación del método _PS0 debe alternar la línea GPIO para cambiar el dispositivo NFP al modo en espera. La alternancia de esta línea puede estar sujeta a restricciones de tiempo específicas de la plataforma o específicas del dispositivo.

Como se ha descrito anteriormente, el controlador de dispositivo NFP debe iniciar una transición a D3 cuando se cierran todos los identificadores, o todos los controladores han recibido la notificación de IOCTL_NFP_DISABLE, o el administrador de radio ha solicitado que los componentes de RF del dispositivo NFP estén desactivados.

La energía en espera es superior a un miliwatt

Si el consumo de energía del dispositivo NFP en modo de espera es superior a un miliwatt, el dispositivo NFP debe colocarse en un raíl de alimentación dedicado que se pueda activar y desactivar de forma independiente bajo el control de un GPIO desde el SoC. Cuando todos los controladores están cerrados, o todos los controladores han recibido la notificación de IOCTL_NFP_DISABLE, o el administrador de radio ha solicitado que los componentes de RF estén desactivados, el dispositivo NFP primero realiza la transición a D3 y, a continuación, pasa al modo de apagado de energía cuando se apaga el raíl de alimentación.

El raíl de alimentación conmutable debe controlarse mediante una línea GPIO desde el SoC o el silicio principal. La línea GPIO debe describirse como parte de una región de operación GPIO en el espacio de nombres ACPI. Además, el espacio de nombres ACPI debe incluir un recurso de energía que describa el raíl de alimentación conmutable y que implemente _ON y _OFF métodos de control. Los métodos de control _ON y _OFF alternan la línea GPIO descrita en la región de operación GPIO para activar y desactivar el raíl de alimentación. Los paquetes de _PR3 y _PR0 deben situarse bajo el dispositivo NFP en el espacio de nombres ACPI y deben vincularse al recurso de energía que describe el raíl de alimentación.

Como se ha descrito anteriormente, el controlador de dispositivo NFP debe habilitar D3cold. Además, el controlador debe iniciar una transición a D3 cuando se cierran todos los identificadores, o todos los controladores han recibido la notificación de IOCTL_NFP_DISABLE, o bien el administrador de radio solicita que se apaguen los componentes de RF. Cuando el controlador ACPI recibe el IRP D3, ejecutará el método _OFF en el recurso de energía indicado por el paquete de _PR3. Este método alternará la línea GPIO que controla el hardware de conmutación de energía para quitar la energía del dispositivo NFP.

Si el administrador de radios ha indicado que los componentes de RF deben estar habilitados, el controlador de dispositivo NFP debe realizar una transición a D0 cuando se abra un nuevo identificador o un identificador existente haya recibido la notificación de IOCTL_NFP_ENABLE. Cuando el controlador ACPI recibe el IRP D0 (una solicitud de IRP_MN_SET_POWER de tipo DevicePowerState), ejecutará el método _ON en el recurso de energía indicado por el paquete de _PR0. Este método alternará la línea GPIO que controla el hardware de conmutación de energía para volver a aplicar energía al dispositivo NFP.

Problemas de reactivación

No hay ningún problema de reactivación para el dispositivo NFP. No se permite que el dispositivo NFP admita la activación del SoC mientras la plataforma está en modo en espera moderno.

Prueba y validación

Es fundamental que el diseñador del sistema compruebe que el dispositivo NFP entra de forma fiable en modo en espera o modo de apagado cuando la pantalla está apagada para el modo de espera moderno. La solución de administración de energía para el dispositivo NFP depende en gran medida de la implementación del controlador de terceros. Por lo tanto, se recomienda que los integradores de sistemas analicen el mejor método para probar y validar la funcionalidad del dispositivo NFP con el proveedor de dispositivos NFP.

Si el controlador de dispositivo NFP inicia una transición a D3 cuando todos los identificadores del controlador están cerrados o deshabilitados, se puede usar la herramienta XPerf para observar esta transición. Este método de validación es similar al descrito en otro lugar para controladores táctiles y dispositivos sensor.

Si el controlador envía comandos a través del bus de comunicaciones para realizar la transición del dispositivo al modo en espera y fuera del modo de espera, el controlador debe admitir el seguimiento de eventos para que el integrador del sistema pueda validar fácilmente las operaciones de administración de energía. La instrumentación se puede agregar fácilmente a los controladores de Windows mediante eventos de seguimiento de eventos para Windows (ETW). Para obtener más información, vea Agregar seguimiento de eventos a controladores de modo kernel. Una ventaja del seguimiento de ETW es que se puede ver mediante el conjunto de herramientas de Windows Performance Toolkit, que incluye XPerf.

Lista de comprobación de administración de energía de dispositivos NFP

Los integradores de sistemas y los proveedores de NFP deben revisar la lista de comprobación siguiente para comprobar que su diseño de administración de energía del sistema es compatible con Windows 8 y versiones posteriores.

  • Seleccione un dispositivo NFP que tenga un modo de espera que consuma un promedio de menos de un miliwatt de energía.
  • Compruebe que el controlador de dispositivo NFP inicia una transición a D3 cuando todos los identificadores del dispositivo están cerrados o que todos los identificadores abiertos han recibido la notificación de IOCTL_NFP_DISABLE, o el administrador de radio solicita que los componentes de RF del dispositivo NFP estén deshabilitados y apagados.
  • Compruebe que el controlador de dispositivo NFP inicia una transición a D0 si el administrador de radios ha indicado que los componentes de RF deben estar habilitados y, posteriormente, el primer identificador se abre en el dispositivo o el primer identificador abierto recibe la notificación de IOCTL_NFP_ENABLE.
  • Si el controlador de dispositivo NFP envía un comando personalizado a través del bus de comunicaciones para indicar al dispositivo NFP que entre en modo de espera, trabaje con el proveedor del dispositivo NFP para determinar la mejor manera de comprobar que el dispositivo NFP entra en modo de alimentación en espera en respuesta a este comando.
  • Si el consumo de energía para el dispositivo NFP es mayor que un miliwatt, asegúrese de que el dispositivo se coloca en un raíl de alimentación conmutable.
  • Si el dispositivo NFP se encuentra en un raíl de alimentación conmutable:
    • Compruebe que el dispositivo admite la eliminación completa de la energía del dispositivo cuando no se usa y que la restauración de la energía vuelve a habilitar y volver a inicializar automáticamente el dispositivo.
    • Compruebe que el raíl de alimentación está controlado por una línea GPIO desde el silicio SoC o de núcleo.
    • Asigne la línea GPIO a una región de operación GPIO implementada en el firmware ACPI del sistema.
    • Proporcione un recurso de energía para describir el raíl de alimentación e incluya los métodos de control _ON, _OFF y _STA en este recurso de energía.
    • Proporcione los paquetes de _PR0 y _PR3 en el dispositivo NFP del firmware ACPI del sistema y asegúrese de que hacen referencia al recurso de energía.
    • Si el dispositivo NFP requiere un retraso de encendido antes de que el controlador pueda acceder a él, codifique este retraso en la implementación del método de control de _ON.
  • Inicie varias transiciones dentro y fuera del modo en espera moderno y, a continuación, pruebe el funcionamiento del dispositivo NFP cuando la pantalla está activada.