✨前言
PCIe总线中定义了四种复位名称:冷复位(Cold Reset)、暖复位(Warm Reset)、热复位(Hot Reset)和功能层复位(Function-Level Reset,FLR)。其中FLR是PCIe Spec V2.0加入的功能,因此一般把另外三种复位统称为传统的复位方式(Conventional Reset)。其中冷复位和暖复位是基于边带信号PERST#的,又被统称为基本的复位方式(Fundamental Reset)。
基本复位由硬件自动处理,会复位整个PCIe设备,初始化所有与状态机相关的硬件逻辑,端口状态以及配置空间中的配置寄存器等等。但是,也有一个例外,就是前面介绍PCIe错误报告机制的相关文章中提到过Sticky(不受复位影响)的概念。这里指的不受复位影响的前提是,PCIe设备的电源并未被完全切断。Sticky这一功能有助于系统定位错误与分析错误起因。
✨1 冷复位(Cold Reset)
冷复位相当于系统的电源复位(Power-on Reset),是最彻底的复位方式,会将整个系统恢复到初始电源上电状态。
在冷复位中,所有的硬件设备,包括PCIe设备,都会被初始化到它们的启动状态。这通常发生在系统的电源被完全断开然后再次接通时。
冷复位通常用于系统的硬件故障处理、系统的首次启动,或者是需要彻底重置系统状态时。
(需要注意的是,即使主电源断开了,如果PCIe设备仍有辅助电源Vaux为其供电,该复位仍不会影响到Sticky的