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.

关于C66X dsp 的EDMA3的一点疑问



我的demo板上有3个EDMA3CC,每个CC有不同的channel,这些channel提供给外围设备,手动或者link 事件触发edma工作

请问每个channel与外设之间的对应关系在哪儿能够查到?假如TCP3D会使用哪个channel?

我在edma sdk的sample代码中看到:

tcc = EDMA3_DRV_TCC_ANY;   

chId = EDMA3_DRV_DMA_CHANNEL_ANY;

     /* Request any DMA channel and any TCC */ 

    if (result == EDMA3_DRV_SOK)

         { 

        result = EDMA3_DRV_requestChannel (hEdma, &chId, &tcc,

                                         (EDMA3_RM_EventQueue)0,

                                             &callback1, NULL);

         }

请问这里的EDMA3_DRV_TCC_ANY和EDMA3_DRV_DMA_CHANNEL_ANY 如何理解?

tcc 和chid能否使用指定的数字?如何使用?

多谢了

  • 每个EDMA设备对应的channel可能是固定的,也可能不是,如TCP3D对应的输入EDMA channel不是固定的,其输出事件对应的EDMA channel则是固定的,channel映射具体请看相应器件的data mannual中的EDMA章节;

    EDMA channel与TC的映射关系是可配的,具体选择哪个channel需要根据应用决定,选择哪个TC也可以由应用决定。

  • 多谢你的回复,不过还是不明白tcc是什么意思?

    跑了一下pdk提供的TCP3D的例子:

    [C66xx_1] EDMA3 LLD Initialization complete (TPCC #2, Region #3)
    [C66xx_1] EDMA3 Channels opening started...
    [C66xx_1]     EDMA channel 0 open (result = 0)
    [C66xx_1]     EDMA channel 1 open (result = 0)
    [C66xx_1]     EDMA channel 32 open (result = 0)
    [C66xx_1]     EDMA channel 33 open (result = 0)
    [C66xx_1]     EDMA link channel 400 open (result = 0)
    [C66xx_1]     EDMA link channel 401 open (result = 0)
    [C66xx_1]     EDMA link channel 402 open (result = 0)
    [C66xx_1]     EDMA link channel 403 open (result = 0)
    [C66xx_1]     EDMA link channel 404 open (result = 0)
    [C66xx_1]     EDMA link channel 405 open (result = 0)
    [C66xx_1]     EDMA link channel 406 open (result = 0)
    [C66xx_1]     EDMA link channel 407 open (result = 0)
    [C66xx_1]     EDMA link channel 408 open (result = 0)
    [C66xx_1]     EDMA link channel 409 open (result = 0)
    [C66xx_1]     EDMA link channel 410 open (result = 0)
    [C66xx_1]     EDMA link channel 411 open (result = 0)
    [C66xx_1]     EDMA link channel 412 open (result = 0)
    [C66xx_1]     EDMA link channel 413 open (result = 0)
    [C66xx_1]     EDMA link channel 414 open (result = 0)
    [C66xx_1]     EDMA link channel 415 open (result = 0)
    [C66xx_1]     EDMA link channel 416 open (result = 0)
    [C66xx_1]     EDMA link channel 417 open (result = 0)
    [C66xx_1]     EDMA link channel 418 open (result = 0)
    [C66xx_1]     EDMA link channel 419 open (result = 0)
    [C66xx_1]     EDMA link channel 420 open (result = 0)
    [C66xx_1]     EDMA link channel 421 open (result = 0)
    [C66xx_1] EDMA3 Channels opening complete
    [C66xx_1] TCP3 Decoder Driver Initialization sequence started...
    [C66xx_1]      Tcp3d_getNumBuf() passed
    [C66xx_1]      Tcp3d_getBufDesc() passed
    [C66xx_1]      Tcp3d_init() passed
    [C66xx_1] TCP3 Decoder Driver Initialization sequence complete
    [C66xx_1]

    前面的channel 0 1 32 33能够从DATA MANUAL中找到,但是后面的的400-421是从哪儿来的?根据手册说明CC0:16个channel,CC1/CC2:64个channel

    那400-421是从哪儿来的?

    另外,关于shadow region ,不是很清楚,这些channel和Region之间对应关系是什么?如何使用?

    请问有没有比较详细的中文文档说明或者例子也可以,多谢了

  • 对于MCSDK的额那个例程有同样的问题,我估计是为了传递其他数据段。但是也是猜测