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.

AM5728: DSP EDMA分配

Part Number: AM5728

SYS_EDMA_TPCC
DSP1_EDMA_TPCC
DSP2_EDMA_TPCC
DSP_EDMA_TPCC

其中,SYS_EDMA_TPCC是否可以被DSP使用?

DSP_EDMA_TPCC 和DSP1_EDMA_TPCC/DSP2_EDMA_TPCC 有什么区别?

  • SYS_EDMA_TPCC是否可以被DSP使用?

    可以,SYS_EDMA可以被所有的核使用。

    DSP_EDMA_TPCC 和DSP1_EDMA_TPCC/DSP2_EDMA_TPCC 有什么区别?

    各个核私有的。

  • 意思是2个DSP核都有DSP_EDMA_TPCC?DSP1和DSP2同时调用DSP_EDMA_TPCC不会造成冲突吗?

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* EDMA3 TPCC region. */
    #define EDMA3_CC_REGION (1U)
    /* EDMA3 Event queue number. */
    #define EVT_QUEUE_NUM (0U)
    uint32_t edma_address = CSL_DSP_DSP_EDMA_CC_REGS;
    void uart_task(UArg a0, UArg a1)
    {
    /*Pad configuration and PRCM enable*/
    padConfig_prcmEnable();
    /*Configure the EDMA clock */
    PlatformEDMAWkupDepEnable();
    /* Do EDMA init Done once in the beginning of application */
    EDMAsetRegion(EDMA3_CC_REGION);
    EDMA3Init(edma_address, EVT_QUEUE_NUM); // SOC_EDMA_TPCC_BASE_VIRT CSL_DSP_DSP_EDMA_CC_REGS
    ...
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    typedef enum
    {
    CSL_XBAR_DMA_CPU_ID_SYSTEM_DMA,
    CSL_XBAR_DMA_CPU_ID_EDMA,
    CSL_XBAR_DMA_CPU_ID_DSP1_DMA,
    CSL_XBAR_DMA_CPU_ID_DSP2_DMA
    } CSL_XbarDmaCpuId;

    问题1:DSP2的EDMA_TPCC访问 CSL_DSP_DSP_EDMA_CC_REGS ,若要触发UART1_TX 事件,使用CSL_xbarDmaConfigure()函数进行事件映射,

    void CSL_xbarDmaConfigure(CSL_XbarDmaCpuId dmaRegType, Uint32 dmaCrossbarInputNo, Uint32 dmaDreqToMapTo);

    其中第一个参数是配置 CSL_XBAR_DMA_CPU_ID_DSP2_DMA吗?

    问题2:CSL_xbarDmaConfigure(CSL_XBAR_DMA_CPU_ID_DSP2_DMA, DMA_XBAR_INST_TX,
    DMA_XBAR_INST_TX_SRC);

                DMA事件映射后,DMA通道是否必须为 CSL_xbarDmaConfigure(...)的第三个参数 dmaDreqToMapTo ?

  • 其中第一个参数是配置 CSL_XBAR_DMA_CPU_ID_DSP2_DMA吗?

    typedef enum
    {
    CSL_XBAR_DMA_CPU_ID_SYSTEM_DMA,
    CSL_XBAR_DMA_CPU_ID_EDMA,
    CSL_XBAR_DMA_CPU_ID_DSP1_DMA,
    CSL_XBAR_DMA_CPU_ID_DSP2_DMA
    } CSL_XbarDmaCpuId;

      DMA事件映射后,DMA通道是否必须为 CSL_xbarDmaConfigure(...)的第三个参数 dmaDreqToMapTo ?

    映射事件需一致。

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /**
    * @file bsp_uart_edma.c
    *
    * @brief This file tests the UART driver APIs in EDMA mode.
    *
    */
    #include <stdio.h>
    #include <string.h>
    #include <stdint.h>
    /* XDCtools Header files */
    #include <xdc/std.h>
    #include <xdc/cfg/global.h>
    #include <xdc/runtime/Error.h>
    #include <xdc/runtime/System.h>
    #include <xdc/runtime/Log.h>
    #include <xdc/runtime/Diags.h>
    /* BIOS Header files */
    #include <ti/sysbios/BIOS.h>
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    目前,我已实现UART EDMA发送数据,但是存在BUG,只能发送8-65字节的数据,若发送数据长度小于8字节,则无法发送数据,发送数据长度大于65字节,则只能发送65字节,超出部分的数据丢失。能帮我看下我的配置哪里出问题吗?

    我怀疑是UART FIFO配置异常,还有就是,PaRAM参数的opt[DAM],应该设置为INCR还是FIFO,若设置为FIFO,则FWID应该设置为多少?

  • 跟这个帖子中的现象有点像,参考以下帖子的讨论看一下,可能是FIFO下EDMA配置的问题。

    https://e2echina.ti.com/support/processors/f/processors-forum/190473/c6678-dma/586483

x 出现错误。请重试或与管理员联系。