wtt2601109
驱动牛犊
驱动牛犊
  • 注册日期2005-10-14
  • 最后登录2010-12-07
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望70点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1318回复:0

PCI驱动的DMA问题

楼主#
更多 发布于:2008-12-09 14:38
一直在调试PCIe的DMA数据传输,看武安河的PCI9054的例子,有很多明白的地方。
我想做的是用DMA的方式从FPGA的FIFO里读写数据,PCI9054的例子中写数据是用IO方式,读数据使用DMA,但是从设备端启动,所以不能用在我的程序里。
于是自己写。遇到几个问题。
1. DS帮助里面讲:传输(Transfer)对象负责从commom buffer里拷贝数据,或将数据拷到common里去。
commom buffer里的数据是怎么样到PCI设备地址里面去的?就是通过DMA适配器吧,到哪个地址段?怎么样设置。如果没有commom buffer,怎么样设置DMA?就数据直接从MDL里到设备上?
2. DMA传输时目标地址是自动累加的,我用的FIFO的地址就是固定的,应该怎么设置?是不是把DMA的 KDmaAdapter设置成scatter/gather(分散/聚合)模式?
3.读数据和写数据要双工的话是不是需要2个DMA通道和2个buffer?
4.DMA中断和PCI的中断如何区别,像PCI9054那样在FPGA里设寄存器?
5.顺便问问,PCIe和PCI的驱动有什么区别?好多人的PCIe驱动读写速度说是有400MB/s,怎么样测出来的,我的pcie驱动的读写速度只有不到100MB/s,所以才用DMA。
游客

返回顶部