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.

[参考译文] TMS320C6657:如何通过 EDMA 将数据从非连续地址传输到连续地址

Guru**** 2458730 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1481343/tms320c6657-how-to-transfer-data-from-non-contiguous-addresses-to-contiguous-addresses-through-edma

器件型号:TMS320C6657

工具与软件:

大家好、TI 的工程师

我们目前正在使用 EDMA 来实现一些软件要求。 我们希望使用 EDMA 通过单个 EDMA 触发器、将数据从非连续地址传输到指定的存储器地址。 但是、我们在此过程中遇到了一些问题
1.我们在线发现、C6657的 EDMA 支持源地址索引模式、该模式将地址内容存储在数组中、并将此数组分配给参数集的 src。 EDMA 是否支持此用途? (在我的测试之后、我发现 EDMA 不支持此源地址索引模式。)

示例代码:

volatile uint32_t srcAddressTable[64] = {
    0x0C000000, 0x0C000008, 0x0C000010, 0x0C0000200, 0x0C0000204, ...
};
//...
myParamSetup.srcAddr = (Uint32)
srcAddressTable

myParamSetup.aCntbCnt = CSL_EDMA3_CNT_MAKE(4,1);
myParamSetup.dstAddr = (Uint32)&g_au32Dst[ii];
myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,1);
myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE( CSL_EDMA3_LINK_NULL,0);
myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
CSL_EDMA3_TCCH_EN, \
CSL_EDMA3_ITCINT_DIS, \
CSL_EDMA3_TCINT_DIS, \
ii, CSL_EDMA3_TCC_NORMAL,\
CSL_EDMA3_FIFOWIDTH_32BIT, \
CSL_EDMA3_STATIC_DIS/*CSL_EDMA3_STATIC_EN*/, \
CSL_EDMA3_SYNC_A, \
CSL_EDMA3_ADDRMODE_INCR, \
CSL_EDMA3_ADDRMODE_INCR );
myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,1);
myParamSetup.cCnt = 1;
/*g_au32Timer[1]=MC2_EOS_READ_CPU_TIMER;*/
/* Param setup */
if (CSL_edma3ParamSetup(hParam,&myParamSetup) != CSL_SOK)
{
printf ("Error %d: EDMA Parameter Entry Setup failed\n",ii);
return MPF_ERR;
}

In my understanding, myParamSetup.srcAddr in the parameter set should be assigned the value 0x0c000000 instead of the address of the array 'srcAddressTable'. Is my understanding correct?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [报价用户 id="596441" url="~/support/processors-group/processors/f/processors-forum/1481343/tms320c6657-how-to-transfer-data-from-non-contiguous-addresses-to-contiguous-addresses-through-edma ]]根据我的理解、应该为参数集中的 myParamSetup.srcAddr 分配值0x0c000000、而不是数组"srcAddressTable"的地址。 我的理解是否正确?

    有。  我们建议您查看  https://www.ti.com/lit/ug/spruem5a/spruem5a.pdf、尤其是第3章"EDMA 传输示例"、 看看它是否支持您的案例。

    谢谢。