(转自“服务器BMC”公众号)服务器BMC芯片的ESPI接口学习
其本质就是把本来在SMBus上通信的数据,如MTCP Packet,从Out of Band Packet变成了In-Band Message,这样主机和BMC进行MTCP通信的时候就不需要占用SMBus的带宽和引脚。而eSPI/LPC接口是日常接触较少的,另外eSPI是代替LPC的,所以就考虑先学习学习eSPI接口。这个channel就是代替原来的LPC接口,用于连接传统LPC接口兼容的外设设备

过年时间研究了一下eSPI接口(Enhanced Serial Peripheral Interface),把自学的情况用简单写下来,既给自己做个记录,也请大家指导一下。
如上一篇文章中提到的BMC三类功能中,接口功能是top1。而eSPI/LPC接口是日常接触较少的,另外eSPI是代替LPC的,所以就考虑先学习学习eSPI接口。下一步再看看PECI接口,至于其他那些PCIe、USB等,大家比我熟悉,就先放后面研究吧。
从功能上说,eSPI接口是带外管理用的,用来代替LPC接口。最早为了便于对主板上进行功能扩展,IBM推出了ISA总线。但是随着CPU频率和工艺的提高,ISA不行了,Intel就推出了LPC接口。后来LPC接口也开始显得力不从心了,Intel又推出了eSPI接口。
|
ISA |
LPC |
eSPI |
|
|
时间 |
IBM,1981 |
Intel,2002,v1.1 |
Intel,2016,v1.0(2022,v1.5) |
|
信号 |
8位62个 16位98个 |
7个必选,6个可选 |
可选,6或8个,同时减少OOB与GPIO所需引脚 |
|
电平 |
5V |
3.3V |
1.8V |
|
速率 |
4~8M |
33M |
最高66M |
eSPI借鉴了SPI电气规范,但是在协议层使用了不同的定义,所以二者无论是从功能还是从应用上完全是两码事。除了全面兼容LPC总线的作用和功能外,eSPI总线还把OOB(out of band带外)的SMBus和SideBand的GPIO都转化给可以在eSPI 上传递的In Band Message。除此以外,还可以和主机端实时共享flash。因此在eSPI 总线上,根据数据类型划分了 4个 Data Channel,分别是Peripheral Channel、Virtual Wire Channel、OOB Channel、Flash Access Channel。当然这个channel是一个虚拟通道的概念,不是说实际硬件通路有四个。

这四个channel有不同的Command指令和数据Payload,来互相区分。每个channel也都定义有自己的寄存器。一上电,主从双方也要有个协商,确定出IO模式、速率等等。然后就是四个虚拟通道分别进行通信了。
1、外设通道(Peripheral Channel)
这个channel就是代替原来的LPC接口,用于连接传统LPC接口兼容的外设设备(如Super I/O芯片、键盘控制器、PS/2接口等),实现与主系统外设的通信。跑些KCS、Vuart、Snoop等功能。懂LPC接口的,对此也熟悉。
2、虚拟线通道(Virtual Wire Channel)
这个channel用来传输硬件事件信号(如中断请求、电源按钮信号、系统复位信号等),实现BMC与主机之间的实时事件通知。这样通过虚拟化逻辑信号(而非物理线路)传递事件,节省硬件资源。如新的intel平台没有PCH了,CPU可以通过eSPI实现对BMC的vGPIO功能。KB/MS/UART等设备有数据需要处理的时候,会往上发中断。在LPC中,往上发中断事务是通过LPC的Serial IRQ信号来完成的。在eSPI中,就可以通过此通道往上发中断。
3、带外消息通道(Out-of-Band Message Channel, OOB)
这个channel用于带外管理通信,支持BMC与主机之间的异步消息传递(如IPMI命令、传感器数据、日志传输等),可以使主机处于关机或故障状态仍可工作。其本质就是把本来在SMBus上通信的数据,如MTCP Packet,从Out of Band Packet变成了In-Band Message,这样主机和BMC进行MTCP通信的时候就不需要占用SMBus的带宽和引脚。
4、Flash访问通道(Flash Access Channel)
这个channel是互相控制Flash的。众所周知,Host端下有个Flash,BMC端也有个Flash。而eSPI 的这个Flash Channel为Host端和BMC提供了一条可以实时共享Flash部件的通路,这样就可以减少BOM器件了,而且也可以考虑安全方面的机制。根据被共享的Flash挂在主机端还是BMC端下,eSPI将Flash Channel的工作模式划分为Master Attached Flash Sharing和Slave Attached Flash Sharing,这里就不多介绍细节了。
现在X86/C86都用eSPI代替了LPC,我看这是以后发展的方向。
还是之前提到的:今年希望和大家讨论讨论BMC芯片以后发展的方向,在BMC上加一些什么功能更适应客户使用。欢迎留言讨论和转发,谢谢。
更多推荐



所有评论(0)