Firmware-Implementierung für das ACPI-Akku- und Energiesubsystems

Von Windows-Plattformen wird erwartet, dass sie ihre Akkugeräte und Netzteile in der Firmware über ACPI unter Verwendung von standardisierten Steuerungsmethodenschnittstellen verfügbar machen, wie in der ACPI-Spezifikation beschrieben.

Jede mobile Windows-Plattform muss über ein Stromversorgungsgerät und mindestens einen Akku verfügen. Informationen aus diesen Subsystemen werden verwendet, um Benutzern den Energiestatus zu vermitteln. Dieser Status enthält z. B. Informationen darüber, ob die Plattform im Netz- oder Akkubetrieb ausgeführt wird, sowie Informationen zum Ladestand jedes Akkus und den Akkuladestatus. Windows-Energieverwaltung aggregiert diese Informationen und macht für den Windows-Akkustand und andere Energieverwaltungskomponenten verfügbar.

In diesem Thema wird beschrieben, wie die Plattform der Windows-Energieverwaltung Informationen über das Energiesubsystem zur Verfügung stellen sollte. Weitere Informationen finden Sie unter Kapitel 10, Power Source Devices, in der ACPI-Spezifikation.

Hinweis

Einige der in diesem Artikel beschriebenen Informationen sind spezifisch für Windows und sind nicht in der aktuellen ACPI-Spezifikation aufgeführt.

ACPI-Stromversorgungsobjekt

Die ACPI-Firmware muss pro Abschnitt 10.3 der ACPI-Spezifikation ein einzelnes ACPI-Stromversorgungsgerät bereitstellen und implementieren. Dieses Objekt muss sich selbst mit der Hardware-ID (_HID) „ACPI0003“ melden.

Hinweis Bei Systemen mit mehreren Stromquellen müssen alle physischen Stromquellen über ein einzelnes Stromversorgungsobjekt in ACPI im Multiplexmodus dargestellt werden. Dieses Objekt muss den zusammengesetzten Status der Stromeingänge für das System darstellen. Clientsysteme dürfen nicht mehrere Geräteobjekte zur Stromversorgung bereitstellen. (Zusätzliche Stromversorgungsobjekte können auf Serversystemen vorhanden sein, die mehrere Stromversorgungen aufweisen.)

Dieses Objekt muss auch die Power Source-Methode (_PSR) implementieren. Diese Methode gibt den Status der Stromquelle zurück und gibt an, ob die Stromquelle derzeit online (Netzbetrieb) oder offline (Akkubetrieb) ist. Die _PSR-Methode muss nur online (Netzbetrieb) melden, wenn das System mit dem Stromnetz verbunden ist. Wenn sich der Status von _PSR ändert, muss die Plattform eine Unterbrechung und einen Notify(0x80)-Befehl für das Gerät im ACPI-Namespace generieren. Dies muss sofort erfolgen, nachdem die Plattform die physische Zustandsänderung erkannt hat.

ACPI-Akkusteuerungsmethoden

Die ACPI-Firmware muss ein ACPI-Steuerungsmethodenobjekt für jeden Akku im System gemäß Abschnitt 10.2 der ACPI-Spezifikation bereitstellen und implementieren. Jedes Akkugerät muss alle der folgenden Schritte ausführen:

  • Sich selbst mit der Hardware-ID (_HID) „PNP0C0A“ identifizieren.
  • Die Status-Methode (_STA) implementieren, um anzugeben, ob das Gerät aktiviert, deaktiviert oder nicht vorhanden ist.
  • Statische Informationen mithilfe der Battery Information Extended-Methode (_BIX) berichten.
  • Den Akkustatus mithilfe der Battery Status-Steuerungsmethode (_BST) melden.
  • Aufladeereignisse mit dem Battery Trip Point-Mechanismus (_BTP) unterstützen.

Optional kann ein Akkugerät die Slot Unit Number (_SUN) implementieren oder die Akkureihenfolge für die Anzeige in der Benutzeroberfläche (UI) angeben.

Im Folgenden werden die Einzelheiten dieser Methoden und ihre Windows-spezifischen Anforderungen erläutert.

ACPI-Implementierung von statischen Informationen über Akkus

Die ACPI-Firmware muss die _BIX-Methode für jeden Akku implementieren, um statische Informationen über den Akku bereitzustellen, einschließlich vorgesehener Akkukapazität, Zyklusanzahl und Seriennummer. Die folgende Tabelle erweitert die Definitionen der Felder, die in Abschnitt 10.2.2.2 der ACPI-Spezifikation beschrieben sind, und zählt die Windows-spezifischen Anforderungen für diese Informationen auf.

Themen BESCHREIBUNG Windows-spezifische Anforderungen
Revision Gibt _BIX-Revision an. Muss auf 0x0 festgelegt werden.
Power unit Bestimmt, ob es sich bei den von der Hardware gemeldeten Einheiten um Milliampere und Milliamperestunden oder Milliwatt und Milliwattstunden handelt. Muss auf 0x0 festgelegt werden, um anzugeben, dass es sich bei den Einheiten um Milliwatt und Milliwattstunden handelt. Dieser Wert darf zur Laufzeit nicht geändert werden.
Design capacity Gibt die ursprüngliche Nennkapazität des Akkus in Milliwattstunden an. Muss auf einen genauen Wert festgelegt werden und kann nicht auf 0x0 oder 0xFFFFFFFF festgelegt werden. Dieser Wert darf zur Laufzeit nicht geändert werden.
Last full battery charge Gibt die aktuelle gesamte Ladekapazität des Akkus an. Muss auf einen genauen Wert festgelegt werden und kann nicht auf 0x0 oder 0xFFFFFFFF festgelegt werden. Dieser Wert muss bei jeder Erhöhung der Zyklusanzahl aktualisiert werden. Dieser Wert muss beim Entladen des Akkus konstant bleiben. Es wird empfohlen, diesen Wert nur zu aktualisieren, wenn der Akku voll aufgeladen worden ist.
Akkutechnologie Gibt an, ob der Akku wiederaufladbar ist oder nur einmal verwendet werden kann. Muss auf 0x1 festgelegt werden, um anzugeben, dass der Akku wiedaufladbar ist.
Design voltage Gibt die Nennspannung des Akkus an. Muss auf die Nennspannung des Akku im Neuzustand in Millivolt eingestellt werden. Darf nicht auf 0x0 oder 0xFFFFFFFF festgelegt werden. Dieser Wert darf zur Laufzeit nicht geändert werden.
Design capacity of Warning Gibt eine vom OEM bereitgestellte Warnstufe für niedrigen Akkuladestand an. Windows ignoriert diesen Wert.
Design capacity of Low Gibt den kritischen Akkustand an, bei dem Windows sofort heruntergefahren oder in den Ruhezustand versetzt muss, bevor das System ausgeschaltet wird. Muss auf einen Wert zwischen 0 und 5 Prozent der Akkunennkapazität festgelegt werden.
Battery capacity granularity 1 Gibt den Mindestbetrag einer Änderung der Restladung an, der von der Hardware zwischen der „Akkukapazität Warnung“ und der „Akkukapazität niedrig“ erkannt werden kann. Muss auf einen Wert festgelegt werden, der nicht größer als 1 Prozent der Akkunennkapazität ist.
Battery capacity granularity 2 Gibt die Mindestmenge einer Änderung der Restladung an, der von der Hardware zwischen Akkukapazität „Last Full Charge Capacity“ und „Design Capacity of Warning“ erkannt werden kann. Muss auf einen Wert festgelegt werden, der nicht größer als 75 Milliwatt ist (ca. 0,25 Prozent einer 25 Wh-Batterie). (1/400) der Akkunennkapazität.
Cycle count Gibt die Akkuzyklusanzahl an. Muss auf einen Wert größer als 0x0 gesetzt werden. Darf nicht auf 0xFFFFFFFF festgelegt werden.
Measurement accuracy Gibt die Genauigkeit der Akkukapazitätsmessung an. Muss auf 95.000 oder höher festgelegt werden, womit eine Genauigkeit von 95 Prozent oder höher angegeben wird.
Max sampling time Die maximale unterstützte Samplingzeit zwischen zwei aufeinander folgenden _BST-Bewertungen, die einen Unterschied in der Restkapazität anzeigen. Keine bestimmte Anforderung.
Min sampling time Die minimale unterstützte Samplingzeit zwischen zwei aufeinander folgenden _BST-Bewertungen, die einen Unterschied in der Restkapazität anzeigen. Keine bestimmte Anforderung.
Max averaging interval Das maximale Durchschnittsintervall in Millisekunden, das von der Akkuladestandsanzeige unterstützt wird. Keine bestimmte Anforderung.
Min averaging interval Das minimale Durchschnittsintervall in Millisekunden, das von der Akkuladestandsanzeige unterstützt wird. Keine bestimmte Anforderung.
Model number Vom OEM bereitgestellte Akkumodellnummer. Darf nicht NULL sein.
Seriennummer Vom OEM bereitgestellte Akkuseriennummer. Darf nicht NULL sein.
Battery type Vom OEM bereitgestellte Akkutypinformationen. Keine bestimmte Anforderung.
OEM information Vom OEM bereitgestellte Informationen. Keine bestimmte Anforderung.

Zusätzlich zu diesen Anforderungen muss die Plattformfirmware eine Unterbrechung und einen Notify(0x81)-Befehl für das Akkugerät im ACPI-Namespace generieren, wenn sich die Akkuzustandsdaten in _ BIX ändern. Hierzu gehören die Kapazität der letzten vollständigen Aufladung, die Nennkapazität und die Zyklusanzahl. Dies muss sofort ausgeführt werden, nachdem die Statusänderung von der Plattform erkannt wurde.

Die Kapazität der letzten vollständigen Aufladung stellt die geschätzte Energiemenge dar, über der Akku erwartungsgemäß bei der letzten vollständigen Aufladung verfügte. Windows geht davon aus, dass dieser Wert nur aktualisiert wird, nachdem der Akku aufgeladen wurde. Daher darf sich der Wert der Kapazität der letzten vollständigen Aufladung nicht ändern, während sich der Akku entlädt. Es wird empfohlen, diesen Wert nur dann zu aktualisieren, wenn der Akku voll aufgeladen worden ist.

ACPI-Implementierung von Akku-Echtzeitstatusinformationen

Die ACPI-Firmware muss die _BST-Methode für jeden Akku implementieren, um Echtzeitstatusinformationen über den Akku bereitzustellen, einschließlich Restkapazität und aktueller Entladungsrate. Die folgende Tabelle erweitert die Definitionen der Felder, die in Abschnitt 10.2.2.6 der ACPI-Spezifikation beschrieben sind, und zählt die Windows-spezifischen Anforderungen für diese Informationen auf.

Themen BESCHREIBUNG Windows-spezifische Anforderungen
Battery state Gibt an, ob der Akku derzeit aufgeladen wird, sich entlädt oder sich in einem kritischen Zustand befindet. Der Akkuzustand muss das Aufladen nur dann melden, wenn der Akku gerade aufgeladen wird. Ebenso muss der Akkuzustand das Entladen nur melden, wenn der Akku gerade entladen wird. Ein Akku, der weder aufgeladen noch entladen wird, muss keinen dieser Vorgänge melden.
Battery present rate Stellt die aktuelle Entladungsrate des Akkus in Milliwatt bereit. Muss ein Wert größer als 0x0 und kleiner als 0xFFFFFFFF sein. Muss eine Genauigkeit aufweisen, die innerhalb des Werts der Messgenauigkeit in _BIX liegt.
Battery remaining capacity Stellt die verbleibende Akkukapazität in Milliwattstunden bereit. Muss größer als 0x0 und kleiner als 0xFFFFFFFF sein. Muss eine Genauigkeit aufweisen, die innerhalb des Werts der Messgenauigkeit in _BIX liegt.
Battery present voltage Gibt die aktuelle Spannung an den Polen des Akkus an. Muss zwischen einem Wert von 0x0 und 0xFFFFFFFF Millivolt liegen.

Wenn sich Daten in _BST ändern, muss die Plattform eine Unterbrechung und einen Notify(0x80)-Befehl für das Akkugerät im ACPI-Namespace generieren. Dies muss sofort erfolgen, nachdem die Plattform die physische Zustandsänderung erkannt hat. Dazu gehören alle Änderungen des Aufladungsbits (Bit0) oder Entladungsbits (Bit1) im Feld „Akkustatus“.

Darüber hinaus muss die Plattform die _BTP-Battery Trip Point-Methode implementieren. _BTP ermöglicht es Windows, einen Schwellenwert für die Restkapazität anzugeben, bei dessen Überschreitung die Plattform eine Unterbrechung und einen Notify(0x80)-Befehl für das Akkugerät im ACPI-Namespace generiert. Die _BTP-Methode verhindert, dass Windows den Akku regelmäßig abfragen muss.

Windows-Betriebssystemspezifische Akkusteuerungsmethoden

Die ACPI-Spezifikation sieht geräte- und betriebssystemspezifische Steuerungsmethoden durch die_DSM-Steuerungsmethode (Device-Specific Method) vor. _DSM wird in Abschnitt 9.14.1 der ACPI-Spezifikation beschrieben.

Windows 8 unterstützt die folgenden _DSM Methoden als Steuerungsmethode für Akkugeräte.

Wärmeladungsrichtung

Themen Wert Beschreibung
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e GUID, die Erweiterungen für Windows Control Method Battery Driver Support angibt.
Revisions-ID 0 Erste Überarbeitung dieser Funktion.
Funktionsindex 0x1 Festlegen der Akkuladedrosselung.
Argumente Wärmegrenzwert Ganzzahlwert von 0 bis 100, der den thermischen Ladegrenzwert angibt. Ein Wert von 40 Prozent gibt an, dass der Akku bei 40 Prozent der maximalen Rate aufgeladen werden soll. Ein Wert von 0 Prozent gibt an, dass die Akkuaufladung beendet werden soll, bis diese Methode erneut aufgerufen wird.
Rückgabewert Keine

Vom Benutzer zu wartender Akku

Themen Wert Beschreibung
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e GUID, die Erweiterungen für Windows Control Method Battery Driver Support angibt.
Revisions-ID 0 Erste Überarbeitung dieser Funktion.
Funktionsindex 0x2 Gibt an, dass dieses _DSM für OSPM bestimmt ist, ob das Batteriegerät vom Benutzer gewartet werden kann oder nicht.
Argumente Keine Es sind keine Argumente erforderlich.
Rückgabewert Paket mit einer einzelnen Ganzzahl. 0x0, wenn die Batterie nicht vom Benutzer gewartet werden kann und nicht vom Endbenutzer ersetzt werden kann oder vom Endbenutzer mit zusätzlichen Tools ersetzt werden kann. 0x1, wenn die Batterie vom Endbenutzer ohne zusätzliches Werkzeug ausgetauscht werden kann.

Lade-Watchdog erforderlich

Themen Wert Beschreibung
UUID 4c2067e3-887d-475c-9720-4af1d3ed602e GUID, die Erweiterungen für Windows Control Method Battery Driver Support angibt.
Revisions-ID 0 Erste Überarbeitung dieser Funktion.
Funktionsindex 0x3 Gibt an, dass dieses _DSM für das OSPM bestimmt ist, ob die Batterie des Steuerverfahrens ein regelmäßiges Zurücksetzen des Watchdogs erfordert, um die Hochstromladung aufrechtzuerhalten, und den Zeitraum, in dem der Watchdog zurückgesetzt werden muss.
Argumente Keine Es sind keine Argumente erforderlich.
Rückgabewert Paket mit einer einzelnen Ganzzahl. 0x0, wenn die Batterie keine Watchdog-Wartung erfordert. Werte einschließlich 0x0000001e und 0x12C geben das maximale Polungsintervall in Sekunden an. Alle anderen Werte werden ignoriert und als 0x0 behandelt und Watchdog muss nicht zurückgesetzt werden. Wenn ein gültiges Watchdog-Intervall angegeben wird, führt Windows die _BST-Methode in einem Intervall, das nicht länger als der Watchdog-Wert ist, der angegeben wird, wenn der Wert von „BatteryState“ in der _BST-Methode auf Aufladen festgelegt ist. Die dynamische Aktualisierung dieses Werts wird nicht unterstützt.

Windows bietet eine detaillierte Ansicht der Systemakkus in der Desktop-Taskleiste-App. Jeder Akku wird zusammen mit seinem aktuellen Status in der Benutzeroberfläche aufgeführt. Das folgende Beispiel zeigt zwei Akkus.

Die Reihenfolge, in der Windows Akkus anzeigt, kann von der Firmware angegeben werden. Dies erfolgt mithilfe der _SUN-Methode (Slot User Number) wie in Abschnitt 6.1.11 der ACPI-Spezifikation definiert. Die _SUN-Methode gibt eine ganze Zahl zurück, die die eindeutige ID des Akkus darstellt. Windows listet die einzelnen Akkuobjekte in aufsteigender Reihenfolge basierend auf dem Wert der _SUN-Methode auf.

Wenn ein Akkuobjekt eine _SUN-Methode enthält, müssen alle anderen Akkuobjekte ebenfalls eine _SUN-Methode bereitstellen. Windows unterstützt nicht den Fall, dass einige Akkus eine _SUN-Methode haben und andere nicht. Wenn keine _SUN Objekte bereitgestellt werden, sortiert Windows die Akkus basierend auf ihrem vollständigen Geräteinstanzpfad. Diese Konfiguration wird unterstützt, jedoch nicht empfohlen.