PCIe学习笔记(12)--- PCIe总线的枚举过程 ENUMERATION

1.

画张图


PROCESSOR

^

|

|Primary bus*

|

Root Complex

Host to PCI bridge

|

|Secondary bus *

|Bus 0*


Host to PCI Bridge (对其它BRIDGE也类似)的UPSTREAM, 我们称它为PRIMARY BUS

Host to PCI Bridge (对其它BRIDGE也类似)的DOWNSTREAM,我们称它为SECONDARY BUS


2.

在枚举过程中,存在几种情况

第一种,设备不存在

PCI的情况下,如果设备不存在,则CONFIGURATION REQUEST READ会TIMEOUT(MASTER ABORT ERROR),且返回0xFFFF的VENDOR ID

PCIE的情况下,如果设备不存在,则该目标地址的设备上层的BRIDGE会返回一个Cpld without data, status为UR(UNSUPPORTED REQUEST),为了与PCI的情况兼容,RC会返回0xFFFF的VENDOR ID


3.

在枚举过程中产生的TIMEOUT与UR,不被当作一个错误,所以不需要被软件来处理

事实上,在枚举过程中的软件,可能也没有相应的错误处理的能力


4.

对配置空间的读的时间问题

如果小于或等于5G的情况,需要在reset 100ms之后,发起

如果大于5G的情况,需要在LINK TRAINING100ms这后,发起 (因为GEN3的EQUALIZER TRAINING需要更长的时间,相对于GEN2, GEN1而言)


5.

第二种,设备没有准备好应答CONFIGURATION READ

PCI的情况下,有三种反应

一, 无视这个请求

二, 系统重试这个请示

三,接受这个请求,但在设备准备好的情况下,再返回请求的内容


PCIE的情况下

设备返回,CRS (CONFIGURATION REQUEST RETRY STATUS)


RC在设备没有准备好的情况下(返回CRS)

一,返回0x0001这样的一个VENDOR ID, 其它读取的内容都返回全1,示意SW,去做别的事情

二,如果是CONFIGURATION 写,或者是其它(除VENDOR ID之外)读,则需重试


6.

 确认了一下,PCIE的枚举,是DEPTH-FIRST,这个是软件的行为,与硬件无关

硬件需要配合软件,提供的就是

SECONDARY BUS NUMBER REGISTER与SUBORDINATE BUS NUMBER REGISTER





你可能感兴趣的:(PCI-Express)