Board logo

标题: 请教一个关于dma的问题 [打印本页]

作者: justinhao    时间: 2008-4-21 12:00     标题: 请教一个关于dma的问题

我在用dma controller的时候,用dma从内存中读写数据时 读写操作都没有问题,但当把读和写的数据比较的时候 却是不一样的(理论上应该是同一组数据的),请问这是为什么呢,有什么办法可以检查出来呢 谢谢了~


作者: caopengly    时间: 2008-4-21 21:35

dma模块如果是使用的sopc里面的模块应该是没有问题的,对dma的控制是给出:目标地址,源地址,大小。

如果有问题,看看是不是地址或数据链接的问题。

楼主可以先传输数据少的的模块,看看有没有问题,再慢慢加


作者: justinhao    时间: 2008-4-23 17:57

我就是用的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编辑过]


作者: justinhao    时间: 2008-4-23 17:58

{
printf ("Failed to post transmit request, reason = %i\n", rc);
exit (1);
}

/* 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));


作者: justinhao    时间: 2008-4-24 17:35

大家帮下忙吧 谢谢了~




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0