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:R5F 和 PRU 之间的 DMA

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1523460/am2434-dma-between-r5f-and-pru

器件型号:AM2434

工具/软件:

我尝试使用 UDMA_SW_TRIGGER 示例工程在 AM2434 上执行块复制 DMA 基准测试。 该示例执行与 R5 内部存储器之间的传输到其共享存储器。 但是、我需要对 PRU 共享存储器到 R5 内部存储器之间传输的性能进行基准测试。 我认为 PRU 的共享存储器区域从 0x30010000 开始。

问题 1:我是否需要启用 PRU 来运行才能访问该存储器、或者我是否可以简单地定义一个新的存储器区域并将其附加到链接器脚本中?

问题 2:对 UDMA_SW_TRIGGER  示例工程进行此更改的最简单方法是什么?

问题 3:如果需要设置 PRU 内核(根据问题 1)、最简单的方法是什么? 我是否在 example.syscfg 文件中设置它?

请提供有关此问题的任何其他提示。

谢谢!

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

    尊敬的 Marshall:

    是、 AM243x 有 2 个相同的 PRU ICSSG 切片 (ICSSG0 和 ICSSG1)。  ICSSG0 共享 RAM 存储器 (64KB) 从 0x30010000 开始、您可以从 TRM 中的“PRU_ICSSG 全局存储器映射“部分了解有关不同 PRU 存储器的更多信息。

    R5F 可以直接访问 PRU 共享存储器。 您能否尝试从 R5F 直接读取/写入 PRU 共享 RAM、如果您遇到任何问题、敬请告知。

    此致、

    Nitika.

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

    Nitika,

    我同意 R5F 从 PRU 的 RAM 访问存储器时没有问题(0x3001.0000 - Data 64KB RAM2(共享)、TRM 的第 3289 页)、我已经向自己证明了这一点。 问题是让 DMA 从 R5 执行该操作。 具体指 BCDMA。 这里的用例是、我们有一个 PRU 在这里生成和写入数据、但我们需要 R5 来移动此数据、它可以移动、但直接移动时无法跟上 PRU。 因此、我正在进行这项 DMA 基准测试、以展示我们可以使用 DMA 进行哪种性能改进。

    起初、我认为我遇到的问题与链接器脚本或数据对齐有关、但深入探究后、我非常确定它与权限有关。 具体而言、DMA(从 R5 触发时)无法访问 PRU 的 RAM。

    有任何关于如何解决此问题的想法?

    **更多关于我在测试中看到的内容的详细信息**
    同样、我将使用 AM2434  UDMA_SW_TRIGGER 示例工程。 我更新了源缓冲区 gUdmaTestSrcBuf、其中使用了指向 PRU 数据 RAM2 (0x3001.0000) 的指针。 在调试模式下、我通过 App_udmaTriggerInit 函数获取第一次调用 UDMA_eventRegister。


    retVal = UDMA_eventRegister (drvHandle、gCh0TrEventHandle、&gCh0TrEventPrms);
    DebugP_ASSERT (UDMA_Sok == RetVal);

    它将–1 返回到 RetVal。 深入研究这个兔子洞、我看到这里出现了问题:

    APP_udmaTriggerInit -> UDMA_eventRegister -> UDMA_eventConfig(UDMA_event.c 的第 172 行)-> Sciclient_rmIrqSet (UDMA_event.c 的第 1052 行)

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

    尊敬的 Marshall:

    感谢您提供的信息。  

    我正在将您的问题转发给我们的 DMA 专家、以便他们对此发表更多意见、请留出一些时间回复您。

    此致、

    Nitika.

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

    您好、 Marshall、

    如果权限有问题、R5F 内核可能会进入例外状态、或者不会将数据从源缓冲区移动到目标 PRU 缓冲区。

    您能否分享示例代码以查看您的更改?

    此致、

    Anil.