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 通道在复制模式2下无限期等待_EFR 事件

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1254591/tda4vm-c7x-udma-dru-channel-waits-indefinitely-for-__efr-event-in-copy-mode-2

器件型号:TDA4VM

SDK 版本: ti-processor-sdk-rtos-j721e-evm-08_06_00_12

DMA 驱动程序: vision_apps/utils/uDMA

您好!

我正在 使用几个 DRU 通道实现以下场景:

  • 步骤1:使用"appUdmaCopyNDGetHandle"初始化第1个 DRU 通道。
  • 步骤2:  使用"appUdmaCopyNDGetHandle"初始化第2个 DRU 通道。
  • 第3步:对于 N 次迭代:  
    • Step3_1:使用 "copy_mode" 0、使用第一个通道将 srcBuffer1复制到 dstBuffer1。
    • Step3_2: 使用   "copy_mode" 0、使用第二个通道将 srcBuffer2复制到 dstBuffer2。
    • 步骤3_3: 在 PING_PONG 中、使用 "copy_mode"使用第1个和第2个通道将 srcBuffer3复制到 dstBuffer3  2.
  • 步骤4:使用"appUdmaCopyNDReleaseHandle"取消初始化第一个 DRU 通道。
  • 步骤5:  使用"appUdmaCopyNDReleaseHandle"禁用第2个 DRU 通道。

在执行 Step3_3期间、DRU 通道似乎随机挂起、并 无限期地等待__EFR 事件。

此问题仅发生在步骤3_3中、并且仅在我们切换到 COPY_MODE 2时才会发生。

此致。

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

    您好!  

     我之前的评论的后续行动。

    当 DRU 通道随机搜索时、__ EFR 事件寄存器值始终为0、不会报告任何事件。

    该值可通过以下方式检索:

    volatile uint64_t eflRegisterVal =  _get_indexed (__EFR、0);
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

     我之前的评论的后续行动。

    在位于"vision_apps/utils/udma/app_udma_utils.c"  src 文件中的"appUdmaTrpdInit"函数中、我们添加了以下修改:

    对于 COPY_MODE 0:

    • 将 UDMAP_TR_FLAGS_TRIGGER0设置为 CSL_UDMAP_TR_FLAGS_TRIGGER0  
    • 将  UDMAP_TR_FLAGS_EOL 设置为  CSL_UDMAP_TR_FLAGS_EOL_MATCH_SOL_EOL

    下面是代码:

     if(copy_mode == 0)
        {
            // pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_EVENT_SIZE, CSL_UDMAP_TR_FLAGS_EVENT_SIZE_COMPLETION);
            // pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_TRIGGER0, CSL_UDMAP_TR_FLAGS_TRIGGER_NONE);
            // pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_TRIGGER0_TYPE, CSL_UDMAP_TR_FLAGS_TRIGGER_TYPE_ALL);
            pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_EVENT_SIZE, CSL_UDMAP_TR_FLAGS_EVENT_SIZE_COMPLETION);
            pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_TRIGGER0, CSL_UDMAP_TR_FLAGS_TRIGGER_GLOBAL0);
            pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_TRIGGER0_TYPE, CSL_UDMAP_TR_FLAGS_TRIGGER_TYPE_ALL);
            pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_EOL, CSL_UDMAP_TR_FLAGS_EOL_MATCH_SOL_EOL);
        }
        else if(copy_mode == 1)
        {....

    这似乎解决了复制模式0和2之间切换的问题、但我们希望得到 TI 的确认。

    此致

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

    正在解锁该 TT。