我的EDMA配置设置如下:
numPingOrPongSamples = obj->numRangeBins * obj->numRxAntennas;
aCount = numPingOrPongSamples * BYTES_PER_SAMP_1D;
if (gMrrDSSMCB.subFrameIndx == 2)
{
oneD_destinationBindex = (int16_t)aCount;
oneD_destinationPongAddress = (uint8_t *)(&obj->radarCube[aCount * 2 * obj->numDopplerBins]);
}
else if (gMrrDSSMCB.subFrameIndx == 1)
{
oneD_destinationBindex = (int16_t)aCount;
oneD_destinationPongAddress = (uint8_t *)(&obj->radarCube[aCount * obj->numDopplerBins]);
}
else
{
oneD_destinationBindex = (int16_t)aCount;
oneD_destinationPongAddress = (uint8_t *)(&obj->radarCube[0]);
}
/* MMW_EDMA_CH_1D_OUT - Copies from ping FFT output (even chirp indices) to L3 */
retVal =
EDMAutil_configType1(context->edmaHandle[MMW_DATA_PATH_EDMA_INSTANCE],
(uint8_t *)(SOC_translateAddress((uint32_t)(&obj->fftOut1D[0]),SOC_TranslateAddr_Dir_TO_EDMA,NULL)),
oneD_destinationPongAddress,
MMW_EDMA_CH_1D_OUT,
false,
MMW_EDMA_CH_1D_OUT_SHADOW,
aCount,
obj->numChirpsPerFrame, //bCount
0, //srcBidx
oneD_destinationBindex, // //dstBidx
eventQueue,
NULL,
(uintptr_t) obj);
启动运行后,发现在EDMA数据搬移过程中,只能将一部分数据搬移到我的目标地址oneD_destinationPongAddress中,剩下部分全部为0,如下图所示(numRxAntennas = 4,numRangeBins = 32,numDopplerBins = 64,numTxAntennas = 3, numChirpsPerFrame = 1):