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.

[参考译文] AM2434:PCIe

Guru**** 2398695 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1286243/am2434-pcie

器件型号:AM2434

您好、TI!

我们致力于

AM243x

最新 SDK :在 PCIe 上为09.00.00。

根据示例 PCIe msi 中断、

  • EP 初始化一个较大的缓冲区(256KB)
  • RC 会读取大缓冲区16B x 16B 并复制自身的存储器。

我们观察到一些测量延迟的不一致结果:

在第一种情况下:

#define READ_BUF_SIZE 4

"memcpy (RC_SRAM_buff、transBufAddr + sizeof (uint32_t)* k * READ_BUF_SIZE、READ_BUF_SIZE * sizeof (uint32_t);"

结果是 8us

在第二种情况下:

uint32_t l = 4;

memcpy (RC_SRAM_buff、transBufAddr + sizeof (uint32_t)* k * READ_BUF_SIZE、l * sizeof (uint32_t);

延迟结果为20us

我们在调试逐步过程中检查 asm memcpy、并且我们看到这两个代码之间的 asm 存在一些差异。 我们希望了解:

  • 从16字节的 PCIE0_DAT0区域执行 memcpy 时、PCIe 控制器是执行4 TLP 读取操作4B 还是执行1个 TLP 读取操作16B?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,天一,

    从16字节的 PCIE0_DAT0区域执行 memcpy 时,PCIe 控制器是执行4个4B 的 TLP 读取操作,还是执行1个16B 的 TLP 读取操作?

    我没有关于 PCIe 控制器如何运行的那么高的详细程度、也没有真正看到当所呈现的变化从硬编码到局部变量时、两者之间的差异会对延迟产生怎样的影响?

    此致、

    拉尔夫·雅各比