体系结构:Windows 系统的 USB 类型 C 设计
介绍 USB 类型 C 系统的典型硬件设计以及支持硬件组件的 Microsoft 提供的驱动程序。 本文适用于使用 USB 类型 C 连接器开发系统的 OEM。
- 使用 USB Type-C 的 USB 双角色功能
- 使用 USB Type-C 电流级别和供电 2.0 加快充电速度
- 使用备用模式和有线停靠体验 Display-Out 功能。
用于支持 USB 类型 C 组件的驱动程序
在上图中,
USB 设备端驱动程序
USB 设备端驱动程序为功能/设备/外设提供服务。 USB 功能控制器类扩展支持 MTP(媒体传输协议),并使用 BC 1.2 充电器进行充电。 Microsoft 为 Synopsys USB 3.0 和 ChipIdea USB 2.0 控制器提供随机客户端驱动程序。 可以通过使用 USB 功能控制器客户端驱动程序编程接口,为功能控制器编写自定义客户端驱动程序。 有关详细信息,请参阅为 USB 功能控制器开发 Windows 驱动程序。
SoC 供应商可能会为你提供 USB 功能下限筛选器驱动程序,用于旧版专有充电器检测。 如果功能控制器是 Synopsys USB 3.0 或 ChipIdea USB 2.0 控制器,则可以实现自己的筛选器驱动程序
USB 主机端驱动程序
USB 主机端驱动程序是适用于与 EHCI 或 XHCI 兼容的 USB 主机控制器的一组驱动程序。 如果角色切换驱动程序枚举主机角色,则会加载驱动程序。 如果主机控制器不符合规范,则可以使用 USB 主机控制器扩展 (UCX) 编程接口来写入自定义驱动程序。 有关信息,请参阅为 USB 主机控制器开发 Windows 驱动程序。
注意
并非所有 USB 设备类在 Windows 10 移动版上都受支持。
USB 角色切换驱动程序 (URS)
可以将系统设计为双角色 USB 端口需要 Windows 将其配置为主机或功能模式。 这些设计需要使用 USB 角色开关 (URS) 驱动程序堆栈。
URS 驱动程序根据平台中的硬件事件管理连接器、主机或功能的当前角色,以及相应设备端或主机端驱动程序的加载和卸载。 Microsoft 为 Synopsys USB 3.0 和 ChipIdea USB 2.0 控制器提供随机客户端驱动程序。 可以使用 USB 双角色控制器驱动程序编程接口编写角色切换客户端驱动程序。 若要激活角色切换驱动程序,必须对 ACPI 表进行更改。 有关详细信息,请参阅 USB 双角色驱动程序堆栈体系结构。
在具有 USB micro-AB 连接器的系统上,根据连接器中的 ID 引脚做出此决定。 客户端驱动程序使用分配给它的中断资源执行 ID 引脚检测。
在具有 USB 类型 C 连接器的系统上,根据 CC 引脚做出决策。 连接器的客户端驱动程序执行 CC 检测,并将该信息转发到角色切换驱动程序。
USB 连接器管理器 (UCM)
这组驱动程序管理 USB Type-C 连接器的所有方面。 如果系统通过 ACPI 实现符合 UCSI 标准的嵌入式控制器,请使用 Microsoft 提供的 UCSI 驱动程序。 否则,为非 ACPI 传输 编写 UCSI 客户端驱动程序 。
如果硬件不符合 UCSI,则应将作为客户端的 USB 类型 C 连接器驱动程序写入 UCM 类扩展。 它们共同管理 USB Type-C 连接器和连接器驱动程序的预期行为。
如果要编写驱动程序,USB 连接器管理器类扩展遵循 WDF 类扩展-客户端驱动程序模型。 客户端驱动程序与硬件和类扩展通信,以处理 CC 检测、PD 消息传送、复用和 VBus/VConn 控制等任务,并为电源传输和备用模式选择策略。 类扩展将客户端驱动程序报告的信息传达给操作系统。 例如,CC 检测结果用于配置角色切换驱动程序;USB 类型 C/PD 电源信息用于确定系统应充电的级别。 客户端驱动程序管理 USB 类型 C 和 PD 状态机。 客户端驱动程序可以将某些任务委托给其他驱动程序,例如,Mux 可能由另一个驱动程序控制。 若要编写客户端驱动程序,请使用 USB Type-C 连接器驱动程序编程接口。
USB 类型 C 端口控制器
Type-C 端口控制器接口类扩展 (UcmTcpciCx.sys) 是 Microsoft 提供的 USB 连接器管理器的扩展,它允许 OS 与不实现 PD 状态机的连接器 (TCPM) 一样运行。 UcmTcpciCx 客户端驱动程序允许软件 TCPM 控制硬件并实时获取其状态。
有关编写客户端驱动程序的信息,请参阅 编写 USB 类型 C 端口控制器驱动程序。
收取仲裁驱动因素
此驱动程序由 Microsoft 提供,用于Windows 10 移动版。 驱动程序充当多个充电源的仲裁程序。 USB 连接器管理器将 USB Type-C 和 PD 充电源信息报告给 CAD,CAD 会从该信息和由 USB 设备端驱动程序执行的 BC1.2 充电器检测中进行选择( (如果适用) )。 然后,CAD 报告最适合用于电池子系统的充电源。
电池驱动程序
类驱动程序定义系统中电池的整体功能,并与电源管理器进行交互。 微型类驱动程序处理特定于设备的功能,例如添加和移除电池,以及跟踪其容量和充电。 微类驱动程序导出类驱动程序调用的例程,以获取有关其控制的设备的信息。