Compartir a través de


Implementación del firmware del subsistema de energía y batería ACPI

Se espera que las plataformas Windows expongan sus dispositivos de batería y adaptadores de corriente alterna en firmware a través de ACPI mediante interfaces de método de control estandarizados, como se describe en la especificación ACPI.

Cada plataforma móvil de Windows debe tener un dispositivo de fuente de energía y una o varias baterías. La información de estos subsistemas se usa para transmitir el estado de energía al usuario. Este estado incluye información como si la plataforma está funcionando con alimentación de corriente alterna o directa, el nivel de carga de cada batería y el estado de carga de la batería. El administrador de energía de Windows agrega esta información y la hace disponible para el medidor de batería de Windows y otros componentes de administración de energía.

Este tema detalla cómo la plataforma debe exponer la información del subsistema de energía al administrador de energía de Windows. Para obtener más información, vea capítulo 10, Dispositivos de fuente de alimentación, en la especificación ACPI.

Nota

Parte de la información descrita en este artículo es específica de Windows y no se detalla en la especificación ACPI reciente.

Objeto de fuente de alimentación ACPI

El firmware ACPI debe proporcionar e implementar un único dispositivo de fuente de alimentación ACPI para cada sección 10.3 de la especificación ACPI. Este objeto debe informarse con un ID de hardware (_HID) de "ACPI0003".

Nota En los sistemas que tienen varias fuentes de alimentación, todas las fuentes de alimentación físicas deben multiplexarse a través de un único objeto de dispositivo de alimentación en ACPI. Este objeto debe mostrar el estado compuesto de las entradas de energía para el sistema. Los sistemas cliente no deben proporcionar varios objetos de dispositivo de origen de energía. (Los objetos de fuente de alimentación adicionales pueden estar presentes en sistemas de servidor que tienen varias fuentes de alimentación.)

Este objeto también debe implementar el método de fuente de energía (_PSR). Este método devuelve el estado de la fuente de energía y transmite si la fuente de alimentación está actualmente en línea (alimentación alterna) o sin conexión (con la alimentación de la batería). El método _PSR solo debe informar en línea (alimentación alterna) cuando el sistema está conectado a la alimentación principal. Al cambiar el estado de _PSR, la plataforma debe generar una interrupción y un comando Notify(0x80) en el dispositivo en el espacio de nombres ACPI. Esto debe realizarse inmediatamente después de que la plataforma detecte el cambio de estado físico.

Métodos de control de batería ACPI

El firmware ACPI debe proporcionar e implementar un objeto de método de control ACPI para cada batería del sistema para cada sección 10.2 de la especificación ACPI. Cada dispositivo de batería debe hacer lo siguiente:

  • Identificarse con un ID de hardware (_HID) de "PNP0C0A".
  • Implementar el método estado (_STA) para indicar si el dispositivo está habilitado, deshabilitado o no está presente.
  • Notificar información estática con el método de información de batería extendida (_BIX).
  • Informar del estado de la batería mediante el método de control Estado de la batería (_BST).
  • Admitir eventos de nivel de carga mediante el mecanismo de punto de viaje de batería (_BTP).

Opcionalmente, un dispositivo de batería puede implementar el número de unidad de ranura (_SUN) o indicar el orden de la batería para los fines de visualización en la interfaz de usuario (UI).

En la siguiente explicación se presentan los detalles de estos métodos y se describen sus requisitos específicos para Windows.

Implementación ACPI de información estática de batería

El firmware ACPI debe implementar el método _BIX para cada batería para proporcionar información estática sobre la batería, incluida la capacidad de diseño, el recuento cíclico y el número de serie. La tabla siguiente expande las definiciones de los campos descritos en la sección 10.2.2.2 de la especificación ACPI y enumera los requisitos específicos de Windows para esta información.

Temas Descripción Requisitos específicos de Windows
Revisión Indica la revisión de _BIX. Debe establecerse en 0x0.
Unidad de alimentación Determina si las unidades reportadas por el hardware son miliamperios y miliamperios-horas o milivatios y milivatios-horas. Debe establecerse en 0x0 para indicar que las unidades son milivatios y milivatios-hora. Este valor no debe cambiar en tiempo de ejecución.
Capacidad de diseño Indica la capacidad original de la batería en milivatios-hora. Debe establecerse en un valor preciso y no se puede establecer en 0x0 o en 0xFFFFFFFF. Este valor no debe cambiar en tiempo de ejecución.
Última carga completa de la batería Indica la capacidad de carga completa actual de la batería. Debe establecerse en un valor preciso y no se puede establecer en 0x0 o en 0xFFFFFFFF. Este valor debe actualizarse cada vez que aumenta el recuento cíclico. Este valor debe permanecer constante cuando la batería se descarga. Se recomienda actualizar este valor solo cuando la batería alcance la carga completa.
Tecnología de la batería Indica si la batería es recargable o de uso único. Debe establecerse en 0x1 para indicar que la batería es recargable.
Voltaje de diseño Indica el voltaje de diseño de la batería. Debe establecerse en el voltaje de diseño de la batería cuando sea nuevo en milivoltios. No se debe establecer en 0x0 o 0xFFFFFFFF. Este valor no debe cambiar en tiempo de ejecución.
Capacidad de diseño de advertencia Indica un nivel de advertencia de batería bajo proporcionado por el OEM. Windows omite este valor.
Capacidad de diseño de baja Indica el nivel de batería crítico en el que Windows debe apagarse o hibernar inmediatamente antes de que el sistema se apague. Debe establecerse en un valor comprendido entre el 0 y el 5 por ciento de la capacidad de diseño de la batería.
Granularidad de capacidad de batería 1 Indica la cantidad mínima de cambio de carga restante que el hardware detecta entre la capacidad de diseño de advertencia y la capacidad de diseño de baja. Debe establecerse en un valor menor que el 1 por ciento de la capacidad de diseño de la batería.
Granularidad de capacidad de batería 2 Indica la cantidad mínima de cambio de carga restante que el hardware detecta entre la última capacidad de carga completa y la capacidad de diseño de advertencia. Debe establecerse en un valor no mayor que 75 milivatios (aproximadamente 0,25 por ciento de una batería de 25 vatios-hora). (1/400) de la capacidad de diseño de la batería.
Recuento cíclico Indica el recuento cíclico de la batería. Debe establecerse en un valor mayor que 0x0. No se debe establecer en 0xFFFFFFFF.
Precisión de medición Indica la precisión de la medición de la capacidad de la batería. Debe establecerse en 95.000 o superior, lo que indica una precisión del 95 por ciento o superior.
Tiempo máximo de muestreo El tiempo de muestreo máximo soportado entre dos evaluaciones sucesivas de _BST, lo que mostrará una diferencia en la capacidad restante. No hay ningún requisito específico.
Tiempo mínimo de muestreo El tiempo de muestreo mínimo soportado entre dos evaluaciones sucesivas de _BST, lo que mostrará una diferencia en la capacidad restante. No hay ningún requisito específico.
Intervalo de promedio máximo Intervalo de promedio máximo, en milisegundos, que el medidor de combustible de la batería soporta. No hay ningún requisito específico.
Intervalo de promedio mínimo Intervalo de promedio mínimo, en milisegundos, que el medidor de combustible de la batería soporta. No hay ningún requisito específico.
Número de modelo Número de modelo de batería proporcionado por el OEM. No debe ser NULL.
Número de serie Número de serie de batería proporcionado por el OEM. No debe ser NULL.
Tipo de batería Información de tipo de batería proporcionada por el OEM. No hay ningún requisito específico.
Información del OEM Información proporcionada por el OEM. No hay ningún requisito específico.

Además de estos requisitos, el firmware de la plataforma debe generar una interrupción y un comando Notify(0x81) en el dispositivo de batería en el espacio de nombres ACPI siempre que cambie cualquiera de los datos de estado de la batería en _BIX. Esto incluye la última capacidad de carga completa, la capacidad de diseño y el recuento cíclico. Esto debe realizarse inmediatamente después de que la plataforma detecte el cambio de estado físico.

La última capacidad de carga completa muestra la cantidad estimada de energía que se espera que la batería contenga la última vez que la batería se cargó por completo. Windows presupone que este valor se actualiza solo cuando se ha cargado la batería. Por lo tanto, el último valor de capacidad de carga completa no debe cambiar mientras la batería se descarga. Se recomienda actualizar este valor solo cuando la batería alcance la carga completa.

Implementación ACPI de información de estado en tiempo real de la batería

El firmware ACPI debe implementar el método _BST para cada batería para proporcionar información de estado en tiempo real sobre la batería, incluida la capacidad restante y la velocidad actual de purga. La tabla siguiente expande las definiciones de los campos descritos en la sección 10.2.2.6 de la especificación ACPI y enumera los requisitos específicos de Windows para esta información.

Temas Descripción Requisitos específicos de Windows
Estado de la batería Indica si la batería se está cargando, descargando o en estado crítico. El estado de la batería debe notificar la carga solo si la batería se está cargando. De la misma manera, el estado de la batería debe notificar la descarga solo si la batería se está descargando. Una batería que no está cargándose ni descargándose no debe notificar ninguno de los dos bits.
Velocidad actual de la batería Proporciona la velocidad actual de purga de la batería en milivatios. Debe ser un valor mayor que 0x0 y menor que 0xFFFFFFFF. Debe ser preciso dentro del valor de precisión de medida en _BIX.
Capacidad restante de la batería Proporciona la capacidad restante de la batería en milivatios-hora. Debe ser un valor mayor que 0x0 y menor que 0xFFFFFFFF. Debe ser preciso dentro del valor de precisión de medida en _BIX.
Tensión actual de la batería Indica el voltaje de corriente en los terminales de la batería. Debe estar entre un valor de 0x0 y 0xFFFFFFFF en milivoltios.

Al cambiar los datos de _BST, la plataforma debe generar una interrupción y una notificación (0x80) en el dispositivo de batería en el espacio de nombres ACPI. Esto debe realizarse inmediatamente después de que la plataforma detecte el cambio de estado físico. Esto incluye cualquier cambio en el campo estado de la batería para el bit de carga (Bit0) o el bit de descarga (Bit1).

Además, la plataforma debe implementar el mecanismo de punto de viaje de batería _BTP. _BTP permite a Windows especificar un umbral de capacidad restante que, al cruzarse, hace que la plataforma genere una interrupción y un comando Notify(0x80) en el dispositivo de batería en el espacio de nombres ACPI. El método _BTP evita que Windows necesite sondear la batería periódicamente.

Métodos de control de batería específicos del sistema operativo Windows

La especificación ACPI ofrece métodos de control específicos del sistema operativo y del dispositivo a través del método de control Device-Specific o _DSM método de control. _DSM se describe en la sección 9.14.1 de la especificación ACPI.

Windows 8 admite los siguientes métodos de _DSM para dispositivos de la batería de método de control.

Dirección de la velocidad de carga térmica

Temas Valor Descripción
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e GUID que indica las extensiones al soporte del controlador de la batería del método de control de Windows.
ID de revision 0 Primera revisión de esta capacidad.
Índice de función 0x1 Establece la limitación de carga de la batería.
Argumentos Límite térmico Valor entero de 0 a 100 que indica el límite de carga térmica. Un valor del 40 por ciento indica que la batería debe cargarse al 40 por ciento de la velocidad máxima. Un valor del 0 por ciento indica que la carga de la batería debe detenerse hasta que se vuelva a llamar a este método.
Valores devueltos None N/D

Batería utilizable por el usuario

Temas Valor Descripción
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e GUID que indica las extensiones al soporte del controlador de la batería del método de control de Windows.
ID de revision 0 Primera revisión de esta capacidad.
Índice de función 0x2 Indica que este _DSM es para que OSPM determine si el dispositivo de batería es utilizable por el usuario o no.
Argumentos Ninguno No se requieren argumentos.
Valores devueltos Paquete con un único número entero. 0x0 si la batería no es utilizable por el usuario y el usuario final no puede sustituirla, o sí puede sustituirla con herramientas adicionales. 0x1 si el usuario final puede reemplazar la batería sin herramientas adicionales.

Se necesita el guardián de carga

Temas Valor Descripción
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e GUID que indica las extensiones al soporte del controlador de la batería del método de control de Windows.
ID de revision 0 Primera revisión de esta capacidad.
Índice de función 0x3 Indica que este _DSM es para que OSPM determine si la batería del método de control requiere el restablecimiento periódico del guardián para mantener una carga de corriente alta y el período de restablecimiento del guardián.
Argumentos Ninguno No se requieren argumentos.
Valores devueltos Paquete con un único número entero. 0x0 si la batería no requiere del guardián. Los valores 0x0000001e y 0x12C, estos incluidos, indican el intervalo máximo de sondeo en segundos. Todos los demás valores se omiten y se tratan como 0x0 y no es necesario el restablecimiento del guardián. Si se especifica un intervalo de guardián válido, Windows ejecutará el método _BST en un intervalo menor que el valor de guardián especificado cuando el valor de BatteryState en el método _BST esté establecido en cargar. No se admite la actualización dinámica de este valor.

Windows proporciona una vista detallada de las baterías del sistema en la aplicación de bandeja del escritorio. Cada batería, junto con su estado actual, aparece en la interfaz de usuario. La siguiente UI de ejemplo muestra dos baterías.

El firmware puede especificar el orden en el que Windows muestra las baterías. Esto se consigue con el método número de usuario de la ranura (_SUN) tal y como se define en la sección 6.1.11 de la especificación ACPI. El método _SUN devuelve un número entero que representa el ID único de la batería. Windows muestra cada objeto de batería en orden ascendente en función del valor del método _SUN.

Si algún objeto de batería incluye un método _SUN, todos los objetos de batería también deben proporcionar un método _SUN. Windows no soporta que algunas baterías tengan un método _SUN y otras no. Si no se proporcionan objetos _SUN, Windows ordena las baterías en función de su ruta de acceso completa de la instancia del dispositivo. Esta configuración se admite, pero no se recomienda.