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。
-
SPI
+关注
关注
17文章
1700浏览量
91295 -
通讯
+关注
关注
9文章
892浏览量
34829 -
总线
+关注
关注
10文章
2865浏览量
87973 -
光接口
+关注
关注
0文章
14浏览量
9482
发布评论请先 登录
相关推荐
评论