最近要做DMA,有点疑惑向大家请教。
我有一个ARM处理器,支持外部DMA,我的ARM会和一个FPGA相连,从FPGA里面DMA出数据来。从硬件上来说,ARM的片选3接到了FPGA上面,我想应该是基于片选3的地址空间来读数据,对吧。如果从FPGA来DMA数据,我是不是应该等待FPGA发出DMA的request,然后我回复一个ACK,然后就开始从FPGA中DMA数据了?等完成后,我发送一个Complete信号,是这样么?这些应该是DMA控制器自动完成的吧?
还有就是DMA数据的多少是不是在ARM的DMA控制器中设定啊?从软件上来说,我在ARM这边设置了DMA的源物理地址和目的物理地址,以及DMA的大小,然后启动DMA是不是就可以了?如果FPGA一直没有给我数据,我是不是就不可能接收到DMA完成的中断?我的意思是说,如果FPGA压根就没准备好,它没发出DMA的request,我是不是就永远接收不到DMA完成的中断?
在这方面我有点疑惑,问得问题可能有点多,请大家指点一下。
多谢了。
没人了解么?可能是我没说清楚。
希望了解的人能给介绍一下,感谢了。