我在用dma controller的时候,用dma从内存中读写数据时 读写操作都没有问题,但当把读和写的数据比较的时候 却是不一样的(理论上应该是同一组数据的),请问这是为什么呢,有什么办法可以检查出来呢 谢谢了~
dma模块如果是使用的sopc里面的模块应该是没有问题的,对dma的控制是给出:目标地址,源地址,大小。
如果有问题,看看是不是地址或数据链接的问题。
楼主可以先传输数据少的的模块,看看有没有问题,再慢慢加
我就是用的sopc模块里的dma,然后把read/write master 都连接到同一个on-chip memory slave上面了,但下面的程序里
Fill write buffer with known values
Create the transmit channel
Create the receive channel
然后下面这地方发现从offset(memory_base)读出来的数据和最初放在data_written里的不一样的,好像是根本就没有写进去呢,版主和各位帮帮忙看下吧 谢谢了
/* Post the transmit request */
if ((rc = alt_dma_txchan_send (txchan, data_written, 0x100, NULL, NULL)) < 0)
[此贴子已经被作者于2008-4-23 17:57:22编辑过]
/* Post the receive request */
if ((rc = alt_dma_rxchan_prepare (rxchan, (void*)offset, 0x100, dma_done, NULL)) < 0)
{
printf ("Failed to post read request, reason = %i\n", rc);
exit (1);
}
/* Wait for transfer to complete */
while (!rx_done);
rx_done = 0;
for(offset = memory_base; offset<memory_base+0x100;offset+=4)
printf("%d ",IORD_32DIRECT(offset, 0));
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |