This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/66ak2h14:PCIe 入站映射

Guru**** 2605015 points
Other Parts Discussed in Thread: 66AK2H14

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/651940/rtos-66ak2h14-pcie-inbound-mapping

器件型号:66AK2H14

工具/软件:TI-RTOS

您好!

我有一个66ak2h14、运行 TI RTOS、作为根复合体运行、通过 PCIe 连接到 Virtex-6。

我正在运行 PCIe 示例的修改版本、该版本被写入以在两个评估卡之间传输数据。  在本例中、我们将 PCIe 缓冲地址写入 Virtex、它会将大约1K 的数据突发传输到我们提供的 PCIe 存储器地址。  我们修改了该示例、使其仅为根复合体。

一切都很好,但我对入站映射有疑问。

我们使用的设置与测试程序使用的设置类似。  我们将 RC (TI)上的 BAR1设置为0x9000_0000。  测试软件中使用的 BAR1掩码仍然为0x00ff_FFFF。  我们更改入站映射、以便将0x9000_0000映射到缓冲区地址、在本例中为0x8005_4700。  这工作正常。

但是,在相同的设置下,如果我们将 Virtex 配置为将数据传输到地址0x8000_1000而不是0x9000_0000,则数据确实会保存在内存中的0x8000_1000处。  根据我的理解、这不在根控制器上的 BAR1范围内。  我还可以将 Virtex 设置为传输到0x8005_4700 (入站映射之前的实数缓冲器地址)、并将数据写入实数缓冲器。  当我这么做时、数据会被存储在实际缓冲区中。  请注意、后两个地址(0x8000_1000和0x8005_4700)不在 BAR1范围内、SOC 接受传输并将数据写入 SDRAM 中、而不转换地址。

FPGA 中的 Chipscope 验证三个测试用例的目标地址分别为0x9000_0000、0x8000_1000和0x8005_4700。

我的预期是、由于这些地址超出了 BAR1的范围、因此根本不会发生传输。

请注意、MEMSPACE 全为零、因为它在 PCIe 示例程序中。

Bar1设置为0x9000_0000、RC_MODE、非预取、TYPE32、MEM。  

问题:

1)当突发传输到超出条范围(例如0x8000_1000)的地址时、我希望 RC 不接受数据、但它会将数据直接传输到该地址处的 SDRAM 中、而不会因入站转换而改变。  我们如何将入站传输的地址范围限制为 BAR1定义的范围?

2) 2)文档不清楚当 MEMACE 寄存器全为零时会发生什么情况:

   a)这意味着什么都翻译、什么也不翻译?

   b) MEMACE 中的存储器限制和基址是否为"之前"的转换值?

   c)限制值是否包含在内?  也就是说、如果 MEMSPACE 为0xa0008000、这是定义0x8000_0000到0xAFFF_FFFF 还是0x9FFF_FFFF 之间的空间?

从0x2180_1000开始的寄存器值: (XXXXXXXX =无关/未记录)

21801000:      XXXXXXXX  xxxxxxxx  xxxxxxxx xxxx00010000

21801010:      00000000 90000000 00000000 00000000

21801020:      00000000 00000000 00000000 00000000

21801030:      00000000 00000040 00000000 000001ff

谢谢!

Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    默认配置为 BAR0的情况下、是否可以接受该传输? 由于您的 SoC 正在运行 RC、因此根据我的知识、可以使用 BAR0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不启用 BAR0。 但是、正如我理解文档的那样、RC 模式下的 BAR0被限制在16KB I/O 和 MSI 空间内、所以看起来 BAR0与描述的现象无关。 (请参阅2.7.2.2:入站 BAR0 "完全专用于在 RC 和 EP 模式下访问应用寄存器、地址空间0。"