eSPI接口通道功能解析

描述

eSPI 接口是用于取代 LPC 接口的,因此它全面兼容 LPC 总线的功能。电气规范上,eSPI 复用了 SPI ,因此通讯频率最高提升到 66MHz。电压降到 1.8V,进一步降低了通讯功耗。但是二者协议层完全不一样,SPI 协议无法解码 eSPI 通讯。

eSPI 总线除了兼容 LPC 总线功能,同时还把 OOB(out of band)的 Smbus 和 SideBand 的 GPIO全部转换为 In Band Message,以减少 PCH 和 EC 连接的 pin。

eSPI 为了兼容 LPC 并且进一步囊括更多数据类型的通讯,以减少 PCH 和 EC 连接引脚。因此在eSPI 总线上,根据数据类型划分了 4个 Data Channel。

即 Peripheral Channel、Virtual Wire Channel、OOB Channel、Flash Access Channel。eSPI 启动过程需要配置这 4个 通讯 Channel,本文简单介绍了这 4个 Channel 的功能。

下图描述了 LPC_Master(PCH) 和 LPC_Slave(EC)的结构。

图中可以看出除了 LPC 接口外,还有 Smbus、GPIO 接口。

总线

下图描述了 eSPI-Master(PCH) 和 eSPI_Slave(EC)的结构。

图中可以看出,eSPI 总线兼容了 Smbus、GPIO。

总线

所谓 Channel,是 eSPI 规范定义的一个虚拟的、逻辑上的数据通道,以便在 eSPI 总线上传递 4类数据流,同时保证这 4类数据流之间相互独立互不干扰。

在协议层面,每个 Channel 有定义专用的 Command 和 Payload(即数据包格式)。

在硬件层面,每个 Channel 都有独立的 data buffer,并且相应的 Tx/Rx Avail/Free 状态都呈现在 Status Register中。

总线

CPU 启动过程中,eSPI Channel Config 其实就是 eSPI-Master 读取并改写 eSPI-Slave 端的一些寄存器,以便 eSPI-Master 和 eSPI-Slave 就 Channel 的通讯能力达成一致。

因此,EC 作为 eSPI Slave,需要按照 eSPI 规范针对每个 Channel 实现了一组寄存器,用以描述并且接收 eSPI-Master配置 Channel 的一些通讯特性。

总线

General Capabilities and Configurations

eSPI 通用描述寄存器,Slave Register Start Address 是 0x08。

eSPI-Master 先通过 GET_CONFIGURATION 命令获取 eSPI-Slave 端支持的通讯参数。

总线

紧接着 eSPI-Master 通过 SET_CONFIGURATION 命令配置 eSPI-Slave 端的通讯参数。

主要涉及 eSPI 的 IO-Mode、Speed、CRC-Check、Alert-Mode。下图可看出,配置了 66MHz、Quad-IO。

总线

Peripheral Channel

外设通道,Slave Register Start Address 是 0x10,32bit 寄存器配置了外设通道通讯的参数。外设通过主要传输 Memory request packet,

I/O request packet,Message request packet。

相较于 LPC 而言,承接了 IO Cycle,Memory Cycle 的通信以兼容 Legacy SIO Device。

Platform Reset(PLTRST#) 信号拉低会复位 Peripheral Channel。

Virtual Wire Channel

虚拟线通道,Slave Register Start Address 是 0x20,32bit 寄存器配置了虚拟线通道通讯的参数。顾名思义,Virtual Wire Channel 就是把 PCH 的 Sideband pin 或者 GPIO 转换为 eSPI 的 in-band Message 传递的通道。

Sidebang pin 主要有 IRQ#、PME#、SCI#、SMI#、RCIN# 以及一些无意义的通用 GPIO。

Virtual Wire 还会传递一些针对 eSPI 扩展的虚拟状态信号,例如 SLAVE_BOOT_LOAD_DONE。

总线

OOB Channel

Out-of-bund 通道,Slave Register Start Address 是 0x30,32bit 寄存器配置了 OOB 通道通讯的参数。

OOB 通道的数据比较简单,就是负责传输 Out-of-bang Processor 和 EC/BMC 之间的 Smbus Message。

当然 eSPI 上传输的是把 Smbus Message 重新打包后的 OOB Message。

总线

Run-time Flash Access Channel

Flash 访问通道,Slave Register Start Address 是 0x40,32bit 寄存器配置了 Flash 通道通讯的参数。

Flash Channel 解决的是 eSPI-Master 和 eSPI-Slave 之间 SPI Flash 共享的问题,以减少设计 BOM。

总线

第一种,Flash 接在 PCH 上,EC 透过 eSPI 访问 Flash,称之为 MAFS。

总线

第二种,Flash 接在 EC 上,PCH 透过 eSPI 访问 Flash,专用于 Server 平台,称之为 SAFS。

总线

至此,eSPI 的四个数据通过就已简介完毕,通讯数据格式以及不同通道通讯专用命令,可参考 eSPI Spec。

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

全部0条评论

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

×
20
完善资料,
赚取积分