启动环境中 Windows 10 移动版的电池充电

对于运行 Windows 10 移动版的设备,OEM 从 SoC 供应商接收的 BSP 包括专为 SoC 供应商的硬件设计的 UEFI 电池充电驱动程序。 OEM 通常会修改此驱动程序,以针对其硬件自定义它。

如果此驱动程序旨在与 Microsoft 提供的 UEFI 电池充电驱动程序配合使用,它将实现 UEFI 电池充电协议,并且 Microsoft UEFI 电池充电应用程序使用此协议与驱动程序通信。

或者,OEM 可以选择实现自己的 UEFI 电池充电应用程序,而非 Microsoft 应用程序。 在这种情况下,UEFI 电池充电驱动程序不得实现 UEFI 电池充电协议。 如果驱动程序实现此协议,Windows 启动管理器会加载 Microsoft UEFI 电池充电应用程序。

本文中的大部分信息适用于使用 Microsoft 提供的 UEFI 电池充电应用程序的设备。 本文中的术语 UEFI 电池充电应用程序是指由 mobilestartup.efi 加载的 UEFI 电池充电库。 有关 mobilestartup.efi 的详细信息,请参阅 Boot 和 UEFI

了解 Microsoft 提供的启动电池充电过程

以下步骤描述了使用 Microsoft 提供的 UEFI 电池充电应用程序的设备在启动流期间的充电过程:

  1. 可以通过连接到电源为设备充电,用户也可以按下电源按钮来为设备充电。

  2. 特定于 SoC 的固件引导加载程序会运行并执行以下操作之一:

    • 如果引导加载程序检测到连接的电源,并且电池位于设备中,设备将开始对电池进行涓流充电,并继续启动进入 UEFI 环境以连接到启动管理器。

    • 如果引导加载程序未检测到电源,并且电池电量太低,无法启动进入 UEFI 环境中,设备将关闭。

    • 如果引导加载程序检测到连接的电源,但设备中没有电池,设备将继续启动进入 UEFI 环境以连接到 UEFI 电池充电应用程序。 当应用程序尝试为电池充电时,UEFI 电池充电驱动程序会向应用程序返回错误,以指示未检测到电池。 该应用程序会通过显示错误 UI 并关闭设备来处理此错误。 有关详细信息,请参阅 Microsoft 提供的 UEFI 电池充电应用程序的体系结构

  3. 启动管理器会运行电池充电应用程序。

    • 如果设备检测到连接的电源,设备将进入电池充电模式。 电池充电应用程序会与 UEFI 电池充电驱动程序和 UEFI USBFn 驱动程序连接,以便为电池充电。 有关详细信息,请参阅 UEFI 电池充电协议

    • 如果设备未检测到连接的电源,并且电池电量太低,无法启动进入主 OS,该设备将关闭。

  4. 根据 OEM 可自定义的注册表值,电池充电应用程序要么在设备达到阈值后继续执行启动过程,要么等待用户按住电源按钮再执行此操作。

下图演示了启动电池充电过程所涉及的组件。 此图有意省略了许多 UEFI 组件以侧重于电池充电过程:有关 UEFI 启动过程的更完整视图,请参阅启动和 UEFI

pre-boot battery charging flow.

Microsoft 提供的电池充电应用程序支持的充电状态

启动电池充电过程到达 UEFI 电池充电应用程序时,设备可以进入多种不同的状态,具体取决于其配置方式。 这些状态称为阈值充电关机充电

阈值充电

下图显示了默认的启动电池充电过程。 在此过程中,设备在电池达到特定阈值后立即启动进入主 OS,称为启动到主 OS 阈值。 有关此阈值和其他定义为电池充电过程的一部分的阈值的详细信息,请参阅电池充电阈值

preboot battery flow for threshold charging.

以下步骤演示了此充电过程的相应 UI 流:

  1. 如果电池没有足够的电量来满足启动到主 OS 阈值,则设备会在以下低电池电量 UI 屏幕之间交替 10 秒。 如果用户在此 10 秒间隔内按下电源按钮,设备将继续在以下低电池电量 UI 屏幕之间交替 10 秒。

    Screenshot that shows a low battery.Screenshot that shows a low battery with a power plug.

  2. 如果设备空闲 10 秒,设备将关闭显示器。

    Screenshot that shows a black screen.

  3. 设备达到启动到主 OS 阈值后,它会显示 OEM 启动徽标并启动进入主 OS。 以下屏幕截图演示了 OEM 启动徽标示例。

    Screenshot that shows a low battery screen O E M logo.

关机充电

Windows 10 支持在设备从用户的角度来看似乎关闭时为电池充电的功能。 此功能称为关机充电。 有关如何启用此功能的信息将在本文档的未来版本中提供。

重要

只有在生成设备映像时,才能配置关机充电。 Windows 10 OS 不提供允许用户启用或禁用关机充电的方法。

如果启用了关机充电,即使在达到启动到主 OS 阈值后,设备仍受电池充电应用程序的控制。 设备会一直保持此状态,直到用户按住电源按钮 2 秒或更长时间才能将设备启动进入主 OS。

即使启用了关机充电,用户也不会始终经历关机充电路径。 如果设备重新启动(例如,由于更新或系统语言设置已更改),当设备打开并连接到电源时,设备将跳过关机充电模式,并在达到预启动充电阈值后直接启动进入主 OS。 如果用户在设备开机并连接到电源的情况下按住电源按钮重新启动设备,也会跳过关机充电模式。

下图显示了启用关机充电时的启动电池充电过程。

preboot battery flow for power-off charging.

以下步骤演示了启用关机充电时的相应 UI 流:

  1. 如果电池没有足够的电量来满足启动到主 OS 阈值,则设备会在以下红色的低电池电量 UI 屏幕之间交替 10 秒。 如果用户在此 10 秒间隔内按下电源按钮,设备将继续在以下低电池电量 UI 屏幕之间交替 10 秒。

    Screenshot that shows a white and red low battery.Screenshot that shows a white and red low battery with a power plug.

  2. 如果设备空闲 10 秒,设备将关闭显示器。

    low battery screen black.

  3. 设备达到启动到主 OS 阈值后,它会在以下白色的低电池电量 UI 屏幕之间交替 10 秒,而不是直接启动进入主 OS。 如果用户在此 10 秒间隔内按下电源按钮一小段时间(小于 2 秒)的,设备将继续在以下低电池电量 UI 屏幕之间交替 10 秒。

    Screenshot that shows a white and black low battery UI.Screenshot that shows a white and black low battery with a power plug UI.

  4. 如果设备空闲 10 秒,设备将关闭显示器。

    low battery screen black.

  5. 如果用户按下电源按钮 2 秒或更长时间,设备将显示 OEM 启动徽标并启动进入主 OS。 以下屏幕截图演示了 OEM 启动徽标示例。

    low battery screen oem logo.

电池充电阈值

Microsoft 定义了多个电池充电阈值,以确保正确的电池充电用户体验。 OEM 必须实现其中一些阈值,以确保正确的电池充电行为。 下图说明了每个充电阈值如何组合在一起(此图未绘制为可缩放)。

preboot battery charging thresholds.

关系图左侧显示了会影响设备充电时的用户体验的所有阈值,图的右侧显示了会影响设备放电时的用户体验的所有阈值。 下表说明了每个阈值。

阈值 说明 配置指南
固件充电阈值 这是设备从基于硬件的充电启动到基于固件的充电的阈值。 当设备电池电量太低而无法启动进入固件时,有必要将设备置于硬件充电阶段,以便为电池充电并提供保护。 OEM 必须将此阈值设置为低于启动到 UEFI 阈值。 有关如何修改此阈值的详细信息,请联系 SoC 供应商。
启动到 UEFI 阈值 这是设备从基于固件的充电启动到基于 UEFI 的充电的阈值(由 Microsoft 提供)。 当设备电池电量太低而无法启动进入固件时,有必要将设备置于固件充电阶段,以便为电池充电。 OEM 必须将此阈值设置为高于固件充电阈值,但低于启动到主 OS 阈值。 有关如何修改此阈值的详细信息,请联系 SoC 供应商。
启动到主 OS 阈值 这是设备在阈值充电模式下从基于 UEFI 的充电启动进入主 OS 的阈值。 当设备电池电量太低而无法启动进入主 OS 时,有必要将设备置于 UEFI 充电阶段,以便为电池充电。 OEM 必须将此阈值设置为高于启动到 UEFI 阈值主 OS 关闭阈值。 此阈值以电池的满电容量百分比进行定义。 默认情况下,此值设置为 7%。 有关如何设置此阈值的信息将在本文档的未来版本中提供。
启动以更新 OS/设备重置阈值 这是设备从基于 UEFI 的充电启动到更新 OS 或设备重置模式的阈值。 当电池电量过低而无法维持更新或设备重置过程时,有必要将设备置于 UEFI 充电阶段来为电池充电。 此阈值设置为启动到主 OS 阈值 + 8%。
电池已满 这是电池占其最大容量的 100% 的阈值。 在此阈值下,系统任务栏中的电池图标会显示电池满电图标。 OEM 应校准其电池配置文件,以便设备始终能够达到最大电池容量。
节电模式阈值 如果用户设置了节电模式,则会自动启用节电模式阈值。 此阈值设置为电池最大容量的 20%,OEM 无法更改此阈值。
主 OS 警告阈值 这是设备向用户显示电池电量不足的通知的阈值。 此阈值设置为电池最大容量的 10%,OEM 无法更改此阈值。
主 OS 关闭阈值 这是软件安全关闭设备的阈值。 必须防止系统内存损坏。 OEM 必须将此阈值设置为低于启动到主 OS 阈值,并低于主 OS 警告阈值。 此外,此阈值必须大于或等于 2%。 此阈值由 BATTERY_INFORMATION 结构的 DefaultAlert1 成员定义。 有关如何修改此阈值的详细信息,请联系 SoC 供应商。
硬件关闭阈值 这是硬件强制设备关闭的阈值。 必须保护电池免受过度放电的影响。 此阈值由 SoC 供应商设置,不应由 OEM 更改。

Microsoft 提供的 UEFI 电池充电应用程序的体系结构

启动和 UEFI