我正在用DMA例程将数据从PC传送到PCIe卡上。我读了DMA-API.txt和LDD3 ch。15详细情况。然而,我想不出如何从PC到PCIe卡上的一致块进行DMA传输。LDD3中PCI的dad示例映射一个缓冲区,然后告诉卡执行DMA传输,但我需要PC来完成这个任务。
我已经发现:
问题:
我要做什么才能让PC执行DMA传输而不是卡?
谢谢你的帮助!
首先,感谢您的答复。也许我应该更准确地提出问题:
谢谢你的耐心。
发布于 2013-04-19 21:25:18
查一下DMA_mapping.txt。里面有一个很长的部分,告诉你如何设置方向('DMA方向‘,第408行)。
编辑
好吧既然你编辑了你的问题。你的规格不对。您可以设置系统DMA控制器,但这是没有意义的,因为它太慢了,正如我在评论中所说的。读这条线。
您必须改变您的FPGA,以支持总线掌握。我这样做是为了谋生-如果你想转包的话,就跟我断线联系。
发布于 2013-04-19 12:48:44
你所说的并不是真正的DMA。DMA是指设备访问内存而CPU本身不涉及的时候(除了PC的内存控制器,它现在通常嵌入到PC的CPU中)。并不是所有的设备都能做到这一点,如果您正在使用FPGA,那么在您的设计中肯定需要某种DMA控制器(即Expresso DMA核或类似的)。在您的示例中,您只需使用ioremap_nocache调用(即iowrite32)向映射的内存区域(即您通过iowrite32获得的内存区域)写入,然后编写内存屏障wmb()。你要写什么I/O栏和地址完全取决于你的设备。
希望能帮上忙。祝好运!
https://stackoverflow.com/questions/16103872
复制相似问题