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