1. 程式人生 > >PCIe學習筆記(12)--- PCIe匯流排的列舉過程 ENUMERATION

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