void Edma1(double *srcadd,double *dstadd,Uint32 abCnt,Uint32 sdBidx,Uint32 channelNum)
{
unsigned char instNum;
CSL_Edma3ParamHandle hParamPing0;
CSL_Edma3ParamSetup myParamSetup0; //参数列表00
CSL_Edma3ChannelHandle hChannel0;
CSL_Edma3Handle hMoudle0; //dma or qdma
CSL_Edma3Obj edmaObj;
CSL_Edma3ChannelObj chObj;
CSL_Edma3CmdIntr regionIntr;
CSL_Edma3Context context;
CSL_Edma3ChannelAttr chAttr;
CSL_Status status;
// unsigned int start,end;
// start=TSCL;
// unsigned char channelNum = 0; //通道号
/* if(channelNum<2)
{
c
}
if(channelNum>=2)
{
instNum = 1; //TPCC0 通道控制器
} */
instNum = 0; //TPCC0 通道控制器
//unsigned char instNum = 0; //TPCC0 通道控制器
CSL_edma3Init(&context); //初始化
hMoudle0 = CSL_edma3Open(&edmaObj,instNum,NULL,&status); //module level open
chAttr.regionNum = CSL_EDMA3_REGION_GLOBAL;
chAttr.chaNum = channelNum; // Channel number 改这个通道号为核号
hChannel0 = CSL_edma3ChannelOpen(&chObj,instNum,&chAttr,&status);
CSL_edma3HwChannelSetupQue(hChannel0,CSL_EDMA3_QUE_0); //将TPCC0的通道对应事件队列对应核号
CSL_edma3MapDMAChannelToParamBlock(hMoudle0,channelNum,channelNum);//使用DMA通道,通道0对应para0
hParamPing0 = CSL_edma3GetParamHandle(hChannel0,channelNum,&status); //param句柄
regionIntr.region = CSL_EDMA3_REGION_GLOBAL;
regionIntr.intr = 0x1;
regionIntr.intrh = 0x0;
CSL_edma3HwControl(hMoudle0,CSL_EDMA3_CMD_INTR_ENABLE,®ionIntr); //使能中断
//EDMA to core 0
myParamSetup0.option = 0x0010000c;
myParamSetup0.srcAddr = (Uint32)srcadd;
myParamSetup0.aCntbCnt = (Uint32)abCnt;
myParamSetup0.dstAddr = (Uint32)dstadd;
myParamSetup0.srcDstBidx = (Uint32)sdBidx;
myParamSetup0.linkBcntrld = 0x0000ffff;
myParamSetup0.srcDstCidx = 0x0;
myParamSetup0.cCnt = 0x00000001;
CSL_edma3ParamSetup(hParamPing0,&myParamSetup0); //设置para0
CSL_edma3HwChannelControl(hChannel0,CSL_EDMA3_CMD_CHANNEL_SET,NULL); //手动设置通道事件,写入ESR
regionIntr.region = CSL_EDMA3_REGION_GLOBAL;
regionIntr.intr = 0x0;
regionIntr.intrh = 0x0;
do
{
CSL_edma3GetHwStatus(hMoudle0,CSL_EDMA3_QUERY_INTRPEND,®ionIntr);//读取IPR寄存器
}
while (!(regionIntr.intr & 0x1));
CSL_edma3HwControl(hMoudle0,CSL_EDMA3_CMD_INTRPEND_CLEAR,®ionIntr);//通过ICR清除IPR相应位
CSL_edma3ChannelClose(hChannel0);
CSL_edma3Close(hMoudle0);
}
想在八个和调用这个函数,但是只能两个核成功传输,按照正常的逻辑,八个核用八个不同的通道,应该是没有问题,希望用过的人能帮忙看下,十分紧急!!!