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.

[参考译文] TMS320C6746:处理器是否每个通道支持多个 EDMA 传输完成中断?

Guru**** 2557650 points
Other Parts Discussed in Thread: OMAP-L138

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/621040/tms320c6746-does-the-processor-support-more-than-one-edma-transfer-completion-interrupt-per-channel

器件型号:TMS320C6746
主题中讨论的其他器件:OMAP-L138

您好!

技术参考手册提到两个 EDMA 通道控制 器 EDMA3_0_cC0和 EDMA3_1_cC0具有五个中断、如下所示

EDMA3_0_cC0:

  • EDMA3_0_cC0_INT0
  • EDMA3_0_cC0_INT1
  • EDMA3_0_cC0_INT2
  • EDMA3_0_cC0_INT3
  • EDMA3_0_cC0_ERRINT

同样、 对于 EDMA3_1_cC0也是如此。 但是、每个通道控制器都有一个 DSP 中断(EDMA3_0通道控制器0影子区域1传输完成中断的值为8、EDMA3_1通道控制器0影子区域1传输完成中断的值为91)。  

该手册还指出了这一点  

"EDMA3代表所有 DMA/QDMA 通道在每个影子区域生成一个完成中断"

这非常令人困惑。  

这是否意味着只有2个 EDMA 传输完成中断? 如果没有、那么应该如何配置中断、以便能够接收来自不同影子区域的多个中断?

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

    我已将其转发给软件团队。 他们的反馈应发布在此处。

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

    Parul、

    由于 C6746只有一个要中断的内核、因此只有一个阴影区域具有任何意义。 正如您在上面几乎完全提到的那样、来自 EDMA3的两个中断出现在 DSP 的 INTC 中断控制器的中断源列表中:EDMA3_0_cC0_INT1和 EDMA3_1_cC0_INT1。 对于该器件的 OMAP-L138版本、另一个 EDMA3中断编号用于馈送到 ARM 内核的影子区域。

    [引用 user="Parul Bhatt "] EDMA3代表所有 DMA/QDMA 通道在每个影子区域生成一个完成中断"[/quot]

    每个通道控制器将其所有完成标志组合到对 DSP 至关重要的单个影子区域中断中。 您可以使用屏蔽位来选择该组合中包含的位、然后 ISR 将读取寄存器以确定哪些 DMA/QDMA 通道设置其完成标志。

    [引用 user="Parul Bhatt "]这是否意味着只有2个 EDMA 传输完成中断?

    EDMA3通道控制器只有两个单独的中断信号发送给 DSP、每个信号发送一个。

    [引用 USER="Parul Bhatt ]如果不是、那么应该如何配置中断、以便能够接收来自不同影子区域的多个中断?

    您不能使用其他阴影区域。 它们是 EDMA3模块设计的一部分、但不是 C6746所需的所有信号。 您可以对阴影区域1执行所需的一切操作。

    我们提供了一些培训材料、介绍了如何将 EDMA3与 C674x 系列结合使用。 他们四处走动、但您可以从 TI.com 开始尝试从我们的培训门户进行搜索。

    此致、
    RandyP

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

    您好、Randy、

    我正在与 Parul 合作解决这个问题、并为您或其他任何人提出后续问题。  我们希望有两个单独的 EDMA 功能事件生成中断... McASP 和 UART1。  如 C6746数据手册中所示、SPRS591C、表5-12 EDMA 同步事件、这两个事件都仅由通道控制器0覆盖。  但是、出于各种设计原因、我们确实希望将它们放在单独的 EDMA 控制器上。  例如、是否有任何方法可以让 UART1同步事件向通道控制器1报告?  否则、我们将在同一控制器上混合更高优先级和更低优先级的功能、并且需要针对所有组合的 McASP 和 UART1中断执行整个 IPR 读取循环。

    谢谢、

    Robert

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

    数据手册告诉您器件的工作原理、您非常了解它、这对于许多人来说是一项困难的任务。 这些事件硬编码到 DMA 通道、如 EDMA 同步事件表所示。 我们有 DSP、其中的事件可映射到任何通道、但许多事件像这个一样进行硬编码。

    请解释您的"各种设计原因"、因此我们可以帮助您找到一种方法来执行您需要执行的操作、即使无法按照您要求的方式完成-即重新设计 DSP。

    例如、您可以编写自己的 EDMA3_INTERRUPT_DEPTMUSTERS 来解析 IPR、并充分利用您对仅有两个可能生成中断的 DMA 通道存在的更深入了解。 如果 C 编译器的速度不够快、您甚至可以在汇编语言中编写它。 您可以使其自中断、这样、如果低优先级 ISR 正在运行、另一个 EDMA3中断可以优先于第一个中断并运行高优先级 ISR。 如果这是您想要执行的操作。 它都是软件、因此您可以编写它、无论您希望它能正常工作。 因此、您可以通过这种方式减少"整个 IPR 读取循环"。 不过、我建议您继续使用 C 语言-编译器非常好、汇编程在大多数情况下并不是很有吸引力的选择。

    您的 McASP 和 UART1端口使用什么数据速率? McASP 数据组件的大小是多少(越大越好)?

    顺便说一下、欢迎您在我的另一篇文章中忽略"TI 认为已解决"标志、因为此主题尚未解决。 论坛不允许我关闭它。

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

    [引用 user="RandyP"]

    数据手册告诉您器件的工作原理、您非常了解它、这对于许多人来说是一项困难的任务。

    [/报价]

    EDMA 是 C67XX 处理器中最复杂的部分之一。  即使在几年之后,我每次都被提醒,一般没有快速的答案:)

    [引用 user="RandyP"]

    请解释您的"各种设计原因"、因此我们可以帮助您找到一种方法来执行您需要执行的操作、即使无法按照您要求的方式完成-即重新设计 DSP。  

    [/报价]

    一般而言、我们希望从高级功能的角度将采集过程(McASP)和支持功能(UART)分开。  相互混淆会引起人们对它们之间的干扰的担忧、即使这种干扰不合法也是如此。  此外、它还需要一种更集中的方法来处理它们、即在同一例程/源文件中通过 IPR 读取和处理所有相关功能。  理想情况下、在我看来/首选的设计方法中、它们是单独的 EDMA 控制器、具有用于处理相关 EDMA 中断的独立进程/源文件。  这也会导致更直接的占先方案。  但我现在知道、C674x 不可能实现、我只想对其进行双重检查、我们将相应地进行处理。  

    [引用 user="RandyP"]

    例如、您可以编写自己的 EDMA3_INTERRUPT_DEPTMUSTERS 来解析 IPR、并充分利用您对仅有两个可能生成中断的 DMA 通道存在的更深入了解。 如果 C 编译器的速度不够快、您甚至可以在汇编语言中编写它。 您可以使其自中断、这样、如果低优先级 ISR 正在运行、另一个 EDMA3中断可以优先于第一个中断并运行高优先级 ISR。 如果这是您想要执行的操作。 它都是软件、因此您可以编写它、无论您希望它能正常工作。 因此、您可以通过这种方式减少"整个 IPR 读取循环"。 不过、我建议您继续使用 C 语言-编译器非常好、汇编程在大多数情况下并不是很有吸引力的选择。

    [/报价]

    感谢您的建议。  当然、比具有单独的 EDMA 处理程序、并通过优先级设置让 BIOS 处理占先稍微复杂一点。 您是否知道有任何可用的示例代码、它们具有类似的功能?

    [引用 user="RandyP"]

    您的 McASP 和 UART1端口使用什么数据速率? McASP 数据组件的大小是多少(越大越好)?

    [/报价]

    McASP 为10K、逐样本运行、UART 速度较慢、但需要跟上 TX 和 RX 缓冲区的步伐。  

    谢谢、

    Robert


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

    [引用 user="Robert56682">我们希望有两个单独的 EDMA 功能事件生成中断... McASP 和 UART1

    我看到的大多数 McASP 驱动程序都使用多个参数集和完成中断来处理乒乓缓冲。  您是否不是这样?  

    [引用 USER="Robert56682"]如 C6746数据手册 SPRS591C 表5-12 EDMA 同步事件中所示,这两个事件都只能由通道控制器0覆盖。

    正如 Randy 提到的、这在硬件中是固定的。

    [引用 user="Robert56682"]但是,我们真的希望将它们放在单独的 EDMA 控制器上

    很抱歉、这是不可能的。

    [引用 USER="Robert56682"]否则,我们将在同一个控制器上混合较高和较低优先级的功能,并且需要针对所有组合的 McASP 和 UART1中断执行整个 IPR 读取循环。

    如果关联的事件处理程序是 SWI 或任务、您可以通过调度程序轻松地对其进行优先级排序。  这是我的建议。

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

    [引用用户="Brad Griffies"]

    我看到的大多数 McASP 驱动程序都使用多个参数集和完成中断来处理乒乓缓冲。  您是否不是这样?  

    [/报价]
    你(们)好、Brad。  是的、因此实际上有4个相关的中断事件- RX 和 TX 都有 Ping 和 PONG  

    [引用用户="Brad Griffies"]

    正如 Randy 提到的、这在硬件中是固定的。
    很抱歉、这是不可能的。
    [/报价]
    10-4.  我没有这么认为、只是进行了双重检查。

    [引用用户="Brad Griffies"]

    如果关联的事件处理程序是 SWI 或任务、您可以通过调度程序轻松地对其进行优先级排序。  这是我的建议。
    [/报价]
    听起来不错。  只是为了确认我理解... 单个 EDMA 中断处理程序将用于简单地解析 IPR、然后立即生成 SWI 或任务、以处理单独的功能块?、在我们的情况下为 McASP 或 UART。  不过、一个复杂的问题是、我们的 McASP RX 处理程序正在逐样本为 McASP TX 处理程序生成一个值。  通过将其从硬件处理程序本身中删除、我会担心丢失所需的时序、即基于最新 RX 错过了下一个 TX 的更新、这会使我们的设计停止。  不过、在这种情况下、我想可以将所有 McASP 处理直接保留在 HWI 处理程序中、并为 EDMA 处理的较低优先级 UART 部分生成 SWI 或任务。
    谢谢、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Robert56682">只是为了确认我理解... 单个 EDMA 中断处理程序将用于简单地解析 IPR、然后立即生成 SWI 或任务、以处理单独的功能块?

    是的。

    [引用 USER="Robert56682"]不过,一个复杂的问题是,我们的 McASP RX 处理程序正在根据样本为 McASP TX 处理程序生成一个值。

    如果您按样片进行操作、那么使用 EDMA 是否有很大的好处?

    [引用 USER="Robert56682]通过从硬件处理程序本身中删除该内容、我会担心丢失所需的时间、即基于最新 RX 错过了下一个 TX 的更新、这会使我们的设计停止运行。  不过、在这种情况下、我想可以将所有 McASP 处理直接保留在 HWI 处理程序中、并为 EDMA 处理的较低优先级 UART 部分生成 SWI 或任务。[/引用]

    同意。  如果某些部件在 HWI 中存在、而其他部件在 SWI/Task 中存在、则会变得有点乱、不过如果您的最后期限很短、则可能有必要这样做。

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

    [引用用户="Brad Griffies"]

    如果您按样片进行操作、那么使用 EDMA 是否有很大的好处?

    [/报价]

    问得好。  但我们使用 EDMA 链接乒乓功能来处理立体声编解码器的传入双 ADC 值。  目前我不清楚这是否仍然能够在没有这种 EDMA 功能的情况下有效地实现。

    [引用用户="Brad Griffies"]

    同意。  如果某些部件在 HWI 中存在、而其他部件在 SWI/Task 中存在、则会变得有点乱、不过如果您的最后期限很短、则可能有必要这样做。
    [/报价]
    但我认为它仍然会让我更好地控制占先?正如您指出的、与在 HWI 中同时拥有 McASP 和 UART 的处理程序相反、也就是通过生成一个(较低优先级的 UART)
    谢谢、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Robert56682]不过,一个复杂的问题是,我们的 McASP RX 处理程序正在逐样本为 McASP TX 处理程序生成一个值。 [/报价]

    该值是如何/何时生成的?  是否可以通过链式 EDMA 传输来处理此副本、这样您就不必担心 CPU 及时处理它了?

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

    [引用用户="Brad Griffies"]

    该值是如何/何时生成的?  是否可以通过链式 EDMA 传输来处理此副本、这样您就不必担心 CPU 及时处理它了?

    [/报价]
    这就是我要做的- RX 和 TX 都是链式乒乓模式。  但 RX 是在 EDMA HWI 中处理的唯一 RX。  RX Ping 和 PONG 处理程序分别填充 TX Ping 和 PONG 缓冲器、即 RX 正在执行 TX 输出所需的所有计算。  似乎与您的建议相同?
    谢谢、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Robert56682"]似乎与您建议的内容相同?

    是的、我认为是这样。  但是、鉴于音频数据速率非常低、我希望在 SWI/Task 内进行此处理不会导致任何实时问题。  我认为、如果您能够在 SWI/Task 中保持所有处理、那么您的代码结构会更清晰。

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

    [引用用户="Brad Griffies"]

    是的、我认为是这样。  但是、鉴于音频数据速率非常低、我希望在 SWI/Task 内进行此处理不会导致任何实时问题。  我认为、如果您能够在 SWI/Task 中保持所有处理、那么您的代码结构会更清晰。

    [/报价]

    听起来不错、这就是我要做的。

    谢谢、

    Robert

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

    原始问题的后续操作-如果使用 EDMA 控制器0、是否可以为 McASP 和 UART DMA 事件使用不同的队列?即事件队列0上的所有 McASP 事件和队列1上的所有 UART 事件。 查看我的 McASP 代码、我在配置过程中看到如下所示的语句:

    CSL_FINST (EDMA3->DMAQNUM[EDMA_queue_RX]、EDMA3CC_DMAQNUM_E0、Q0);
    CSL_FINST (EDMA3->DMAQNUM[EDMA_queue_TX]、EDMA3CC_DMAQNUM_E1、Q0)

    其中 EDMA_queue_RX 和 EDMA_queue_TX 都为0。

    我想知道、如果可以对 UART 事件使用队列1、那么在控制器0上、相应的 UART EDMA 配置是否如下所示:

    CSL_FINST (EDMA3->DMAQNUM[EDMA_queue_RX_UART1 ]、EDMA3CC_DMAQNUM_E0、Q1);
    CSL_FINST (EDMA3->DMAQNUM[EDMA_queue_TX_UART1 ]、EDMA3CC_DMAQNUM_E1、Q1)

    在这里、EDMA_queue_RX_UART1和 EDMA_queue_TX_UART1将为1?

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

    是的、没错。