诚心请教一个关于PCI使用DMA的问题
最近在做一个powerpc+fpga架构的项目,采用PCI总线进行数据传输,在调试驱动的时候遇到了这样的现象,在PCI的probe()之中对PCI的内存空间可以进行ioread,iowrite的操作,数据都正确(这段空间是fifo,读写都不用加偏移),为了提高速率所以添加了DMA,将PCI的内存空间作为源地址,malloc一段空间作为目的地址,计数器设一个定值,设置工作模式后启动DMA,DMA工作完成后读取目的地址的内存查看数据,结果为全0,即并没有将源地址的数据映射过去,在映射过程中读取DMA的状态寄存器可知道DMA确实启动了,工作模式的配置上也做出了多种尝试最后均未能调通。
求有经验的人能给我些指点,还有哪些手段可以用来定位这个问题,跟DMA映射流程相关的寄存器就那么几个,不知道还有什么办法可以来对这个问题进行调试,另外,有没有办法来排除硬件本身的问题?fifo的空间是否支持DMA映射功能?求指教,谢谢