PCIE原理-004:PCIE鏈路訓練、枚舉掃描、配置BAR空間

1、PCIE 鏈路訓練、枚舉掃描、配置BAR的順序?

上電覆位後,首先進行鏈路訓練,之後進行枚舉掃描、最後進行基地址寄存器BAR的配置。

完成基地址配置後,就可以通過memory TLP讀寫進行寄存器的訪問了。

2、鏈路訓練、枚舉掃描、配置BAR的過程

PCIE首先進行鏈路訓練,上電覆位後,鏈路訓練狀態機進入L0狀態時鏈路訓練完成後進入gen1模式,如果雙方支持更高的速率,則立即進行gen2/3、4速率的訓練,當鏈路訓練狀態機再次進入L0狀態,鏈路訓練完成。

鏈路訓練完成開始進行枚舉掃描,枚舉掃描主要目的是CPU需要知道系統中有哪些PCIE 設備,並且爲每個設備分配總線號。PCIE的配置讀TLP報文中包含響應設備的bus_number、function_number以及device_number,因此PCIE設備需要知道自己的bus_number是多少。

枚舉掃描過程中,CPU會通過配置讀TLP讀取PCIE配置空間的的verdor id和頭標類型寄存器以及其他配置寄存器,此時PCIE返回的讀返回TLP報文中complete_id(bus_number、function_number、device_number)爲全0,因此此時PCIE不知道自己的bus_number。枚舉過程中,CPU完成對PCIE的配置讀後,會發起配置寫TLP,此時PCIE接受到CPU發來的配第一次置寫TLP,會從TLP中解析出bus_number字段存下來。隨後的配置讀TLP返回中,就會使用bus_number、和function_number和device_number拼接成complete_id。

枚舉掃描完成後,會配置基地址寄存器,給PCIE分配地址空間。通過對BA0/1、BAR2/3等基地址寄存器先進行寫全32’hffff_ffff,得到信息確認PCIE想申請32bit地址還是64bit地址以及向獲得的地址空間,從而分配基地址。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章