PCI、PCIe相關知識整理匯總
【PCIe總線】 -- PCI、PCIe相關實現
由之前的PCIe基礎知識可知,pcie的組成有:RC(根節點)、siwtch(pcie橋)、EP(設備)。
RC和EP,以及EP和EP能夠互相通信之前,需要一系列的配置,即配置inbound、outbound。
什么是inbound,outbound?
它本質上是地址轉換翻譯。
SOC芯片在 PCIe 內部配置寄存器空間提供了一系列寄存器接口用以配置地址轉換單元(ATU)。通過這一組寄存器,可以實現對發送方向和接收方向的各個地址轉換區的配置。
一個EP如何訪問RC?
它們之間只有PCIE鏈路。EP側要產生PCIE讀寫事務,那應用程序如何產生這樣的事務?應用程序操作特定的地址,進行讀寫。如寫一個地址,然后產生個寫事務。各soc有PCIE控制器,配置好,然后訪問特定的地址,就可以轉換成寫事務。
即,EP訪問RC:EP配置outbound地址,對應RC的DDR地址。EP訪問特定的地址,會產生一個事務,訪問RC側的DDR地址。
實例:
如ti816x, 2000 0000h - 2FFF FFFFh 共256M大小的地址空間,對應著32個outbound配置, 每個配置對應著8M。
配置ob0? : 0x4 0000 0000 (RC側DDR地址)
EP側應用程序訪問0x2000 0000, 會產生一個事務,訪問RC側的0x4 0000 0000。
RC如何訪問EP?
它們之間只有PCIE鏈路。RC側可以訪問EP側的BAR空間。EP側提供了翻譯機制,將對BAR空間的訪問,轉化成對本側DDR的訪問。
如:
EP BAR2: 0x380010000000
EP配置inbound bar2: 0xb2e00000
RC側應用程序訪問 0x380010000000,會產生一個事務,訪問EP側的0xb2e0 0000。
EP-A如何訪問EP-B?
同樣它們之間只有PCIE鏈路。
- ?EP-A配置好outbound,到EP-B側的PCIE BAR地址
- ?EP-B配置好inbound到EP-B的DDR
- ?EP-A訪問 本側(soc)的特定的地址空間