参考链接:
PCIe卡的主要引脚 及 热插拔
Linux2.6.10内核下PCIExpressNative热插拔框架的实现机制
Linux内核笔记之PCIe hotplug介绍及代码分析
一、 PCIe 总线使用的信号
1、接口说明
PCIe x1,x4,x8,x16 卡的连接器引脚如下图所示,数据收发引脚为白色,辅助引脚为灰色:
mechanical key对应防呆缺口的位置。
与收发数据相关的线就是每个通路(lane)的两对差分传输线。PCIe x1,x2,x4,x8,x16分别代表有1,2,4,8,16条lane。
2 、辅助信号
在连接器上提供辅助引脚来辅助系统级功能或实现,PCI Express连接器和Add-in Card接口支持以下辅助信号:
- REFCLK-/REFCLK+ (必要): 低电压差分信号。系统板需要提供一个符合PCIe基本规范的通用架构的参考时钟。
- PERST# (必要): 指示所应用的主供电在规定的误差内且稳定。
- WAKE#: (可选): 一个开漏(open-drain)低电平有效的信号,重新激活PCI Express Link层次结构的主电源和参考时钟。用于符合PCIe规范的任何支持唤醒功能的外接程序卡或系统板。
- SMBCLK (可选): SMBus接口时钟信号。这是一个开漏的信号。
- SMBDAT (可选): SMBus接口地址/数据信号。
- JTAG (TRST#, TCLK, TDI, TDO, and TMS) (可选): 支持IEEE 1149.1标准。
- PRSNT1# (必要): 插件卡存在检测引脚,用于实现热插拔。
- PRSNT2# (必要): 插件卡存在检测引脚,用于实现热插拔。
- CLKREQ# (可选): 卡驱动的低电平有效开漏信号,请求PCI Express参考时钟可用(有效时钟状态)以允许 PCI Express接口发送/接收数据。
- PWRBRK# (可选): 由系统驱动低信号来发送信号应急减电机制。
二、热插拔
没有插入时,PCIe卡端的PRSNT1#与PRSNT2#连接在一起。而插槽端的PRSNT1#接地,PRSNT2#通过上拉电阻拉高。
注意到PRSNT1#与PRSNT2#对应的金手指与其他信号是不等长的,当卡的其他信号完成连接之后,因为卡的PRSNT2#与PRSNT1#连在一起所以被接地拉低,PRSNT2#从高到低的转变就代表卡插入了。
同理也可以检测到卡拔出了,系统知道了卡是否插入就可以实现对应的处理过程来实现热插拔功能。