对于热插拔,Spec对于所谓插槽(插卡)的ON、OFF状态都做了比较清晰的定义,如下:

ON(上电)状态的属性:

• Power is applied to the slot.

• REFCLK is on.

• The link is active or in the standby (LOs or Ll ) low power state due to Active State Power Management.

• The PERST# signal is deasserted.

简而言之:电源打开、时钟开启、链路link、复位信号拉高。

OFF(上电)状态的属性:

• Power to the slot is turned off.

• REFCLK is off.

• The link is inactive. (Driver at the root of switch port is in Hi Z state)

• The PERST# signal is asserted.

简而言之:电源关闭、时钟关闭、链路断开、复位信号拉低生效。

         热插拔的插入、拔出过程大致如下流程。先看卡的拔出过程:(注意,我们这里的插拔不是暴力的拔出,所谓暴力,是指不通知系统和软件,直接暴力的、突然的把PCIe卡从系统槽位中拔出!Spec定义的热插拔是有严格的顺序要求和处理过程的)

         卡拔出流程如下:

  1. 按Attention Button按钮或者通过软件的命令。通知热插拔控制器开始进行热拔出操作。
  2. 闪烁LED灯,表示这张卡准备从系统中移除。五秒内没有其他异常,流程继续。五秒内可以取消此次操作。
  3. 系统把这个PCIe设备在系统中拥有的资源删除,如总线资源、Memory资源等。确保再没有流程访问这种卡。
  4. 关闭这个卡所在槽位的电源。关闭LED灯,表示该卡可以从系统中拔出了。
  5. (可选操作)打开MRL。
  6. 用户移除这张卡。

如果过程中有错误,则跳出移除过程,可以点LED红灯表示错误。需要人工干预处理。

         卡插入流程基本与上述流程相反:

  1. PCIe插插入槽位,触发硬件检测到Present在位。
  2. (可选操作)关闭MRL。
  3. 按Attention Button按钮或者通过软件命令,通知热插拔控制器开始进行热插入操作。
  4. 闪烁LED灯,表示这张卡准备在这个槽位插入。五秒内可以取消此次操作。否则继续。
  5. 打开这个槽位的电源。
  6. 时钟打开、复位信号生效。插入的PCIe设备硬件可以正常工作,链路link up。
  7. 系统重新枚举插入槽位的总线,分配相应的资源。系统可以正常识别新插入的PCIe设备。
  8. 插入PCIe设备对应的驱动进行相关的配置和初始化。PCIe设备对应功能初始化完成,可以正常工作。

如果过程中有错误,则跳出插入过程,可以点LED灯表示错误。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注