首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教一个关于dma的问题

请教一个关于dma的问题

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

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

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

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

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

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

{
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));

大家帮下忙吧 谢谢了~
返回列表