eSPI协议抓包分析

描述

eSPI 协议在物理层是遵循 SPI 通讯规范的,但是协议层有差异,因此不能使用 SPI 协议去解析(没有 eSPI 协议分析仪的情况下,可以使用 SPI 协议分析仪去做单独 Byte 的初步解析,接下来就人肉解析 eSPI)。

一般逻辑分析仪只能解析 I2C、SPI 等通用协议。要分析 eSPI 协议必须使用可以解析 eSPI 协议的逻辑分析仪 Acute TravelLogic。

目前市场上常用的 eSPI 分析仪如下图,型号是 TL4234B。

逻辑分析仪

下载逻辑分析仪软件

打开官网链接,下载配套软件并且安装,如下图。

逻辑分析仪

软件设置

打开软件后,如下图,选择逻辑分析仪。

逻辑分析仪

抓取 eSPI 波形,可以采用快速通道配置。点击快速设置,选择 eSPI 协议。

逻辑分析仪

点击下图,配置按钮,可以配置 eSPI Bus 采集的参数。

逻辑分析仪

逻辑分析仪

通道设置

通道配置中,channel 默认从 0 开始,一共占用 7 个 channel。依次为 CS#、SCK、IO-0、IO-1、IO-2、IO-3、Alert、Reset。

事实上,使用 signal IO Mode 时,Alert 是复用在 IO-1上,因此没有实际的 Alert pin。

CS 工作模式选择 Active Low,即低电平选择。

Response 采样点选择 Clock Rising,即上升沿采样。

IO Mode 默认 signal mode 即可。

解码显示设置

解码显示设置中,选择需要显示的内容即可。

硬件连线

笔记本设计中,采用的是 Signal Master - Signal Slave 模式,Master 是 PCH,Slave 是 EC。

如下图,IO 有 4个,分别是 IO-0,IO-1,IO-2,IO-3。实际应用中通讯模式选择 Signal Mode居多。

如果通讯模式是 Signal Mode,逻辑分析仪可以不抓取 IO-2,IO-3 信号。

按上述软件配置,逻辑分析仪的 CH[0--7] 分别接硬件的 CS#、CLK、I/O 0、I/O 1、I/O 2、I/O 3、Alert、Reset#。

同时记得连接一个地线。

逻辑分析仪

抓取 eSPI 波形

点击采集,即可开启捕获波形。捕获完成后,软件自动解析,黑色区域显示具体波形,底下框中显示每一笔数据包的详情。

逻辑分析仪

持续抓取 eSPI 波形

逻辑分析仪

eSPI 数据包

笔记本的 eSPI 的应用中,是 Signal Master - Signal Slave,即一主一从。

PCH 作为 eSPI Master,当 EC 把 RSMRSET 拉高后,PCH 拉高 eSPI Reset,开始做 eSPI 的初始化。

主要内容有通讯速率、通讯模式、通讯通道等信息配置。

逻辑分析仪

eSPI 初始化数据包

PCH 端的 eSPI Master 对 EC 端的 eSPI Slave 初始化,其实就是根据实际需求,改写 eSPI Slave Register。

使用到的指令是 GET_CONFIGURATION 和 SET_CONFIGURATION。

所以基本逻辑就是 eSPI Master 读取 eSPI Slave 寄存器,改写寄存器,回读确认。寄存器操作最小单位是 4Byte。

eSPI Slave 端需要配置的寄存器只有如下 5个,即 Offset 08、10、20、30、40。

逻辑分析仪

Offset 08h: General Capabilities and Configurations

通用功能描述和配置寄存器。包括通讯速率、模式、校验使能,通道支持。

读取 offset 08h 寄存器

逻辑分析仪

改写 offset 08h 寄存器

eSPI Master 选择 Quad I/O mode,66MHz 通讯。下图可以明显看到改写 08 寄存器后,CLK 变快,I/O[2-3] 参与通讯。

逻辑分析仪

Offset 10h: Channel 0 Capabilities and Configurations

通道 0 功能描述和配置寄存器。 Peripheral Channel

写 offset 10h 寄存器,使能 Peripheral Channel。

逻辑分析仪

Offset 20h: Channel 1 Capabilities and Configurations

通道 1 功能描述和配置寄存器。 Virtual Wire Channel

读取 offset 20h 寄存器

逻辑分析仪

写 offset 20h 寄存器,使能 Virtual Channel。

逻辑分析仪

Offset 30h: Channel 2 Capabilities and Configurations

通道 2 功能描述和配置寄存器。 OOB Message Channel

读取 offset 30h 寄存器

逻辑分析仪

写 offset 30h 寄存器,使能 OOB Message Channel。

逻辑分析仪

Offset 40h: Channel 3 Capabilities and Configurations

通道 3 功能描述和配置寄存器。 Flash Access Channel

写 offset 40h 寄存器,使能 Flash Access Channel。

逻辑分析仪

PCH SLP Signal 数据包

PCH 端的 eSPI Master 使用 PUT_VWIRE 指令把 SLP 信号传递给 EC。

Index = 0x02,代表 System Event 2。

Data = 0x76,代表 SLP_S5、SLP_S4、SLP_S3 信号有效,其中 SLP_S5、SLP_S4 为 High,SLP_S3 为 Low。

逻辑分析仪

EC 端的 eSPI Slave 有 Virtual Wire 信号发送时,会先在 I/O[1] 上产生一个 Alert#,然后 Host 使用 GET_VWIRE 获取 Virtual Wire 状态。

逻辑分析仪

KBC 数据包

按下 “A” 键后松开。有按键触发后,KBC 端需要主动发送 IRQ 并且发送 Key Code(Make and Release)。

EC 端的 KBC 有数据需要发送给 Host,需要用 Virtual Wire 发送一个 SERIRQ。

逻辑分析仪

Host 读取 Virtual Wire,返回值是 Index=0x00,Data=0x81。

Index = 0x00,代表 Interrupt Event 0。

Data = 0x81,BIT-7 为 1 代表 Interrupt Level High。BIT[0-6] 为 1 代表 IRQ-1。

逻辑分析仪

Host 端发收到 IRQ-1,读取 I/O 64 判断 OBF 是否为 1,即 KBC 端是否已经准备好数据。然后读取 I/O 60 获取数据(1E,即 “A” 键 Scan Code Set-1)。

逻辑分析仪

Host 读取完“Key Code”,紧接着读取 Virtual Wire 状态,发现 IRQ-1 变为 Low。因此 KBC 的 IRQ-1 是高电平触发。

逻辑分析仪

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分