Share via


Gerenciamento de energia de NFP para plataformas de modo Em espera moderno

Um dispositivo de NFP é um dispositivo de transmissor/receptor de rádio com alcance à curta distância que permite que um computador do Windows possa se associar e emparelhar com outros computadores equipados com o NFP.

Um dispositivo de NFP é exposto ao sistema operacional do Windows por meio da interface PnP (Plug and Play GUID_DEVINTERFACE_NFP). Um driver de terceiros, fornecido pelo fornecedor de dispositivos de NFP, é responsável por implementar a interface GUI_DEVINTERFACE_NFP e o gerenciamento de energia do dispositivo de NFP físico. O dispositivo de NFP normalmente está conectado aos marcadores de interface I2C do SoC (System on a Chip) ou do silício principal.

Em geral, o dispositivo de NFP pode inserir um modo de baixo consumo de energia (modo Em espera ou modo de remoção de energia) quando nenhum cliente de software tiver publicações ou assinaturas de proximidade ou todas as publicações e assinaturas estiverem desabilitadas. Do ponto de vista de desenvolvimento do driver, essa condição ocorre quando não há identificadores pendentes no dispositivo. O dispositivo de NFP deve ser colocado no modo Em espera ou no modo de remoção de energia quando nenhum identificador para o dispositivo estiver aberto e habilitado.

Quando a plataforma entrar no modo Em espera moderno e a exibição é desativada, o dispositivo de NFP deve entrar no modo Em espera ou no modo de remoção de energia. Se o consumo de energia de um dispositivo de NFP no modo Em espera for maior que um miliwatt em média, o dispositivo deverá entrar em um modo de 0 watt, de remoção de energia.

O driver de dispositivo de NFP não é notificado diretamente quando a plataforma entra e sai do modo Em espera moderno. Em vez disso, o Windows notifica o driver indiretamente desabilitando os identificadores para o driver na entrada do modo Em espera moderno e habilitando esses identificadores na saída do modo Em espera moderno. Depois que a plataforma entra no modo Em espera moderno, o Windows envia uma notificação de desabilitação para cada identificador aberto que ainda não foi desabilitado. Quando a plataforma sai do modo Em espera moderno, o Windows envia uma notificação de habilitação para cada identificador que foi desabilitado por ele. Um identificador aberto que já estava desabilitado antes do modo Em espera moderno ser inserido permanece desabilitado após a saída do modo Em espera moderno.

Modos de gerenciamento de energia do dispositivo

A partir do Windows 8, espera-se que um dispositivo de NFP para uma plataforma de modo Em espera moderno tenha três modos de energia – ativos, ociosos e Em espera – além de um modo de remoção de energia (no qual todas as entradas de energia para o dispositivo de NFP foram desligadas por um mecanismo de hardware externo ao dispositivo). Entre em contato com o fornecedor de hardware de um dispositivo de NFP para obter detalhes sobre os modos de gerenciamento de energia compatíveis com o dispositivo.

A tabela a seguir descreve os modos de energia do dispositivo para um dispositivo de NFP.

Modo de energia do dispositivo Descrição Média de consumo de energia Sair da latência para ativo Mecanismo de transição

Ativo

O dispositivo de NFP está se comunicando ativamente com outro dispositivo de NFP em um computador próximo.

< 50 miliwatts

N/D

N/D

Ocioso

O dispositivo de NFP está aguardando outro computador com NFP se aproximar. O driver do dispositivo de NFP tem publicações e assinaturas abertas.

< 5 miliwatts

< 10 milissegundos (típico)

Autônomo de hardware

Standby

O dispositivo de NFP tem energia aplicada, mas não há publicações ou assinaturas pendentes (sem identificadores abertos).

< 1 miliwatt (dependente do dispositivo)

< 50 milissegundos (típico)

Comando de driver ou fixação GPIO do SoC ou silício principal.

Remoção de energia

O dispositivo de NFP não tem energia aplicada porque a plataforma não está ligada ou uma entidade externa desligou a energia.

Zero watts

< 100 milissegundos

A entidade externa remove a energia ou fornece energia por meio de firmware ACPI em resposta a um IRP D3.

Observação

  • Na tabela anterior, o termo Em espera refere-se a um modo de energia do dispositivo distinto do Modo Em espera moderno, que é um estado de energia de toda a plataforma.
  • Na tabela anterior, o termo IRP D3 refere-se a uma solicitação IRP_MN_SET_POWER do tipo DevicePowerState.

O consumo de energia especificado de um dispositivo de NFP no modo Em espera variará de acordo com a peça número e o fabricante. Os designers de sistema devem trabalhar com o fornecedor do dispositivo para entender o consumo de energia no modo Em espera específico do dispositivo. Se o consumo de energia no modo Em espera for superior a um miliwatt, o dispositivo de NFP deverá ser anexado a um trilho de energia alternável para que o dispositivo possa ser colocado no modo de remoção de energia durante o modo Em espera moderno.

Mecanismo de gerenciamento de energia de software

O Windows depende do fornecedor de dispositivos de NFP para fornecer um driver de terceiros que gerencia a energia do dispositivo de NFP. O Windows espera que esse driver monitore o número atual de identificadores abertos para o driver de dispositivo de NFP e o estado desses identificadores para determinar quando colocar o dispositivo de NFP em um modo de baixo consumo de energia.

É recomendável aos desenvolvedores de driver NFP usar a UMDF (User-Mode Driver Framework) para desenvolver seus drivers. A UMDF inclui vários recursos que facilitam o desenvolvimento do gerenciamento de energia de runtime do dispositivo.

Suporte a D3

Os desenvolvedores de driver NFP são incentivados a colocar o dispositivo de NFP em um estado D3 quando todos os identificadores do dispositivo foram fechados ou todos os identificadores abertos do dispositivo receberam a notificação IOCTL_NFP_DISABLE. Todos os identificadores abertos receberão a notificação IOCTL_NFP_DISABLE depois que a plataforma entrar no modo Em espera moderno e a área de trabalho do usuário estiver bloqueada.

Mesmo que o dispositivo de NFP possa obter um consumo de energia inferior a um miliwatt no modo de energia ociosa, uma transição para D3 ainda é recomendada quando todos os identificadores estão fechados ou receberam a notificação IOCTL_NFP_DISABLE. Executar uma transição para D3 permite que todos os drivers na pilha de drivers para o dispositivo de NFP sejam notificados de que o hardware está entrando em um modo de baixo consumo de energia. Além disso, uma transição para D3 pode ser detectada pela instrumentação incorporada ao Windows. O Kit de ferramentas de desempenho do Windows e outras ferramentas de diagnóstico de desempenho podem ser usados para observar essa transição. Esse suporte de diagnóstico interno reduz o custo de um integrador do sistema para verificar se o dispositivo de NFP é IOCTL_NFP_DISABLE executando corretamente o gerenciamento de energia.

Para alguns barramentos de serviço, os dispositivos no barramento devem fazer a transição para D3 antes que o controlador de barramento possa entrar em um estado de baixo consumo de energia. Em um dispositivo de NFP conectado a I2C, a dependência do dispositivo de NFP do ponto de extremidade entrar na D3 não existe para que o controlador de barramento I2C seja desligado.

No entanto, se no futuro as plataformas de modo Em espera moderno usarem o USB (Barramento Serial Universal) para se conectar a dispositivos de NFP, um dispositivo de NFP deverá ser capaz de entrar na D3 para que o controlador de host USB possa desligar e o SoC ou o silício principal possa inserir um estado ocioso de baixo consumo de energia durante o modo Em espera moderno. Os desenvolvedores de driver de dispositivo de NFP são incentivados a fazer a transição de seus dispositivos para D3 quando estiverem prontos para entrar em um modo de baixo consumo de energia, independentemente do barramento subjacente, para habilitar a reutilização do driver no futuro e o diagnóstico fácil de gerenciamento de energia.

Se, para entrar no modo de energia no modo Em espera, o dispositivo de NFP exigirá que um comando seja enviado do driver de dispositivo de NFP pelo barramento de comunicações, esse comando deverá ser enviado como parte da transição para D3 no driver.

Se o dispositivo de NFP exigir que a fixação GPIO do SoC seja alternada para entrar no modo de energia no modo Em espera, será necessária uma transição para D3. Iniciar uma transição para D3 notifica o driver ACPI do Windows, Acpi.sys, que executa o método de controle _PS3 implementado no dispositivo de NFP no namespace do ACPI. O método _PS3 pode alternar a linha GPIO por meio de uma região de operação GPIO. Para tornar o driver de dispositivo de NFP mais portátil, todo atraso específico da plataforma ou outras restrições de tempo devem ser implementados no firmware da plataforma para que o driver de dispositivo de NFP não precise ser personalizado para uma plataforma específica.

Para habilitar a transição do dispositivo de NFP para D3 quando o dispositivo estiver ocioso e a plataforma estiver no estado de energia do sistema S0 (em funcionamento), um driver UMDF chamará o método IWDFDevice2::AssignS0IdleSettingsEx. Nessa chamada, o driver fornece um ponteiro para uma estrutura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS como o parâmetro de entrada e define o membro DxState dessa estrutura como PowerDeviceD3.

Se o consumo de energia do dispositivo de NFP no modo Em espera for maior que um miliwatt, o dispositivo deverá ser colocado no modo de remoção de energia quando todos os identificadores forem fechados ou todos os identificadores tiverem sido enviados à notificação IOCTL_NFP_DISABLE. Para que o firmware e o hardware subjacentes removam a energia do dispositivo de NFP, o dispositivo já deve ter inserido D3 (ou seja, D3hot) e o driver de dispositivo de NFP já deve ter habilitado a transição para D3cold. Habilitar o D3cold implica que o driver do dispositivo de NFP salva o estado de hardware do dispositivo antes da transição para D3 para que toda a energia possa ser removida do dispositivo. O dispositivo deve ser capaz de retomar a operação normal mais tarde, depois que o dispositivo for ligado (ou seja, o dispositivo retorna D3cold) e o driver restaura o estado de hardware do dispositivo. Para habilitar D3cold, um driver UMDF chama o método IWDFDevice2::AssignS0IdleSettingsEx. Nessa chamada, o driver fornece um ponteiro para uma estrutura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS e define o membro ExcludeD3Cold dessa estrutura como WdfFalse.

Para obter mais informações, consulte Suporte a D3cold em um driver.

Gerenciador de Rádio

Se o dispositivo de NFP usar um mecanismo RF (Rádio) para detectar eventos de proximidade, o fornecedor do dispositivo de NFP deverá fornecer um Gerenciador de Rádio além de um driver de dispositivo de NFP. O gerenciador de rádio é uma DLL COM que implementa a API de interface do usuário de gerenciamento de rádio e se comunica de forma privada com o driver de dispositivo de NFP. Quando o usuário altera o estado de ativação/desativação do dispositivo NFP no aplicativo de Configurações do Windows, o driver de dispositivo de NFP recebe a notificação da alteração por meio do gerenciador de rádio. O desenvolvedor do driver deve definir uma interface privada para comunicar o estado do gerenciamento de rádio entre o objeto COM do gerenciador de rádio e o driver de dispositivo de NFP. Quando o driver de dispositivo de NFP recebe um comando do objeto do gerenciador de rádio para definir o estado de ativação/desativação do dispositivo, o driver deve salvar o estado de hardware do dispositivo, desativar todos os componentes RF associados ao dispositivo NFP e fazer a transição do dispositivo para D3. Observe que a quantidade e o estado de todos os identificadores da interface GUID_DEVINTERFACE_NFP que já estão abertos quando o dispositivo entra em D3 devem ser preservados enquanto o dispositivo está em D3.

Depois que o gerenciador de rádio tiver indicado que os componentes RF no dispositivo de NFP devem ser habilitados e ligados, o dispositivo de NFP deve fazer a transição imediatamente de volta para D0 quando ocorrer um dos seguintes procedimentos:

  • Um cliente abre um novo identificador para o driver de dispositivo de NFP.
  • Todo identificador já aberto recebe a notificação IOCTL_NFP_ENABLE.

A notificação IOCTL_NFP_ENABLE será enviada pelo Windows para o driver de dispositivo de NFP quando a plataforma sair do modo Em espera moderno e o usuário inserir sua senha.

Se o gerenciador de rádio tiver indicado que os componentes RF no dispositivo de NFP devem ser desabilitados e desligados, o dispositivo de NFP deverá permanecer em D3, mesmo que um novo identificador seja aberto ou um identificador existente esteja habilitado, até que o gerenciador de rádio indique que os componentes RF devem ser habilitados e ligados.

Se o dispositivo de NFP exigir que um comando seja enviado para retornar o dispositivo de NFP para o modo ocioso, esse comando poderá ser enviado pelo barramento de comunicações (normalmente I2C) e deve ocorrer como parte da conclusão da transição para D0 no driver de dispositivo de NFP.

A transição do dispositivo de NFP para D0 permite que o método de controle _PS0 no dispositivo no namespace da ACPI seja executado. Se necessário, esse método de controle pode alternar uma linha GPIO do SoC para o dispositivo de NFP para retornar o dispositivo ao modo ocioso.

Configurações de energia de hardware com suporte

Um dispositivo de NFP não deve consumir mais de um miliwatt de energia, em média, enquanto a plataforma de hardware está no modo Em espera moderno. Se o dispositivo consumir não mais do que um miliwatt de energia quando estiver em modo Em espera, o driver de dispositivo de NFP poderá colocar o dispositivo em modo Em espera quando o dispositivo não estiver sendo usado. Caso contrário, o designer do sistema deve anexar o dispositivo a um trilho de energia dedicado que pode ser desligado quando o dispositivo não está sendo usado.

A energia no modo Em espera é menor que um miliwatt

Se o dispositivo de NFP consumir menos de um miliwatt de energia no modo Em espera, o dispositivo de NFP poderá ser colocado em qualquer trilho de energia do sistema e poderá compartilhar esse trilho com inúmeros outros dispositivos. A transição do dispositivo para o modo de energia no modo Em espera ocorre como parte de sua transição para D3.

A entrada do dispositivo de NFP no modo Em espera pode ser iniciada enviando um comando pelo barramento de comunicações (normalmente I2C) ou alternando uma linha GPIO do SoC que é roteada para o dispositivo de NFP.

Se o dispositivo de NFP precisar alternar de uma linha GPIO do SoC para entrar no modo Em espera, a linha GPIO deverá ser descrita em uma região de operação GPIO no namespace da ACPI. O integrador do sistema deve implementar os métodos _PS3 e _PS0 no dispositivo de NFP no namespace da ACPI. A implementação do método _PS3 deve alternar a linha GPIO para alternar o dispositivo de NFP para o modo Em espera. A implementação do método _PS0 deve alternar a linha GPIO para alternar o dispositivo de NFP do modo Em espera para o modo ocioso. A agregação dessa linha pode estar sujeita a restrições de tempo específicas da plataforma ou do dispositivo.

Conforme descrito anteriormente, o driver de dispositivo de NFP deve iniciar uma transição para D3 quando todos os identificadores são fechados ou todos os identificadores receberam a notificação de IOCTL_NFP_DISABLE ou o gerenciador de rádio solicitou que os componentes RF no dispositivo de NFP fossem desativados.

A energia no modo Em espera é maior que um miliwatt

Se o consumo de energia do dispositivo de NFP no modo Em espera for superior a um miliwatt, o dispositivo de NFP deverá ser colocado em um trilho de energia dedicado que possa ser ligado e desativado independentemente sob o controle de um GPIO do SoC. Quando todos os identificadores são fechados, todos os identificadores receberam a notificação IOCTL_NFP_DISABLE ou o gerenciador de rádio solicitou que os componentes RF fossem desativados, o dispositivo de NFP primeiro faz a transição para D3 e, em seguida, faz a transição para o modo de remoção de energia quando o trilho de energia é desligado.

O trilho de energia alternável deve ser controlado por uma linha GPIO do SoC ou silício principal. A linha GPIO deve ser descrita como parte de uma região de operação GPIO no namespace da ACPI. Além disso, o namespace da ACPI deve incluir um Recurso de energia que descreve a trilha de energia alternável e que implementa métodos de controle de _ON e _OFF. Os métodos de controle _ON e _OFF alternam a linha GPIO descrita na região de operação GPIO para ativar e desativar a trilha de energia. Pacotes _PR3 e _PR0 devem ser colocados sob o dispositivo de NFP no namespace da ACPI e devem ser vinculados ao Recurso de energia que descreve a trilha de energia.

Conforme descrito anteriormente, o driver de dispositivo de NFP deve habilitar D3cold. Além disso, o driver deve iniciar uma transição para D3 quando todos os identificadores forem fechados ou todos os identificadores receberem a notificação IOCTL_NFP_DISABLE, ou o gerenciador de rádio solicitar que os componentes RF sejam desativados. Quando o driver da ACPI receber o IRP D3, ele executará o método _OFF no Recurso de energia indicado pelo pacote _PR3. Esse método alternará a linha GPIO que controla o hardware de troca de energia para remover a energia do dispositivo de NFP.

Se o gerenciador de rádio tiver indicado que os componentes RF devem ser habilitados, o driver de dispositivo de NFP deverá executar uma transição para D0 quando um novo identificador for aberto ou um identificador existente tiver recebido a notificação de IOCTL_NFP_ENABLE. Quando o driver ACPI receber o D0 IRP (uma solicitação IRP_MN_SET_POWER do tipo DevicePowerState), ele executará o método _ON no Recurso de energia indicado pelo pacote _PR0. Esse método alternará a linha GPIO que controla o hardware de troca de energia para aplicar novamente a energia para o dispositivo de NFP.

Preocupações de ativação

Não há nenhuma preocupação de ativação para o dispositivo de NFP. O dispositivo de NFP não tem permissão para dar suporte à ativação do SoC enquanto a plataforma estiver em modo Em espera moderno.

Teste e validação

É essencial para o designer do sistema verificar se o dispositivo de NFP entra de forma confiável no modo Em espera ou no modo de remoção de energia quando o monitor é desligado para o modo Em espera moderno. A solução de gerenciamento de energia para o dispositivo de NFP é altamente dependente da implementação do driver de terceiros. Portanto, os integradores do sistema são incentivados a discutir o melhor método para testar e validar a funcionalidade do dispositivo de NFP com o fornecedor do dispositivo de NFP.

Se o driver de dispositivo de NFP iniciar uma transição para D3 quando todos os identificadores para o driver estiverem fechados ou desabilitados, a ferramenta XPerf poderá ser usada para observar essa transição. Esse método de validação é semelhante ao descrito em outro lugar para controladores de toque e dispositivos de sensor.

Se o driver enviar comandos pelo barramento de comunicações para fazer a transição do dispositivo para dentro e para fora do modo Em espera, o driver deverá dar suporte ao rastreamento de eventos para que o integrador do sistema possa validar facilmente as operações de gerenciamento de energia. A instrumentação pode ser facilmente adicionada aos drivers do Windows usando eventos ETW (Rastreamento de eventos para Windows). Para obter mais informações, consulte Adicionar rastreamento de eventos para drivers de modo kernel. Uma vantagem do ETW é que ele pode ser exibido usando o pacote de ferramentas do kit de ferramentas de desempenho do Windows, que inclui XPerf.

Lista de verificação de gerenciamento de energia do dispositivo de NFP

Os integradores do sistema e os fornecedores de NFP devem examinar a lista de verificação abaixo para verificar se o design de gerenciamento de energia do sistema é compatível com Windows 8 e superiores.

  • Selecione um dispositivo de NFP que tenha um modo Em espera que consuma uma média de menos de um miliwatt de energia.
  • Verifique se o driver de dispositivo de NFP inicia uma transição para D3 quando todos os identificadores para o dispositivo são fechados ou todos os identificadores abertos receberam a notificação IOCTL_NFP_DISABLE ou o gerenciador de rádio solicita que os componentes RF no dispositivo de NFP sejam desabilitados e desligados.
  • Verifique se o driver de dispositivo de NFP inicia uma transição para D0 se o gerenciador de rádio indicou que os componentes RF devem ser habilitados e, posteriormente, o primeiro identificador é aberto para o dispositivo ou o primeiro identificador aberto recebe a notificação IOCTL_NFP_ENABLE.
  • Se o driver de dispositivo NFP enviar um comando personalizado sobre o barramento de comunicações para informar o dispositivo de NFP para entrar no modo Em espera, trabalhe com o fornecedor do dispositivo de NFP para determinar a melhor maneira de verificar se o dispositivo de NFP entra no modo de energia no modo Em espera em resposta a esse comando.
  • Se o consumo de energia para o dispositivo de NFP for maior que um miliwatt, verifique se o dispositivo é colocado em uma trilha de energia alternável.
  • Se o dispositivo de NFP estiver localizado em uma trilha de energia alternável:
    • Verifique se o dispositivo dá suporte à remoção completa da energia do dispositivo quando ele não é usado e se a restauração da energia reabilita e inicializa novamente o dispositivo automaticamente.
    • Verifique se a trilha de energia é controlada por uma linha GPIO do SoC ou do silício principal.
    • Mapeie a linha GPIO em uma região de operação GPIO implementada no firmware da ACPI do sistema.
    • Forneça um Recurso de energia para descrever uma trilha de energia e inclua os métodos de controle _ON, _OFF e _STA neste Recurso de energia.
    • Forneça os pacotes de _PR0 e _PR3 no dispositivo de NFP no firmware da ACPI do sistema e verifique se eles fazem referência ao Recurso de energia.
    • Se o dispositivo de NFP exigir um atraso de ativação antes que o driver possa acessá-lo, codifique esse atraso na implementação do método de controle _ON.
  • Inicie várias transições para dentro e para fora do modo Em espera moderno e teste o estresse da operação do dispositivo de NFP quando a tela estiver ativada.