0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UCSI框架是由哪些部分组成的?UCSI实现必须经过HLK测试吗?

冬至子 来源:吃面小哥 作者:吃面小哥 2023-08-08 15:21 次阅读

UCSI 全称 USB Type-C Connector System Software Interface。

它定义了OS(特指Windows系统)针对 PC 上 Type-C 口的管理规范,主要是寄存器和数据包结构,以及通讯规则的描述。

事实上,OS 作为 OPM 管理 Type-C 接口,主要是和 Type-C 接口管理芯片 PD 通讯完成的。

01

UCSI 框架

UCSI 设计的初衷就是方便 OS 端管理 Type-C 接口。那么从上至下,可以分为 OPM、PPM、LPM 三个层面。

OPM:OS Policy Manager,主要是 OS 发起一些管理。

PPM:Platform Policy Manager,主要是 BIOS、EC 在中间完成一些管理。

LPM:Local Policy Manager,主要是 PD Controller 完成一些管控策略。

那 UCSI 就是 OPM 和 PPM 之间的通讯、管理规范。

图片

实际上,UCSI 的实现涉及了 OS、BIOS、EC 和 PD 四部分。

OS 端作为 OPM,已经由 Microsoft 实现了标准的 UCSI Driver。所以也可以认为 OPM 指的就是 UCSI Driver。

BIOS 端除了声明 UCSI 设备外,就是向 OPM 提供一个和 EC 通讯的接口。

EC 端主要的功能就是处理 OPM 发送的命令,转给 PD Controller。

图片

02

UCSI 规范

UCSI 规范的核心就是定义了 19 条命令用以管理 Type-C 接口。

图片

UCSI 管理 Type-C 接口就需要交换数据,因此定义了一个32字节的数据包。

图片

UCSI Data Struct,包含 48个Byte

  1. BIOS 首先向 OS 声明一个虚拟的Device,即 UCSI device。
  2. OS 会根据存在的 Device 加载对应的Driver,即 UCSI driver。
  3. BIOS 需要实现一些 Method 和 Notify Function。

A. UCSI Driver 会调用 BIOS Method 访问 UCSI Data Struct。

B. 一般 Notebook PD COntroller 通过 I2C 接在 EC 上,EC 会承担 PPM 的角色,完成 USB-C Port 的状态监控,同时维护 UCSI Data Struct 中 PPM->OPM 的数据。

总的来说,UCSI Data Struct 是 UCSI Driver 和 PD Controller 用来交换数据的。EC 和 PCH 通过 I2C、LPC、eSPI 等接口连接,因此 Data Package 也通过这些接口来回传递。

针对 CCI 和 Control 的数据结构如下

图片

CCI 是 PPM 或 OPM 用以通知对方 Command 的执行状态。

注意:OPM 的不同命令是需要 PPM 根据实际状态及时返回对应 bit。如果 OPM 没有及时拿到正确的数据,可能会导致 hang机,UCSI driver reset 等异常。

图片

Control 就是 OPM 向 PPM 发送的 command 以及必要参数

02

BIOS 端

BIOS 不需要针对 UCSI 做过多处理。仅声明 UCSI Device,然后提供访问

EC 的 Method 即可。BIOS 需要做的一共三步:

图片

图片

图片

需要注意的是,这个数据交换区域,可以用 IO 也可以用 ShareMemory。由于 OPM 对

命令执行有时间要求,推荐使用 ShareMemory,这样可以做到快速传递数据。另外,

BIOS 和 EC 还得商量一个数据通知的机制。一般方法如下:

  1. OPM 调用 BIOS 接口向 EC 写入数据后,BIOS 需要额外再向EC写一个值通知 EC 有数据来了。EC 需要轮询这个值,以判断是否有数据过来。
  2. PD Controller 端有事件更新后,EC 获取到需要发 Q_Event 以通知

BIOS 有事件发生了,以便通知到 OPM。

03

EC 端

EC 需要实现的就是,轮询指定位置的值,以判断 OPM 是否有命令写入。一旦发现有命令写入,EC 必须按不同 PD Controller 的规范通过 I2C 把

OPM 的命令传递给 PD Controller。

当 Type-C 接口有动作时,PD Controller 会通知 EC。EC 需要发 SCI 事件

以通知 OPM。

UCSI 中,OPM 和 EC 之间的通讯流程如下图。

图片

图片

04

PD 端

针对 PD Controller 端,需要接收 EC 转发过来的 UCSI 命令,然后按规范处理命令。如果有需要回复的数据,必须按照规范准备好数据被 EC 回读。

当然,不排除某些 PD Controller 并没有实现 UCSI 命令。此时就需要 EC 自行控制 PD Controller 以完成 UCSI 命令。针对某些命令,EC 还得根据需要读取 PD Controller 一些数据,组合成 UCSI Driver 需要读取的数据包。

显然这对 EC 并不友好,大量琐碎的数据在拼接时也会耗时,极易导致 UCSI Driver 未能按时获取必要数据,从而引起 UCSI Driver 异常或者系统异常。

04

HLK 测试

UCSI 仅仅是 OS 的一个附件功能,是否实现都不影响 Type-C 接口的任何功能。但是 UCSI 在系统下是一个虚拟设备,只要实现必须经过 HLK 测试。

UCSI HLK Test 有 55项测试,其中 50项测试需要替换 Test Driver。

一定要根据 Server 版本、DUT OS 版本选择正确的 Test Driver 版本。

Test Driver 替换步骤如下

图片

图片

如下 5 项测试,需要切换为 OS 自带的 UCSI Driver。

图片

打开设备管理器,选择 Uninstall Device,勾选删除设备软件。然后重启即可恢复至 OS 自带 Driver。

然后按如下修改注册表:

图片

修改注册表后,重启或者 Disable/Enable UCM-UCSI ACPI Device。然后即可开始测试上述 5项。

HLK 测试中,经常会有测试失败的项。大多情况都是 OPM 没有及时读取到正确的数据。一般 EC 端记录返回的数据,加以分析即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5041

    浏览量

    117765
  • OPM
    OPM
    +关注

    关注

    0

    文章

    4

    浏览量

    7382
  • BIOS语言
    +关注

    关注

    0

    文章

    4

    浏览量

    5013
  • DUT
    DUT
    +关注

    关注

    0

    文章

    182

    浏览量

    11998
  • Type-C接口
    +关注

    关注

    1

    文章

    133

    浏览量

    20181
收藏 人收藏

    评论

    相关推荐

    STM32F10xx时钟系统框架哪些部分组成

    STM32F10xx时钟系统框架哪些部分组成的?STM32有几个时钟源?STM32 RCC相关配置寄存器有哪些?
    发表于 09-26 06:23

    基于NAND的SSD是哪些部分组成

    SSD是什么?基于NAND的SSD是哪些部分组成的?
    发表于 10-19 08:07

    LTspice模型是哪些部分组成

    LTspice模型是哪些部分组成的?求解
    发表于 10-20 06:17

    STM32的UART框架哪些部分组成

    什么是通信协议?STM32的UART有哪些特征?STM32的UART框架哪些部分组成的?
    发表于 10-20 07:03

    STM32F1时钟系统的框架哪些部分组成

    STM32F1时钟系统的框架哪些部分组成的?时钟控制(RCC)的相关寄存器有哪些呢?端口复用和重映射分别有何含义呢?
    发表于 11-22 07:27

    STM32的硬件系统是哪些部分组成

    STM32的硬件系统是哪些部分组成的?STM32的时钟系统是哪些部分组成的?
    发表于 11-23 07:17

    MiniFly遥控器系统框架哪些部分组成

    MiniFly遥控器系统框架哪些部分组成的?NRF24L01是如何控制使用STM32的SPI1的?
    发表于 12-17 06:55

    MiniFly微型四轴遥控器系统框架哪些部分组成

    遥控器的任务主要功能都有哪些呢?遥控器系统框架哪些部分组成的?
    发表于 12-17 07:39

    什么是DMA?哪几部分组成

    什么是DMA?哪几部分组成
    发表于 01-27 07:38

    openBLT系统结构及框架哪几部分组成的?

    openBLT系统结构及框架哪几部分组成的?
    发表于 02-11 07:36

    什么是MCU?MCU是哪些部分组成

    什么是MCU?MCU是哪些部分组成的?
    发表于 03-01 06:06

    RTC芯片的驱动框架哪些部分组成

    如何对RTC芯片进行调试呢?RTC芯片的驱动框架哪些部分组成的?
    发表于 03-04 07:35

    RK3399 Camera的驱动框架哪些部分组成

    MIPI有何作用?Camera的驱动框架哪些部分组成的?
    发表于 03-08 07:06

    RK3288系统的Video编解码框架哪些部分组成

    RK3288系统的Video编解码框架哪些部分组成的?RK3288系统的Video编解码硬件能力有哪些?
    发表于 03-10 09:08

    RT-Thread 的 IO 设备模型框架哪些部分组成的呢

    RT-Thread 的 I/O 设备模型框架哪些部分组成的呢?接下来由小编给大家详细介绍一下。1、RT-Thread 的 I/O 设备模型框架位于硬件和应用程序之间,共分成三层,从
    发表于 03-11 18:17