Compartilhar via


Implementação de firmware de subsistema de energia e bateria ACPI

Espera-se que as plataformas Windows exponham seus dispositivos de bateria e adaptadores AC em firmware por meio de ACPI usando interfaces de método de controle padronizadas, conforme descrito na especificação de ACPI.

Cada plataforma móvel do Windows deve ter um dispositivo de fonte de energia e uma ou mais baterias. As informações desses subsistemas são usadas para transmitir o status de energia para o usuário. Esse status inclui informações como se a plataforma está em execução na energia AC ou DC, o nível de carga de cada bateria e o status de carregamento da bateria. O Windows Power Manager agrega essas informações e as disponibiliza para o medidor de bateria do Windows e outros componentes de gerenciamento de energia.

Este tópico detalha como a plataforma deve expor informações de subsistema de energia ao gerenciador de energia do Windows. Para obter mais informações, confira o Capítulo 10, Dispositivos de Fonte de Energia, na especificação de ACPI.

Observação

Algumas das informações descritas neste artigo são específicas do Windows e não são detalhadas na especificação de ACPI recente.

Objeto de fonte de energia ACPI

O firmware ACPI deve fornecer e implementar um único dispositivo de fonte de energia ACPI por seção 10.3 da especificação de ACPI. Esse objeto deve relatar a si mesmo com uma ID de hardware (_HID) de "ACPI0003".

Nota Para sistemas que têm várias fontes de energia, todas as fontes de energia físicas devem ser multiplexadas por meio de um único objeto de dispositivo de fonte de energia no ACPI. Esse objeto deve representar o status composto de entradas de fonte de energia para o sistema. Os sistemas cliente não devem fornecer vários objetos de dispositivo de fonte de energia. (Objetos de fonte de energia adicionais podem estar presentes em sistemas de servidor que têm várias fontes de energia.)

Esse objeto também deve implementar o método Power Source (_PSR). Esse método retorna o status da fonte de alimentação e transmite se a fonte de alimentação está atualmente online (energia AC) ou offline (na energia da bateria). O método _PSR só deve relatar a energia AC (online) quando o sistema estiver conectado à energia principal. Quando o estado de _PSR é alterado, a plataforma deve gerar uma interrupção e um comando Notify(0x80) no dispositivo no namespace ACPI. Isso deve ser executado imediatamente após a plataforma detectar a alteração de estado físico.

Métodos de controle de bateria ACPI

O firmware ACPI deve fornecer e implementar um objeto de método de controle ACPI para cada bateria no sistema por seção 10.2 da especificação de ACPI. Cada dispositivo de bateria deve fazer o seguinte:

  • Identificar-se com uma ID de hardware (_HID) de "PNP0C0A".
  • Implementar o método Status (_STA) para indicar se o dispositivo está habilitado, desabilitado ou não está presente.
  • Relatar informações estáticas usando o método de informações de bateria estendidas (_BIX).
  • Relatar o status da bateria usando o método de controle de status da bateria (_BST).
  • Suportar eventos de nível de carga usando o mecanismo de ponto de viagem de bateria (_BTP).

Opcionalmente, um dispositivo de bateria pode implementar o Número da Unidade de Slot (_SUN) ou indicar a ordem da bateria para fins de exibição na interface do usuário.

A discussão a seguir apresenta os detalhes desses métodos e descreve seus requisitos específicos do Windows.

Implementação de ACPI de informações estáticas da bateria

O firmware ACPI deve implementar o método _BIX para cada bateria a fim de fornecer informações estáticas sobre a bateria, incluindo capacidade de design, contagem de ciclos e número de série. A tabela a seguir expande as definições dos campos descritos na seção 10.2.2.2 da especificação ACPI e enumera os requisitos específicos do Windows para essas informações.

Tópicos Descrição Requisitos específicos do Windows
Revisão Indica revisão de _BIX. Deve ser definido como 0x0.
Unidade de energia Determina se as unidades relatadas pelo hardware são miliamperes e miliampere-hora ou miliwatts e miliwatts-hora. Deve ser definido como 0x0 para indicar que as unidades são miliwatts e miliwatts-hora. Esse valor não deve ser alterado em tempo de execução.
Capacidade de design Indica a capacidade original da bateria em miliwatt-hora. Deve ser definido como um valor preciso e não pode ser definido como 0x0 ou 0xFFFFFFFF. Esse valor não deve ser alterado em tempo de execução.
Última carga de bateria completa Indica a capacidade de carga total atual da bateria. Deve ser definido como um valor preciso e não pode ser definido como 0x0 ou 0xFFFFFFFF. Esse valor deve ser atualizado a cada aumento de contagem de ciclo de tempo. Esse valor deve permanecer constante quando a bateria estiver descarregando. Recomendamos que esse valor seja atualizado somente quando a bateria atingir a carga total.
Tecnologia da bateria Indica se a bateria é recarregável ou de uso único. Deve ser definido como 0x1 para indicar que a bateria é recarregável.
Tensão de design Indica a tensão de design da bateria. Deve ser definido como a tensão de design da bateria quando nova em milivolts. Não deve ser definido como 0x0 ou 0xFFFFFFFF. Esse valor não deve ser alterado em tempo de execução.
Capacidade de design de aviso Indica um nível de aviso de bateria baixa fornecido pelo OEM. O Windows ignora esse valor.
Capacidade de design baixa Indica o nível crítico da bateria no qual o Windows deve desligar ou hibernar imediatamente antes que o sistema desligue. Deve ser definido como um valor entre 0 e 5% da capacidade de design da bateria.
Granularidade da capacidade da bateria 1 Indica a quantidade mínima de alteração de carga restante que pode ser detectada pelo hardware entre a capacidade de design de aviso e a capacidade de design baixa. Deve ser definido como um valor até 1% da capacidade de design da bateria.
Granularidade da capacidade da bateria 2 Indica a quantidade mínima de alteração de carga restante que pode ser detectada pelo hardware entre a capacidade da última carga de bateria completa e a capacidade de design de aviso. Deve ser definido como um valor não maior que 75 miliwatts (aproximadamente 0,25% de uma bateria de 25 watts/hora). (1/400) da capacidade de design da bateria.
Contagem de ciclos Indica a contagem do ciclo da bateria. Deve ser definido como um valor maior que 0x0. Não deve ser definido como 0xFFFFFFFF.
Precisão da medida Indica a precisão da medição da capacidade da bateria. Deve ser definido como 95.000 ou melhor, indicando 95% de precisão ou melhor.
Tempo máximo de amostragem O tempo máximo de amostragem com suporte entre duas avaliações _BST sucessivas, o que mostrará uma diferença na capacidade restante. Nenhum requisito específico.
Tempo máximo de amostragem O tempo mínimo de amostragem com suporte entre duas avaliações _BST sucessivas, o que mostrará uma diferença na capacidade restante. Nenhum requisito específico.
Intervalo médio máximo O intervalo médio máximo, em milissegundos, compatível com o medidor de combustível da bateria. Nenhum requisito específico.
Intervalo médio mínimo O intervalo médio mínimo, em milissegundos, compatível com o medidor de combustível da bateria. Nenhum requisito específico.
Número do modelo Número do modelo de bateria fornecido pelo OEM. Não pode ser NULL.
Número de série Número de série da bateria fornecido pelo OEM. Não pode ser NULL.
Tipo de bateria Informações de tipo de bateria fornecidas pelo OEM. Nenhum requisito específico.
Informações do OEM Informações fornecidas pelo OEM. Nenhum requisito específico.

Além desses requisitos, o firmware da plataforma deve gerar uma interrupção e um comando Notify(0x81) no dispositivo de bateria no namespace ACPI sempre que qualquer um dos dados de estado da bateria no _BIX for alterado. Isso inclui a última capacidade de carga completa, capacidade de design e contagem de ciclos. Isso deve ser executado imediatamente após a alteração de estado ser detectada pela plataforma.

A capacidade da última carga total representa a quantidade estimada de energia que a bateria deve conter na última vez em que a bateria foi totalmente carregada. O Windows pressupõe que esse valor seja atualizado somente quando a bateria tiver sido carregada. Portanto, o último valor de capacidade de carga completa não deve ser alterado enquanto a bateria é descarregada. Recomendamos que isso somente seja atualizado quando a bateria atingir a carga total.

Implementação de ACPI de informações de status em tempo real da bateria

O firmware ACPI deve implementar o método _BST para cada bateria a fim de fornecer informações de status em tempo real sobre a bateria, incluindo a capacidade restante e a taxa atual de drenagem. A tabela a seguir expande as definições dos campos descritos na seção 10.2.2.6 da especificação ACPI e enumera os requisitos específicos do Windows para essas informações.

Tópicos Descrição Requisitos específicos do Windows
Estado da bateria Indica se a bateria está sendo carregada no momento, está sendo descarregada ou está em estado crítico. O Estado da Bateria deve relatar o carregamento somente se a bateria estiver carregando. Da mesma forma, o Estado da Bateria deve relatar o descarregamento somente se a bateria estiver descarregando. Uma bateria que não está carregando nem descarregando não deve relatar nenhum bit.
Taxa de bateria presente Fornece a taxa atual de drenagem em miliwatts da bateria. Deve ser um valor maior que 0x0 e menor que 0xFFFFFFFF. Deve ser preciso dentro do valor de Precisão da Medida em _BIX.
Capacidade restante da bateria Fornece a capacidade restante da bateria em miliwatts-hora. Deve ser maior que 0x0 e menor que 0xFFFFFFFF. Deve ser preciso dentro do valor de Precisão da Medida em _BIX.
Tensão presente da bateria Indica a tensão atual entre os terminais da bateria. Deve estar entre um valor de 0x0 e 0xFFFFFFFF em milivolts.

Quando qualquer dado no _BST é alterado, a plataforma deve gerar uma interrupção e um Notify(0x80) no dispositivo de bateria no namespace ACPI. Isso deve ser executado imediatamente após a alteração de estado físico ser detectada pela plataforma. Isso inclui qualquer alteração no campo Estado da Bateria para o bit de carregamento (Bit0) ou o bit de carregamento (Bit1).

Além disso, a plataforma deve implementar o _BTP-Battery Trip Point-method. O _BTP permite que o Windows especifique um limite de capacidade restante que, quando cruzado, faz a plataforma gerar uma interrupção e um Notify(0x80) no dispositivo de bateria no namespace ACPI. O método _BTP impede que o Windows precise sondar a bateria periodicamente.

Métodos de controle de bateria específicos do sistema operacional Windows

A especificação ACPI oferece métodos de controle específicos do dispositivo e do sistema operacional por meio do método específico ao dispositivo ou método de controle _DSM. _DSM é descrito na seção 9.14.1 da especificação de ACPI.

O Windows 8 dá suporte aos seguintes métodos de _DSM para dispositivos de Bateria do Método de Controle.

Direção da taxa de carga térmica

Tópicos Valor Descrição
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e O GUID que indica extensões para suporte ao driver de bateria do método de controle do Windows.
ID da Revisão 0 Primeira revisão dessa funcionalidade.
Índice de função 0x1 Definir o limite de carga da bateria.
Argumentos Limite térmico Valor inteiro de 0 a 100 indicando o limite de carga térmica. Um valor de 40% indica que a bateria deve ser carregada a 40% da taxa máxima. Um valor de 0% indica que o carregamento da bateria deve ser interrompido até que esse método seja chamado novamente.
Valores de retorno Nenhum N/D

Bateria a serviço do usuário

Tópicos Valor Descrição
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e O GUID que indica extensões para suporte ao driver de bateria do método de controle do Windows.
ID da Revisão 0 Primeira revisão dessa funcionalidade.
Índice de função 0x2 Indica que esse _DSM é para o OSPM determinar se o dispositivo de bateria é útil ou não.
Argumentos Nenhum Nenhum argumento é necessário.
Valores de retorno Pacote que contém um único inteiro. 0x0 se a bateria não puder ser atendida pelo usuário e não puder ser substituída pelo usuário final ou puder ser substituída pelo usuário final com ferramentas adicionais. 0x1 se a bateria puder ser substituída pelo usuário final sem ferramentas adicionais.

Watchdog de carregamento necessário

Tópicos Valor Descrição
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e O GUID que indica extensões para suporte ao driver de bateria do método de controle do Windows.
ID da Revisão 0 Primeira revisão dessa funcionalidade.
Índice de função 0x3 Indica que essa _DSM é para o OSPM determinar se a Bateria do Método de Controle requer a redefinição periódica do watchdog para manter a alta carga atual e o período em que o watchdog deve ser redefinido.
Argumentos Nenhum Nenhum argumento é necessário.
Valores de retorno Pacote que contém um único inteiro. 0x0 se a bateria não exigir manutenção de watchdog. Valores inclusivos de 0x0000001e e 0x12C indicam o intervalo máximo de sondagem em segundos. Todos os outros valores são ignorados e tratados como 0x0 e a redefinição do watchdog não é necessária. Se um intervalo de watchdog válido for especificado, o Windows executará o método _BST em um intervalo que não seja maior do que o valor de watchdog especificado quando o valor de BatteryState no método _BST estiver definido como carregamento. Não há suporte para a atualização dinâmica desse valor.

O Windows fornece uma exibição detalhada das baterias do sistema no aplicativo de bandeja da área de trabalho. Cada bateria, juntamente com seu status atual, é listada na interface do usuário. A interface do usuário de exemplo a seguir mostra duas baterias.

A ordem na qual o Windows mostra as baterias pode ser especificada pelo firmware. Isso é obtido usando o método de número de usuário de slot (_SUN), conforme definido na seção 6.1.11 da especificação de ACPI. O método _SUN retorna um inteiro que representa a ID exclusiva da bateria. O Windows lista cada objeto de bateria em ordem crescente com base no valor do método _SUN.

Se qualquer objeto de bateria incluir um método _SUN, todos os objetos de bateria também deverão fornecer um método _SUN. O Windows não dá suporte ao caso em que algumas baterias têm um método _SUN e outras baterias não. Se nenhum objeto _SUN for fornecido, o Windows classificará as baterias com base no caminho completo da instância do dispositivo; essa configuração tem suporte, mas não é recomendada.