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

C6655的EDMA3不搬移数据

用EDMA3接收来自MCBSP接口的数据,中断配置到INT8,程序进不了中断服务程序,手动将ISR的第8位置1,程序可以连续进到中断服务程序,但发现EDMA并没有收到来自串口的数据,串口实际是有数据的,从Memory 中查看BCONT和目的地址是增加的,可目的地址所在的缓冲器却没收到数据,求大神指点!

liang ge2:

传输通道错误提示是ERRSTAT=0x09;ERRDET=0x2601;
读错误,源地址为MCBSP的DRR。怎么会提示这个错误呢?

liang ge2:

传输通道错误提示是ERRSTAT=0x09;ERRDET=0x2601;
读错误,源地址为MCBSP的DRR。怎么会提示这个错误呢?

Shine:

ERRSTAT这个MMRAERR错误表示访问了无效的地址,请看一下PaRAM配置的地址是否正确?请参考EDMA user guide里的例程。
3.4 Peripheral Servicing Example
www.ti.com/…/sprugs5b.pdf

Nancy Wang:

参考手册table 9-1 interconnect看一下,内部是否允许被访问。

liang ge2:

回复 Shine:

下面是我的配置,采用乒乓模式,帮忙看下那有问题

ptr4->OPT= 0x00126000;ptr4->SRC= 0x021B8000;//mcbsp1 DRRptr4->BCNT_ACNT= 0x00200002;ptr4->DST= (unsigned int)(&EDMA_INP1_BUF[0]);ptr4->DSTBIDX_SRCBIDX= 0x00020000;ptr4->BCNTRLD_LINK= 0x00204940;ptr4->DSTCIDX_SRCCIDX = 0;ptr4->RSVD_CCNT= 0x1;
ptr74->OPT= 0x00126000;ptr74->SRC= 0x021B8000;ptr74->BCNT_ACNT= 0x00200002;ptr74->DST= (unsigned int)(&EDMA_INP2_BUF[0]);ptr74->DSTBIDX_SRCBIDX= 0x00020000;ptr74->BCNTRLD_LINK= 0x00204960;ptr74->DSTCIDX_SRCCIDX = 0;ptr74->RSVD_CCNT= 0x1;
ptr75->OPT= 0x00126000;ptr75->SRC= 0x021B8000;ptr75->BCNT_ACNT= 0x00200002;ptr75->DST= (unsigned int)(&EDMA_INP1_BUF[0]);ptr75->DSTBIDX_SRCBIDX= 0x00020000;ptr75->BCNTRLD_LINK= 0x00204940;ptr75->DSTCIDX_SRCCIDX = 0;ptr75->RSVD_CCNT= 0x1;

Shine:

请问目的地址所在的memory区域是否使能了cache? 如果使能了cache,要注意cache一致性问题,读之前要进行cache invalid。

liang ge2:

回复 Shine:

memory 内显示

0x0081A800 EDMA_INP1_BUFBUF1 起始地址
0x0081AC00 EDMA_INP2_BUFBUF2 起始地址

cmd文件内空间分配如下
VECTORS:o = 0x00800000l = 0x00000200/*set memory protection attribitue as execution only*/
LL2_CODE:o = 0x00800200l = 0x0000FE00/*set memory protection attribitue as execution only*/
LL2_R_DATA:o = 0x00810000l = 0x00008000/*set memory protection attribitue as read only*/
LL2_RW_DATA:o = 0x00818000l = 0x00068000/*set memory protection attribitue as read/write*/

请问如何进行cache invalid?

liang ge2:

回复 Shine:

SECTIONS
{vecs>VECTORS
.text>SL2.cinit>SL2.const>SL2.switch>SL2.cio>SL2.stack>LL2_RW_DATAGROUP{.neardata.rodata.bss}>LL2_RW_DATA.far>LL2_RW_DATA.fardata>LL2_RW_DATA.sysmem>LL2_RW_DATA

}

liang ge2:

回复 Nancy Wang:

改为TC1,还是不行。MCBSP FIFO 内可以看到数据EDMA就是读不出来啊

Shine:

回复 liang ge2:

0x0081A800 0x0081AC00 这两个地址不是全局地址,edma的话,需要用全局地址,如果是core0,改成0x1081A800 和0x1081AC00 另外,看一下有没有用CACHE_setL2Size来使能L2 cache,如果没有使能cache,就不需要考虑cache一致性问题。

赞(0)
未经允许不得转载:TI中文支持网 » C6655的EDMA3不搬移数据
分享到: 更多 (0)