Condividi tramite


Implementazione del sottosistema di alimentazione e ricarica

Il sottosistema di alimentazione e ricarica della batteria in una piattaforma Windows deve implementare l'interfaccia del metodo di controllo ACPI. Windows usa questa interfaccia per ottenere informazioni sullo stato dal sottosistema della batteria e per ricevere notifiche di eventi della batteria.

Modello di driver del sottosistema di alimentazione e batteria Windows

Windows offre un modello di driver del dispositivo di alimentazione e batteria affidabile. Le informazioni di risparmio energia vengono trasmesse al gestore energia windows tramite un driver del dispositivo a batteria. Queste informazioni vengono quindi aggregate ed esposte all'interfaccia utente di Windows tramite irP del dispositivo batteria e un set di API software di gestione energia.

Il modello di driver della batteria per Windows è un modello porta/miniport; ovvero, il modello e le interfacce della batteria sono definiti in modo che i nuovi tipi di batteria possano essere esposti tramite un driver miniport, come illustrato nel diagramma a blocchi seguente. Tuttavia, in pratica, viene usata solo l'interfaccia del metodo di controllo ACPI. È supportato un driver miniport (Human Interface Device) per i dispositivi Uninterruptible Power Supply (UPS) collegati a USB, ma questo driver non viene usato per le batterie di sistema.

Tutte le piattaforme Windows devono esporre le batterie e il sottosistema di ricarica tramite l'interfaccia del metodo di controllo ACPI. L'interfaccia miniport della batteria non deve essere usata per i sottosistemi di ricarica della batteria specifici della piattaforma. La specifica ACPI 5.0 definisce i metodi di controllo per consentire a Windows di ottenere informazioni sulla batteria e lo stato corrente. Inoltre, l'interfaccia ACPI fornisce eventi per consentire alla piattaforma hardware di notificare le modifiche della batteria e dell'alimentazione di Windows, ad esempio una transizione dall'ac alla potenza della batteria.

Recupero dello stato della batteria

Windows Power Manager richiede periodicamente informazioni sullo stato dalla batteria, tra cui la capacità di carica rimanente e la frequenza corrente di scarico. Questa richiesta ha origine nel power manager stesso, un componente dell'interfaccia utente di livello superiore o in un'applicazione. Il risparmio energia trasforma la richiesta in un pacchetto di richiesta I/O (IRP) al dispositivo della batteria, che viene quindi trasformato nel metodo di controllo appropriato dal driver della batteria del metodo di controllo Windows, Cmbatt.sys. Il metodo viene eseguito e il risultato viene restituito lo stack di driver.

Nel caso delle informazioni sullo stato, il metodo stato della batteria (_BST) è il metodo di controllo appropriato. Il metodo _BST richiede al firmware ACPI di ottenere informazioni correnti dal sottosistema di alimentazione. Il risultato del metodo _BST è un buffer che contiene le informazioni necessarie, restituite al driver della batteria del metodo di controllo. Il driver della batteria del metodo di controllo converte il contenuto del buffer nel formato richiesto dal driver della batteria e da Windows Power Manager.

Notifiche di modifica dello stato

Il sottosistema di alimentazione e batteria genera diverse notifiche al sistema operativo per le modifiche dello stato, incluse le modifiche al livello di carica, le transizioni dall'ac alla batteria e così via. Non è consigliabile eseguire il polling continuo per queste modifiche allo stato perché in questo modo è necessaria una frequenza di polling elevata. Pertanto, la piattaforma hardware deve implementare un modello basato su eventi per informare Windows delle modifiche nel sottosistema di alimentazione e batteria.

Quando lo stato della batteria (inclusa la capacità rimanente o lo stato di ricarica) cambia, il firmware ACPI deve inviare un comando Notify(0x80) sul dispositivo Batteria del metodo di controllo. In risposta, il driver della batteria del metodo di controllo in Windows valuta il metodo _BST e restituisce le informazioni aggiornate al risparmio energia.

Quando i dati statici della batteria cambiano (inclusa l'ultima capacità di carica completa, la capacità di progettazione e il numero di cicli), il firmware ACPI è necessario per inviare un comando Notify(0x81) nel dispositivo batteria del metodo di controllo. In risposta, il driver della batteria del metodo di controllo in Windows valuta il metodo _BIX e restituisce le informazioni aggiornate al risparmio energia.

Gli eventi di notifica ACPI vengono segnalati tramite l'interruzione del controllo del sistema (SCI), nel caso di piattaforme con controller incorporato o tramite I/O (GPIO) per utilizzo generico, nel caso di piattaforme con hardware del sottosistema della batteria direttamente connesso al silicio principale.