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.

[参考译文] AM62D-Q1:C7x DRU 无限期等待

Guru**** 2872500 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1635626/am62d-q1-c7x-dru-waits-indefinitely

器件型号: AM62D-Q1
主题: SysConfig 中讨论的其他器件

您好、

我正在寻找与 C7x 上的 DRU(数据路由单元)相关的详细文档或参考资料。 我找不到足够的信息、您能告诉我相关的文档或指南吗?

与此同时、我正在 C7x 上使用 DRU 处理 FreeRTOS 应用。

我首先参考了以下网址提供的示例:awe_sdk_am62dx_11_02_23_10\MCU_PLUS_SDK\am62dx\source\tisp\test\MISC_TISP_blockCopy_superNode\TISP_blockCopy_superNode_test.cpp

该示例可以正确编译和运行。 但是、在我的应用程序中、我遇到了 DmaUtilsAutoInc3d_wait () 中的以下行无限期挂起的问题:

while ((eflRegisterVal 和 waitWord)!= waitWord)

数据传输本身似乎已正确进行—我可以看到源缓冲区数据已复制到目标缓冲区。 但是、不满足完成/等待条件、导致函数被阻止。

您能否帮助确定导致此问题的原因、并分享任何可用的 DRU 文档?

以下是有关设置的详细信息:

EVM - AM62D

SDK 版本 — 11.02.23.10

提前感谢。

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

    尊敬的 Gayathri:
    我正在查看该查询。 请在一天或两天内回复。

    谢谢、
    Shreyansh

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

    尊敬的 Gayathri:
    您能否分享有关您的软件的更多详细信息? 您是否使用任何其他也使用 UDMA 的外设?

    谢谢、
    Shreyansh

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

    尊敬的 Shreyansh:

    我正在使用 DRU 执行从源缓冲区到目标缓冲区的简单内存复制。
    共享代码旨在演示我如何在应用程序中使用 API、可能未经过完全验证或不正确。

    以下是我所遵循的顺序:

    使用 DmaUtilsAutoInc3d_init() 初始化 DRU
    设置转移属性 (transferDim、transferProp)
    使用 DmaUtilsAutoInc3d_prepareTr() 准备 TR
    使用 DmaUtilsAutoInc3d_configure() 配置通道
    使用 DmaUtilsAutoInc3d_trigger () 触发传输
    使用 DmaUtilsAutoInc3d_wait () 等待完成

    问题:

    代码卡在 DmaUtilsAutoInc3d_wait () 中,从不返回
    这意味着不会收到传输完成事件/中断

    要回答有关使用 UDMA 的其他外设的问题:

    这个 DRU 传输是一个更大应用的一部分、在这个应用中、我还使用 McASP 来处理音频数据。

    谢谢、

    Gayathri  

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

    尊敬的 Gayathri:

    您能否使用中断号 25 来告诉我它是否有效? MCASP 也使用中断号 32、该中断号在应用程序中可能发生冲突。

    [报价 userid=“688166" url="“ url="~“~/support/audio-group/audio/f/audio-forum/1635626/am62d-q1-c7x-dru-waits-indefinitely/6313653
         cfgClec.c7xEvtNum     =(i - dru_input_start)+ 32
    [/报价]

    而不是此处的 32、则使用 25。

    此外、您是否还可以在 SysConfig 中的 UDMA 中启用 skipGlobalEvenReg 标志?

    谢谢、
    Shreyansh


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

    尊敬的 Shreyansh:

       我使用了中断号 25 而不是 32。 现在它已经开始工作了。
    感谢您的指导。  

       请您向我提供有关 DRU 的相关文档。
       我想进一步了解它。

    谢谢、

    Gayathri    

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

    尊敬的 Gayathri:
    感谢您的确认。

     您能否向我指出有关 DRU 的相关文档。
       我想进一步了解它。

    让我在内部进行检查、然后返回给您。

    谢谢、
    Shreyansh

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

    您好、
    感谢您先前的解释—它帮助我解决了这个问题。

    在前进的同时、我还有另一个疑问。 我在一个 DRU 通道中配置了多个 TR。

    1. 是否可以在同一信道内一次触发一个 TR?

    2. 是否DmaUtilsAutoInc3d_trigger()触发单个呼叫中所有配置的 TR?

    3. 如果我一次只想触发一个 TR、是否需要设置任何特定配置或标志?

    您能否说明在这种情况下 TR 触发是如何工作的?

    谢谢、

    Gayathri