TI中文支持网
TI专业的中文技术问题搜集分享网站

EDMA3源缓冲区和目的缓冲区数据不一致?

您好!我在C6678自带的EDMA例子基础上进行修改并测试以后,通道的数据传输测试都通过了,按程序中的要求来看的话应该是满足了源缓冲区和目的缓冲区的数据一致测试才会通过,可是在查看memory的时候却显示srcbuff和dstbuff数据不一致,请问是什么原因呢?工程文件已上传,谢谢!

Andy Yin1:

您好,

请问你是怎么查看的?确认在查看的时候EDMA确实已经搬运完成

andy lee1:

回复 Andy Yin1:

Andy Yin

   您好!我是在Memory Browser里查看srcbuff1和dstbuff1地址的数据以及srcbuff2和dstbuff2地址的数据,结果发现srcbuff1和srcbuff2地址的数据是一样的,可是dstbuff1和dstbuff2的数据都为0,请问是什么原因呢?另外在验证数据传输是否正确的函数里面有以下语句:

for (loopIndex1 = 0; loopIndex1 < cCnt; loopIndex1++) {

       for (loopIndex2 = 0; loopIndex2 < bCnt; loopIndex2++) {

           for (loopIndex3 = 0; loopIndex3 < aCnt; loopIndex3++){

               if (srcArrayPtr[loopIndex3] != dstArrayPtr[loopIndex3])                  

                      return FALSE;

               else

                return TRUE;

从整个工程的测试结果可以看出,这个位置返回的应该是true,也就是说对于数组中每一个元素srcArrayPtr[loopIndex3] == dstArrayPtr[loopIndex3],即每一个元素都传输完成了,所以EDMA应该是传输完成了,但不知道这个分析是否正确,如果是这样的话为什么还会出现源缓冲区和目的缓冲区的数据不一致的情况呢?谢谢!

qingping zhang2:

回复 andy lee1:

不知楼主解决这个问题没有。

我用这个测试例程一直停在

   do {

       CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);//一直在查询IPR位

   } while (!(regionIntr.intr & 0x1));

目的地址数据一直为0没有更新。当刷新Memory Browser时,数据一直变,好像被映射为CACHE空间一样。

请问这是为什么?谢谢

Ellie Jiang:

回复 qingping zhang2:

您好,我运行了附件中的edma3.c,能够成功搬运数据,不知为何

yu fei:

我也遇到了qingping zhang一样的问题,但是只有实例0有这个问题,实例1、2都没有。另外使用Bidx时也出现这一问题,请问为什么呢?

yu fei:

补充一下,我的问题好像是SER secondary event register没有清零,但是我用csl提供的函数:

CSL_edma3ClearDMASecondaryEvents

CSL_edma3ClearDMAChannelSecondaryEvents

都没能其作用,没能清零,请问是怎么回事?

yu fei:

请问怎么解决?

yu fei:

请问怎么解决?

赞(0)
未经允许不得转载:TI中文支持网 » EDMA3源缓冲区和目的缓冲区数据不一致?
分享到: 更多 (0)