大家好,我遇到的问题是:使用EDMA3,对128*2k点的数据进行搬移,同时进行转置,用AB型传输,源地址与目标地址都在DDR3中。
但是测试结果显示,只有部分数据进行了转置。
关于EDMA3的配置如下:
uint32_tedma_ch_num= 1;uint32_tedma_tcc_num = 1;uint32_tedma_evtq_num = 0;uint32_taCnt = 4;uint32_tbCnt = 128;uint32_tcCnt = 2048;EDMA3Init(CSL_EDMACC_1_REGS, 0);EDMA3RequestChannel(CSL_EDMACC_1_REGS, EDMA3_CHANNEL_TYPE_DMA, edma_ch_num, edma_tcc_num, edma_evtq_num);edmaParam.opt= 0x00900004u;edmaParam.srcAddr = (uint32_t) (&Data);edmaParam.destAddr = (uint32_t) (&Data_Twi);edmaParam.aCnt= aCnt;edmaParam.bCnt= bCnt;edmaParam.cCnt= cCnt;edmaParam.srcBIdx = aCnt;//源地址 二维 aCntedmaParam.srcCIdx = aCnt*bCnt;//源地址 三维 aCnt*bCntedmaParam.destBIdx = aCnt*cCnt;//目的地址 二维 aCnt*cCntedmaParam.destCIdx = aCnt;//目的地址 三维 aCntedmaParam.linkAddr = 0xFFFFu;edmaParam.bCntReload = 0u;EDMA3SetPaRAM(CSL_EDMACC_1_REGS, edma_ch_num, &edmaParam);for (count = 0; count < 2048; count++){Result = EDMA3EnableTransfer(CSL_EDMACC_1_REGS, 1, EDMA3_TRIG_MODE_MANUAL);while (Result != 1) ;}
Shine:
"只有部分数据进行了转置"的话,先试试小矩阵转置有没有问题?
kang xiao:
回复 Shine:
你好, 我刚刚测试了一下, 小矩阵转置没有转置成功,没有一点变化。
程序中的参数是根据下图设置的: 那一块需要改一下呢?
kang xiao:
回复 Shine:
你好, 刚刚因为把源地址和目标地址放在L2 SRAM 中, 没有转置成功, 当源地址和目标地址在DDR3中时,转置成功了。