ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 3 章

    • 总览
    • 3.1. 系统电源管理
    • 3.2. 电源状态
    • 3.3. 设备电源管理
    • 3.4. 控制设备电源
    • 3.5. 处理器电源管理
    • 3.6. 设备和处理器性能状态
    • 3.7. 配置和“即插即用”
    • 3.8. 系统事件
    • 3.9. 电池管理
    • 3.10. 热管理概念
    • 3.11. 灵活的平台体系结构支持

3.9. 电池管理

电池管理策略从 APM BIOS 转移到兼容 ACPI 的 OS。电池必须符合其相关接口的要求,如本文或其他适用标准中所述。OS 可以选择改变电池的行为,例如,通过调整低电量或电池警告跳变点。当存在多个电池时,不要求电池子系统根据各个独立电池的数据合成一个“复合电池”。在电池子系统不根据独立电池的数据合成“复合电池”的情况下,OS 必须提供这种合成。

一个兼容 ACPI 的电池设备需要智能电池子系统接口或控制方法电池接口之一。

  • 智能电池由 OS 通过嵌入式控制器(EC)直接控制。更多信息请参见第 10.1 节和第 12.9 节。

  • 控制方法电池完全通过 AML 代码控制方法访问,这允许 OEM 选择 ACPI 支持的任何类型的电池和任何种类的通信接口。更多信息请参见第 10.2 节。

本节描述所有电池类型共有的概念。

3.9.1. 电池通信

智能电池和控制方法电池接口都提供一种机制,使 OS 能够从平台的电池系统查询信息。这些信息可能包括满充容量、当前电池容量、放电速率以及电池状况的其他度量。所有类型的电池系统都必须在发生变化时向 OS 提供通知,例如插入或移除电池,或者电池开始或停止放电。智能电池和某些控制方法电池还能够基于容量变化发出通知。智能电池还提供额外的信息,例如估计运行时间、有关电池能够提供多少功率的信息,以及在预定消耗速率下运行时间将是多少。

3.9.2. 电池容量

每个电池都必须报告其设计容量、最新的满充容量以及当前剩余容量。剩余容量会在使用过程中减少,并且还会随环境而变化。因此,OS 必须使用最新的满充容量来计算电池百分比。此外,电池系统还必须报告警告电量级别和低电量级别,在达到这些级别时必须通知用户并将系统切换到睡眠状态。有关这五个值之间的关系,请参见图 3.3。

系统可以使用速率和容量 [mA/mAh] 或功率和能量 [mW/mWh] 作为电池信息计算和报告的单位。在同一系统中不允许混用 [mA] 和 [mW]。

../_images/Reporting_battery_capacity.png

图 3.3 电池容量报告

3.9.3. 电池电量计

在最基本的层面上,OS 使用以下公式计算剩余电池百分比 [%]:

../_images/Remaining_battery_percentage.png

图 3.4 剩余电池百分比的公式

控制方法电池还报告当前放电速率 [mA 或 mW],用于计算剩余电池续航时间。在最基本的层面上,剩余电池续航时间通过以下公式计算:

../_images/Remaining_battery_life.png

图 3.5 当前放电速率的公式

智能电池也报告当前放电速率,但由于其可以直接报告估计运行时间,因此应优先使用该功能,因为它能够更准确地考虑电池特有的变化。

3.9.4. 低电量级别

系统具有由 OEM 设计的初始警告容量、初始低电量容量以及临界电池级别或标志。警告和低电量的值表示系统执行某些操作所需的能量或电池容量。临界电池级别或标志用于指示系统中的电池何时已完全耗尽。OSPM 可以基于 OEM 设计的级别确定独立的警告和低电量电池容量值,但不能将这些值设置得低于 OEM 设计值,如下图所示。

../_images/Low_battery_and_warning.png

图 3.6 低电量和警告

系统中的每个控制方法电池都报告 OEM 设计的初始警告容量和 OEM 设计的初始低电量容量,同时还报告一个标志,用于指示该电池何时达到或低于其临界能量级别。与控制方法电池不同,智能电池不一定特定于某一种机器类型,因此 OEM 设计的警告、低电量和临界级别是在 智能电池表 (SBST) 中单独报告的。

下表描述了 OEM 应如何设置这些值,以及 OS 应如何解释这些值。

表 3.1 低电量级别

级别描述
警告当电池中的总可用能量 (mWh) 或容量 (mAh) 低于此级别时,OS 将通过用户界面通知用户。该值应允许在遇到“低电量”级别之前仍有几分钟的运行时间,以便用户有时间结束任何重要工作、更换电池,或找到电源插座为系统接通电源。
低电量该值是系统转换到任一受支持睡眠状态所需能量或电池容量的估计值。当 OS 检测到总可用电池容量小于该值时,它将把系统转换到用户定义的系统状态 (S1-S4)。在大多数情况下,这应为 S4,这样如果电池最终完全耗尽,系统状态也不会丢失。OS 的设计应考虑到,多电池系统的用户可能会移除一个或多个电池,以尝试更换或充电。这可能导致剩余容量降到“低电量”级别以下,从而没有足够的电池容量使 OS 安全地将系统转换到睡眠状态。因此,如果电池是同时放电的,则可能需要在两个电池都达到该级别时就启动该操作。
临界临界电池状态表示所有可用电池都已放电,并且似乎已无法继续为系统运行提供电力。当发生这种情况时,OS 必须尝试执行如下所述的紧急关机。对于智能电池系统,这通常会在所有电池都达到 0 容量时发生,但 OEM 可以选择在智能电池表中设置一个更大的值,以提供额外的安全裕量。对于具有多个电池的控制方法电池系统,该标志是按电池报告的。如果系统中的任何电池处于临界低电量状态并且仍在为系统供电(换句话说,该电池正在放电),则认为系统处于临界能量状态。要求 _BST 控制方法仅在所有电池都已达到临界状态时,才对正在放电的电池返回临界标志;否则,ACPI 系统固件必须切换到非临界电池。

3.9.4.1. 紧急关机

运行直到系统中的所有电池都处于临界状态,这种情况通常不应发生,因为当电池变为低电量时,系统就应被置于睡眠状态。如果确实发生了这种情况,OS 应采取措施尽量减少对系统完整性的任何损害。紧急关机过程应在假设电力可能随时丢失的基础上进行设计,以尽量减小不良影响。例如,如果硬盘已经停止旋转,OS 不应尝试让其重新旋转以写入任何数据,因为让磁盘重新旋转并尝试写入数据,如果写入未完成,则可能会损坏文件。即使磁盘仍在旋转,在关机前是否尝试保存哪怕是系统设置数据,也必须加以评估,因为与写操作进行到一半时断电而可能损坏设置相比,恢复到先前设置的危害可能更小。

3.9.5. 电池校准

许多电池报告的容量通常会随着时间推移而衰减,从而为用户提供更短的运行时间。然而,对于许多电池系统,如果偶尔运行一次校准或调理循环,则可以使旧电池提供更多可用运行时间。用户通常能够通过进入平台启动固件设置菜单,或运行 OEM 提供的自定义驱动程序和校准应用程序来执行校准循环。校准过程通常需要数小时,在此期间笔记本电脑必须接通电源。理想情况下,控制此过程的应用程序应尽可能提供良好的用户体验,例如允许用户安排系统在不使用时唤醒并执行校准。由于校准的用户体验不需要因系统而异,因此由 OSPM 提供此服务是合理的。这样,OSPM 就可以为最终用户提供统一的体验,并消除 OEM 开发自定义电池校准软件的需要。

为了使 OSPM 能够执行通用电池校准,需要提供用于控制两项基本校准功能的通用接口。这些功能在 电源和电能表设备 和 _BST(电池状态) 中定义。首先,需要有一种方法来检测何时进行电池校准会有益。其次,需要有一种方法来执行该校准循环。这两项功能都可以由专用硬件(例如电池控制器芯片)、嵌入式控制器中的固件、平台固件或 OSPM 来实现。从这里开始,任何通过 AML 实现的功能,无论 AML 代码是否依赖硬件,都将被称为“AML 控制”,因为无论 AML 是否将控制权传递给硬件,其接口都是相同的。

何时需要校准的检测可以由硬件或 AML 代码实现,并通过 _BMD 方法报告。或者,_BMD 方法也可以仅报告在应执行校准之前的循环次数,并让 OS 尝试对这些循环计数。由硬件或平台固件实现的计数器通常会更准确,因为在 OS 未运行时电池也可能被使用,但在某些情况下,系统设计者可能会选择简化硬件或固件实现。

当适合进行校准并且用户已安排执行校准时,校准循环可以由 AML 控制或由 OSPM 控制。OSPM 只能实现非常简单的算法,因为它不了解电池系统的具体细节。它仅会让电池放电直到其停止放电,然后再充电直到其停止充电。在无法通过 _BMC 控制交流电适配器的情况下,它将提示用户拔下交流电适配器,并在系统关闭后重新连接。如果校准循环由 AML 控制,OS 将通过调用 _BMC 来启动校准循环。该方法将控制权交给硬件,或者自行控制校准循环。如果校准循环的控制完全在 AML 代码中实现,则平台运行时固件可以避免持续运行 AML 代码,方法是让对 _BMC 的初始调用启动该循环、设置一些状态标志,然后退出。对循环后续部分的控制可以通过将检查这些状态标志的代码放入电池事件处理程序(_Qxx、_Lxx 或 _Exx)中来实现。

该接口控制方法的详细信息在 控制方法电池 中定义。

3.9.6. 电池充电限制

如果称平台支持电池充电限制功能,则它必须:

  1. 始终针对所有已安装电池向 OSPM 通告真实充电电量

  2. 在电池充电限制处于活动状态时,限制电池达到其满充容量

  3. 在电池充电限制处于活动状态时,设置 _BST.Battery State.Bit[3]

  4. 确保 _BST.Battery State(Bit 0 和 Bit 1)反映电池真实的充电/放电状态

OSPM 必须识别以下设置:

表 3.2 电池充电限制状态

_BST.Battery State.Bit[3]_BST.Battery State.Bit[0]_BST.Battery State.Bit[1]解释
清除N/AN/A电池充电限制未启用
置位清除清除电池充电限制已启用,且电池已达到稳态,不会被充电或放电
置位清除置位电池充电限制已启用,且电池尚未达到稳态
置位置位清除电池充电限制已启用,且电池尚未达到稳态
Prev
3.8. 系统事件
Next
3.10. 热管理概念