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.

[参考译文] AM5726:DMA (DREQ)和中断(IRQ)请求之间的相关性

Guru**** 2540720 points
Other Parts Discussed in Thread: AM5726

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1066748/am5726-dependency-between-dma-dreq-and-interrupt-irq-requests

部件号:AM5726

您好,

我和我的同事对 DMA 请求(REQ)和中断请求(IRQ)之间的相关性感到困惑。 我们的具体使用案例如下:

  • 我们正在将 AM5726引脚 A10配置为 GPIO8_23。
  • GPIO8引脚23上的上升边缘旨在从 DSP1触发 DMA,因此我们为 DSP1_EDMA 通道9配置参数集以执行所需的 DMA 传输。
  • 然后,我们将 CTRL_core_DMA_DREQ_8_9寄存器的 DMA_DSP1_DREQ_DREQ_9_IRQ_9字段设置为值194 (DMA_crossbar_194为 GPIO8_DREQ_EVT)。

此 DMA 传输正在运行,但只有当我们还通过设置 GPIO8 GPIO _RISINGDETECT 寄存器的位23和 GPIO8 GPIO _IRQSTATUS_SET_0寄存器的位23来启用 GPIO8引脚23的上升边缘中断检测时,该传输才有效。 如果我们不设置这些位,则不会出现 DMA。 这让我们感到困惑,因为就我们从 TRM 可以看出,DMA 请求(DREQ)和中断请求(IRQ)之间没有关系。 那么,为什么需要启用 IRQ 才能满足 DMA 请求? 我们更希望不必为 GPIO8引脚23启用上升边缘中断检测。

提前感谢您的帮助,致以诚挚的问候,
戴夫

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

    您好 Dave,

    来自外围设备的 DMA 交叉条输入是 DREQ_EVT。 对于 GPIO8模块,这是 GPIO8_DREQ_EVT。

    根据表16-6 设备 DREQ 与  TRM 的 DMA_Crossbar 输入的连接,以及表27-4 GPIO 硬件请求,GPIO8_DREQ_EVT 描述将其描述为事件/中断1。  这表明,DREQ_EVT 信号改变的条件似乎与将其配置为相应的第一个中断线相同。

    我在 TRM 中看不到任何其他暗示。

     图27-7中也可以看到相同的情况。 通用接口方框图 和 图27-8. 同步路径。

    作为 内部 GPIO 事件检测逻辑的一部分,绝对需要 GPIO RISINGDETECT 寄存器。 GPIO  IRQSTATUS_SET_0 将启用相应的中断信号。

    我希望您也在   对 DSP 软件中的 DSP_SYS_DMAWAKEEN0/DSP_SYS_DMAWAKEEN1寄存器进行编程。

    此致

    苏曼

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

    苏曼,你好,谢谢你的回复。

    [引用 userid="35368" url="~/support/processors- group/processors/f/processors- forum/1066748/am5726-Dependencion-between-dma-dma-dreq-and-interrupt-irq-requests/3948542#3948542]GPIO8_DREQ_EVT 描述将其描述为 EVT/supt1。  这表明,DREQ_EVT 信号发生变化的条件似乎与将其配置为相应的第一个中断线相同。

    感谢您指出这一点;也许我应该从一开始就理解“事件/中断1”的含义,但我承认我没有理解。

    因此,不幸的是,似乎无法获得第二个 GPIO 中断来触发 DMA 请求,因为只有“EVENT /RUUT1”是 DMA 交叉条的输入。 我之所以提出这一要求,只是因为我们的 Linux 开发人员说 TI Linux GPIO 驱动器(GPIA-OMA.c)不支持使用第二个 GPIO 中断, 在 Linux 中触发中断所需的 GPIO 气缸组8中有一个不同的引脚。 因此,他们的解决方法是修改 GPIO -OMAI.c,但他们对此不满意。 我在 DSP 方面工作,希望通过使用第二个 GPIO 中断来触发此 DMA 请求来帮助他们,但我现在知道这是不可能的。

    再次感谢您的帮助,致以诚挚的问候,
    戴夫

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

    您好,Dave,

    出现这两个中断主要是为了处理在运行独立操作系统时与两个 Cortex-A15内核独立运行的情况。

    从第27.1节“通用接口概述”中,  

    两个相同的子模块可以处理来自每个要使用的信道的同步中断请求
    在双处理器环境中独立运行。

    Linux 正在 SMP 模式下运行 Cortex-A15 MPU 子系统,因此只需要一条中断线路。 如果驱动程序需要同时支持两条中断线路,则肯定需要进行额外的更改。 换行可能更容易,但支持这两个中断可能不是直接中断。

    此致

    苏曼