各位专家好,我在6678板子上(CCS5.0)用QDMA进行从片内到片外搬数,但数据有错误。同样的配置片外到片外搬数就是正确的。我将cache关掉还是错误的。以下是部分代码,在这之前已经配置好了其他参数。请问各位专家有什么办法解决吗?谢谢。
myParamSetup[8].srcAddr = (Uint32)&(globaldata_buffer_uv_frm[1][0][0]);
myParamSetup[8].dstAddr = (Uint32)&(img->imgUV[1][globaldata_pix_c_y-3][0]);
myParamSetup[8].aCntbCnt = CSL_EDMA3_CNT_MAKE(globaldata_width_cr,(filter_mbblocksize_2+3));
CSL_edma3ParamSetup(hParamPing2,&myParamSetup[8]);
myParamSetup[7].srcAddr = (Uint32)&(globaldata_buffer_uv_frm[0][0][0]);
myParamSetup[7].dstAddr = (Uint32)&(img->imgUV[0][globaldata_pix_c_y-3][0]);
myParamSetup[7].aCntbCnt = CSL_EDMA3_CNT_MAKE(globaldata_width_cr,filter_mbblocksize_2+3);
CSL_edma3ParamSetup(hParamPong2,&myParamSetup[7]);
myParamSetup[6].srcAddr = (Uint32)&(globaldata_buffer_y_frm[0][0]); //地址是0x0c0747b0
myParamSetup[6].dstAddr =(Uint32)&(img->imgY[globaldata_pix_y-3][0]);//地址是0x81af06f0
myParamSetup[6].aCntbCnt = CSL_EDMA3_CNT_MAKE(globaldata_width,MB_BLOCK_SIZE+3);
CSL_edma3ParamSetup(hParamBasic2,&myParamSetup[6]);
/* Enable Channel */
if (CSL_edma3HwChannelControl(hChannel2,CSL_EDMA3_CMD_CHANNEL_ENABLE, NULL) != CSL_SOK)
{
printf ("Error: EDMA channel enable command failed\n");
return ;
}
status = CSL_edma3ParamWriteWord(hParamBasic2,7,1);
/* Poll IPR bit */
regionIntr.region = CSL_EDMA3_REGION_0;
do {
CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,®ionIntr);
} while (!(regionIntr.intr & 0x4));
/* Clear pending interrupt */
status = CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR,®ionIntr);
