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.

[参考译文] TDA4VM:(C7X)同时使用 uDMA 多通道(DRU)

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1203932/tda4vm-c7x-using-udma-multi-channels-dru-simultaneously

器件型号:TDA4VM

您好!

SDK 版本:SDK-RTOS-J721E-EVM-08_05_00_11

我们 试图触发 多个传输、每个传输在一个 单独的通道上(启用了 DRU)、并且 我们不使用 appUdmaCopyNDWait 函数 、而是使用自定义的 appUdmaCopyNDIsFinished、我们在其中检查传输状态而不等待它完成。 这样做是为了避免在单个通道上迭代投射多个复制操作、并希望  通过 uDMA DRU 通道获得更好的性能。

复制操作可以正常工作、但是与经典的 loop-TriggerAndWait 版本相比、性能没有任何改进。

这是 DMA 的预期行为吗? 或者是否有办法 修复 我们的解决方案并使 DMA 实现更好的性能?

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

    您好、Amine:

    我没有理解、  您希望 在这里提高哪些性能? 另外、 在 未等待传输完成的情况下、未获得传输状态检查的内容意味着什么? 您是在等待 TR 响应还是其他东西?

    在多通道中使用 DRU 可以提供更好的 DDR BW。 但我不确定您在这里期望的性能改进。

    此致、

    Brijesh   

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

    尊敬的 Brijesh:

    下面是我们的规范的更好解释:

    • 我们将使用 SDK 提供的 APP_UDMA 驱动程序。
    • 我们将使用8个 DRU 通道(CHANNEL_IDx >=(APP_UDMA_ND_CHANNEL_MAX/2 ))
    • 我们尝试一次执行8个复制操作。

    下面是我们的代码的状态机:

    • 第1步:
      • 对于每个通道:使用 appUdmaCopyNDInit 初始化复制操作
    • 第2步:
      • 对于每个通道: 使用 appUdmaCopyNDTrigger 触发复制操作
    • 第3步:
      • 对于每个通道:使用 appUdmaCopyNDIsFinished 检查复制操作状态
        • 如果操作已完成、并且我们还有剩余数据要在给定通道上复制:
          • 初始化并触发(appUdmaCopyNDInit + appUdmaCopyNDTrigger)剩余数据的复制操作。
        • 如果操作已完成、并且没有任何剩余数据、则复制操作将在给定通道上完成 、并保持在步骤3中。
      • 我们返回的所有通道上的所有复制操作都完成了。

    我们 实现此状态机是为了避免 连续执行8个复制操作、而是等待每个状态机、这意味着:

    •   对于每个通道:
      • 使用 appUdmaCopyNDInit 初始化复制操作
      • 使用 appUdmaCopyNDTrigger 触发复制操作
      • 等待操作完成使用 appUdmaCopyNDWait

    通过一次触发所有这些操作而不等待它们逐一完成、我们希望从 DRU 通道获得更好的复制性能。

    我希望这能让你更好地 理解我之前的评论。

    此致

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

    您好、Amine:

     您要传输的数据大小是多少? 所有传输的大小是否不同? 另外、您在并行传输和顺序传输之间看到的性能差异是什么?  

    此致、

    Brijesh

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

    尊敬的 Brijesh:

    我们将 在每个通道上复制400 * 1024字节、并使用8个 DRU 通道

    并行传输 513 us
    顺序传输 555我们

    因此两者的性能完全相同。

    应该注意的是、所有复制操作都是从 DDR 到 DDR 完成的。

    此致