Freigeben über


Implementierung des Energie-und Ladesubsystems

Das Akkuleistungs- und Ladesubsystem in einer Windows-Plattform sollte die ACPI Control Method Battery Interface implementieren. Windows verwendet diese Schnittstelle, um Statusinformationen aus dem Akku-Subsystem abzurufen und Benachrichtigungen über Akkuereignisse zu erhalten.

Treibermodell des Windows-Akkus und des Energiesubsystems

Windows verfügt über ein robustes Akku- und Energiesubsystem-Gerätetreibermodell. Power Management-Informationen werden über einen Akkugerätetreiber an den Windows Power Manager übermittelt. Diese Informationen werden dann aggregiert und der Windows-Benutzeroberfläche über Akkugeräte-IRPs und eine Reihe von Power Management-Software-APIs zur Verwaltung verfügbar gemacht.

Das Akkutreibermodell für Windows ist ein Port-/Miniportmodell; Das heißt, das Akkumodell und die Schnittstellen werden definiert, damit neue Akkutypen über einen Miniporttreiber verfügbar gemacht werden können, wie im folgenden Blockdiagramm dargestellt. In der Praxis wird jedoch nur die ACPI Control Method Battery Interface verwendet. Ein HID-Akku-Miniporttreiber (Human Interface Device) für über USB angeschlossene USV-Geräte (Unterbrechungsfreie Stromversorgungsgeräte) wird unterstützt, aber dieser Treiber wird nicht für Systemakkus verwendet.

Von allen Windows-Plattformen wird erwartet, dass sie ihre Akkus und ihr Ladesubsystem über die ACPI Control Method Battery-Schnittstelle bereitstellen. Die Batterie-Miniportschnittstelle sollte nicht für plattformspezifische Batterieladesysteme verwendet werden. Die ACPI 5.0-Spezifikation definiert Kontrollmethoden, um Windows das Abrufen von Akkuinformationen und aktuellem Status zu ermöglichen. Darüber hinaus bietet die ACPI-Schnittstelle Ereignisse, um die Hardwareplattform zu ermöglichen, Windows über Akku- und Stromquellenänderungen zu informieren, z. B. einen Übergang von AC zu Akkubetrieb.

Abrufen des Akkustatus

Der Windows Power Manager fordert regelmäßig Statusinformationen vom Akku an, einschließlich der verbleibenden Ladekapazität und der aktuellen Entlastungsrate. Diese Anforderung stammt aus dem Power Manager selbst, einer übergeordneten Komponente der Benutzeroberfläche oder in einer Anwendung. Der Power Manager wandelt die Anforderung in ein I/O-Anforderungspaket (IRP) in das Akkugerät um, das dann durch den Windows-Steuerungsmethode-Akkutreiber Cmbatt.sys in die entsprechende Steuerungsmethode umgewandelt wird. Die Methode wird ausgeführt und das Ergebnis wird im Treiberstapel zurückgegeben.

Bei Statusinformationen ist die Akkustatusmethode (_BST) die entsprechende Steuerungsmethode. Die _BST-Methode erfordert die ACPI-Firmware, um aktuelle Informationen aus dem Energiesubsystem abzurufen. Das Ergebnis der _BST-Methode ist ein Puffer, der die erforderlichen Informationen enthält, die an den Akkutreiber der Steuerungsmethode zurückgegeben werden. Der Akkutreiber der Steuerungsmethode wandelt den Pufferinhalt in das Format um, das vom Akkutreiber und dem Windows Power Manager benötigt wird.

Benachrichtigungen über Statusänderungen

Das Energie- und Akkusubsystem generiert mehrere Benachrichtigungen an das Betriebssystem für Statusänderungen, einschließlich Änderungen der Ladungsebene, Übergänge von AC zu Akkubetrieb usw. Diese Statusänderungen kontinuierlich abzufragen, erfordert eine hohe Abrufhäufigkeit. Daher muss die Hardwareplattform ein ereignisgesteuertes Modell implementieren, um Windows über Änderungen im Energie- und Akkusubsystem zu informieren.

Wenn der Akkustatus (einschließlich verbleibender Kapazität oder Ladestatus) geändert wird, muss die ACPI-Firmware einen Notify(0x80)-Befehl auf dem Control Method Battery-Gerät ausgeben. Als Reaktion darauf wertet der Control Method Battery-Treiber in Windows die _BST-Methode aus und gibt die aktualisierten Informationen an den Energiemanager zurück.

Wenn sich die statischen Akkudaten ändern (einschließlich der letzten vollständigen Ladekapazität, der Entwurfskapazität und der Zyklusanzahl), muss die ACPI-Firmware einen Notify(0x81)-Befehl auf dem Control Method Battery-Gerät ausgeben. Als Reaktion darauf wertet der Control Method Battery-Treiber in Windows die _BIX-Methode aus und gibt die aktualisierten Informationen an den Energiemanager zurück.

ACPI Benachrichtigungsereignisse werden entweder über den System Control Interrupt (SCI) im Falle von Plattformen mit eingebettetem Controller oder über Allzweck-E/A (GPIO) im Falle von Plattformen signalisiert, bei denen die Akkusubsystemhardware direkt mit dem Core-Silizium verbunden ist.