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

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

3天内不再提示

eSPI协议抓包分析

CHANBAEK 来源:吃面小哥 作者:吃面小哥 2023-11-18 15:29 次阅读

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 是高电平触发。

图片

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

    关注

    17

    文章

    1615

    浏览量

    89600
  • 波形
    +关注

    关注

    3

    文章

    343

    浏览量

    31244
  • 逻辑分析仪
    +关注

    关注

    3

    文章

    200

    浏览量

    22914
  • SPI协议
    +关注

    关注

    0

    文章

    17

    浏览量

    8281
收藏 人收藏

    评论

    相关推荐

    常见eSPI通讯数据包的分析

    eSPI 通讯一般来说无需特别关注,因为通讯都是 PCH(eSPI_Master)和 EC(eSPI_Slave)硬件完成的,软件不参与。
    的头像 发表于 11-18 15:35 837次阅读
    常见<b class='flag-5'>eSPI</b>通讯数据包的<b class='flag-5'>分析</b>

    snmp协议分析

    在snmp 协议中,下图的情况不解,程序怎么控制,询问你一此,应答一次;图中确实连续询问三次,连续应答不三次。希望能帮我解决下
    发表于 03-03 15:37

    CC2640 使用BTool怎么用?

    CC2640使用BTool怎么用?我一直用simpleBLEPeripheral改写的程序,烧写simpleBLEPeripheral,使用BTool,出现[/url]。使用p
    发表于 03-16 11:27

    CC1310 无法1Mbps

    (*.prs)已经实现50Kbps,但现在1Mbps还未成功。CC1111 user guide里面貌似最大速率为500kbs。这里想确定下CC1111是不能完美兼容CC131
    发表于 03-28 14:24

    U***dongle之Sniffer分析[TI官方英文版]

    U***dongle之Sniffer分析[TI官方英文版]
    发表于 11-06 16:16

    WIZnet芯片通讯时怎么?

    `Q:WIZnet芯片进行公网通讯或者芯片间通讯的话怎么?A:芯片和PC通讯的话可以直接通过Wireshark,如果芯片和公网直接通讯或者通讯是发生在芯片之间,则没有办法直接
    发表于 03-13 11:32

    加密后分析的问题?

    请问一下,我的zigbee设备全部都开启了加密, 使用软件的时候,数据都是加密的,我应该怎么解密分析这些数据呢,谢谢了
    发表于 06-01 14:22

    请问怎样分析软件的数据?具体每一条数据的作用是什么?

    本帖最后由 一只耳朵怪 于 2018-6-3 11:36 编辑 怎样分析软件的数据,分析出具体每一条数据的作用?
    发表于 06-01 13:32

    请问用Ubiqua需要添加哪些KEY

    我用的Z-Stack Lighting 1.0.2协议栈,Zigbee Light Linkg开发套件,现在对协议栈还不是很熟悉。想用Ubiqua,但是网络是加密的,需要添加KEY
    发表于 08-13 08:24

    基于HTTP间谍插件分析有道翻译反爬机制

    python实战:利用chrome插件HTTP间谍分析有道翻译反爬机制
    发表于 04-15 11:41

    wireshark数据分析问题

    用网络调试助手作为Tcp Server给STM32F429发送数据,每次传输完21845bytes后,就出现问题。用WireShark的数据有些不太理解。上图为用串口调试助手调试后的信息,每次传输到21846bytes就接收不到了。以上为网络
    发表于 04-08 04:35

    SPI与eSPI分别是什么意思

    SPI是什么意思?SPI通信协议是由哪些部分组成的?eSPI是什么意思?eSPI BUS与Chipset是怎样进行连接的?
    发表于 09-23 08:04

    空口方式和wireshank分析工具使用介绍

    主要介绍下最近使用中感觉很万能的空口方式和wireshank分析工具使用;目的:抓取各种设备网络通信过程中数据,定位并分析软硬件设计中
    发表于 01-18 09:11

    请问BLE-Dongle是否支持协议分析?请问怎么进行协议分析

    如题,请问贵司的BLE-Dongle是否支持协议分析?请问怎么进行
    发表于 09-07 07:12

    为什么SPI逻辑分析正常但revbuf值不正确呢?

    SPI 逻辑分析正常,revbuf值不正确(第一次revbuf值正确,再进就不对了)
    发表于 03-06 09:48