大家好,又到了每日學習的時間了,今天我們來聊一聊PCIe的軟件配置方式。
關(guān)于PCIe的軟件配置和初始化
PCIe設(shè)計出來考慮了和pci兼容問題。所以PCIe的軟件配置方式可以沿用PCI的配置方式。當然,由于特殊性,也有自身獨特的配置方式。所以PCIe模塊的訪問方式有如下兩種:
1、 PCI 兼容的配置方式。
2、 PCI Express enhanced 配置機制。
PCI兼容方式是在PCI章節(jié)已經(jīng)提過,PCIe與其完全兼容。這里主要描述PCIE高級配置機制。
PCIe的配置空間
PCIe的配置空間是兼容PCI的,但是在PCI的基礎(chǔ)上增加了不少register。從256增加到4Kbytes的大小。如下圖所示,PCIe的配置空間。
其中,PCIe的配置空可以分成PCI兼容部分和擴展部分。PCI兼容部分在前面256byte區(qū)域,完全可以使用PCI配置機制來訪問。而擴展部分的register,使用PCI配置方式無法實現(xiàn),則可以通過PCIe 高級配置方式完成。
PCIe高級配置機制
PCIe enhanced configuration mechanism的主要原理是將pcie的所有4K bytes 映射到memory地址上,這樣,通過訪問memory的方式即可讀寫PCIE的配置空間。當然,通過此方式讀memory時候,最好考慮到4字節(jié)對齊的問題,否則有可能出錯。
在正常的訪問過程中,可以訪問這一部分的memory來配置pcie,而這部分memory在哪里呢?芯片組中會定義一個base address,而base address開始的256MB的空間內(nèi)則是總線上所有PCIe設(shè)備的配置空間對應(yīng)的register。
上圖是PCIE總線高級配置結(jié)構(gòu)圖,很明顯可以看出是PCIE配置空間映射的memory空間為[XbaseAddress +0 àXbaseAddress +FFFFFFFh]。那么實際的地址線如何對應(yīng)呢?如下圖所示:
在程序中的表達和操作是這樣的:
1、計算出PCIe設(shè)備配置空間中寄存器的地址:Register address = PCIe_Base + (BusNO * 1MB) + (DeviceNO * 32KB) + (FuncNO* 4KB) + (Reg).
2、使用memory 讀寫周期完成register的讀寫。
PCIE配置空間register
詳細的register解讀,請閱讀PCIe spec或者參考一份X86架構(gòu)的芯片組datasheet。
今天就聊到這里,各位,加油。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603419
發(fā)布評論請先 登錄
相關(guān)推薦
評論