【PCIe总线】-- inbound、outbound配置
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)的特定的地址空间