免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2297 | 回复: 4
打印 上一主题 下一主题

[驱动] 诚心请教一个关于PCI使用DMA的问题 [复制链接]

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

论坛徽章:
0
2 [报告]
发表于 2012-09-26 08:26 |只看该作者
DMA参数配置是否正确,这是最大的问题

论坛徽章:
0
3 [报告]
发表于 2012-09-27 09:44 |只看该作者
我用virt_to_bus和bus_to_virt对fifo的实地址和虚地址(pci_iomap所得)进行转换,结果转换后得到的地址对应不上,即实地址bus_to_virt后的地址不是pci_iomap得到的地址,pci_iomap的地址经过virt_to_bus后得到的地址不是fifo的物理地址,DMA的配置确实有不确定的地方,地址转换这里似乎也有问题。
回复 2# __SevenEleven


   

论坛徽章:
0
4 [报告]
发表于 2012-10-14 15:45 |只看该作者
你DMA了多少内存空间?

论坛徽章:
0
5 [报告]
发表于 2012-10-19 23:05 |只看该作者
DMA部件工作在地址映射之内还是之外?DMA操作的物理地址和PCI的地址是一致的吗?DMA操作的目的地址是否被cache?DMA操作完成后读目的地址之前是否进行了cache一致操作?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP