TI中文支持网
TI专业的中文技术问题搜集分享网站

[PCIE]关于Application Report “PCIe Use Cases for KeyStone Devices”上的疑问

我想问一下文档中的这两个PCIe address怎么理解? 它们两个的区别是什么?或者说分别代表的是什么?

Zahir Wang:

Assume the DDR destination buffer is located at: 0x8912_5678~0x89D2_5677 (12 MB)

CMD_STATUS[OB_XLT_EN] = 1 (outbound address translation enabled)Assume OB_SIZE=8 MB (bits [27:23] decide which translation region being used)

Because buffer size (12 MB) is larger than OB_SIZE (8 MB), we must choose two contiguous translation regions (2*8 MB=16 MB>12 MB) for the transfer. But there is no limit for which two regions are chosen.

For example, if we choose Region 18 and Region 19 for the translation.Bits [27:23] = 18 = 10010b –> 0x6900_0000;Bits [27:23] = 19 = 10011b –> 0x6980_0000;

OB_OFFSET_INDEX18 = 0x7000_0001 (bit [0]=1 enables this region) (0x7000_0000 is the PCIe address, which can be chosen randomly)OB_OFFSET18_HI = 0x1234_5678 (64-bit addressing)

OB_OFFSET_INDEX19 = 0x7080_0001 (make Region 19 offset consistent as Region 18, with 8 MB spacing) OB_OFFSET19_HI = 0x1234_5678

We can use EDMA to do the transfer.srcAddr = 0x6900_0000;dstAddr = 0x8912_5678;dataSize = 12 MB;

The translated address = bits[63:23] of 0x12345678_70000000 + bits[22:0] of 0x6900_0000 = 0x12345678_70000000

Then the data packets with PCIe address 0x12345678_70000000~0x12345678_70BFFFFF (12 MB) will be transferred to the internal DDR location as 0x8912_5678~0x89D2_5677. The other PCIe device over the link whose BAR window (64-bit) including this PCIe address range will be the target to be read from.

,

Shine:

0x7000_0000 is the PCIe address是初始定义的一个PCI地址,PCIe address 0x12345678_70000000是经过translated后的PCI地址,在EP端要读取这段地址的话,需要设置BAR在这段地址范围内。

赞(0)
未经允许不得转载:TI中文支持网 » [PCIE]关于Application Report “PCIe Use Cases for KeyStone Devices”上的疑问
分享到: 更多 (0)