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

TMS320C6657: C6657的IDMA问题

Part Number:TMS320C6657

我发现目前对C6657使用EDMA的比较多,但我在尝试用IDMA进行L2间内存搬运的时候,遇到了问题。

现象:同时配置两个Channel,channel0数据接收错误,channel1可以正常传输。

背景:Ti官方例程的idma_test.c,没有跑操作系统,main内启动全局中断后开始跑test例程

问题:同样的方法,为什么channel1就可以正常工作,channel0就不可以?一开始以为是需要初始化的问题,后来检查了内存是否是32bit对齐。然后还查看了数据手册,发现两个通道在这些配置上没有什么不同,做了实验验证也得不到结果,所有来问下

Nina Liu:

关于源地址和目标地址我的想法是:只要不是在MMR里的内存地址,能在channel1里适用的地址在channel0里也可以适用?

,

Shine:

Nina Liu 说:现象:同时配置两个Channel,channel0数据接收错误,channel1可以正常传输。

只配置channel0可以吗?

Nina Liu 说:Ti官方例程的idma_test.c,

请问这个是哪里的例程?

,

Nina Liu:

1、直接配置channel0也不可以,当时就是因为配置channel0失败,才想到从channel1入手调试一下

2、例程链接如下:/cfs-file/__key/communityserver-discussions-components-files/120/test_5F00_idma.c

我对IDMA的理解就是写完计数寄存器,DMA通道就会主动触发,等状态寄存器pend位为0,表示传输完毕。为此我不知道还有什么地方可能会出现问题。

,

Shine:

channel0和channel1的配置类似,只是channel0传输的是local memory (L1P, L1D, and L2)到cfg space,而channel 1传输的是local memory (L1P, L1D, and L2)之间的数据。

报错信息里,看到Src address, dst都在L2里吧。

,

Nina Liu:

我的channel0配置的src和dst都在L2里。

所以其实channel0只能进行L2和CFG之间的数据搬运吗?我之前的理解是channel0也可以进行L2内存间搬运

,

Shine:

是的,在user guide文档上有说明。5.3.1 IDMA Channel 0IDMA channel 0 is intended for quick programming of configuration registers located in the external configuration space (CFG). It transfers data from a local memory (L1P, L1D, and L2) to the external configuration space. https://www.ti.com/lit/ug/sprugw0c/sprugw0c.pdf

,

Nina Liu:

好的,那IDMA的channel0可以做到从CFG搬数据到L2吗?还是说只能单向从L2到CFG呢?

,

Shine:

也可以的,只要不是CFG-CFG。

,

Nina Liu:

这里的CFG只能是外设寄存器吗?可以包含EMIF总线吗?

,

Shine:

可以的,EMIF也是外设。

,

Nina Liu:

你好,我配了EMIF的地址,发现并不能搬运成功,在检查配置之前我想问下是不是要想用IDMA搬运EMIF和L2之间数据,也需要对EMIF进行些什么配置?(我看了EMIF的数据手册,没有提到有关于DMA的内容)

,

Shine:

Nina Liu 说:我配了EMIF的地址,发现并不能搬运成功

搬运EMIF地址里的数据,需要用EDMA。IDMA只能访问EMIF配置寄存器。

,

Nina Liu:

好的,我的问题已解决,谢谢

,

Shine:

不客气~

感谢告知!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6657: C6657的IDMA问题
分享到: 更多 (0)