免费注册 查看新帖 |

Chinaunix

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

如何获取连续的BUS物理地址? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-18 23:02 |只看该作者 |倒序浏览
Linux怎么给外设分配连续的物理地址让FPGA能往里面写数据?

我用的是: __get_free_page和 virt_to_bus  分配的内存有1M,这个分配内存能够成功,但是为什么外设一往里面写数据就提示Oops!

求指点!

论坛徽章:
0
2 [报告]
发表于 2012-03-18 23:04 |只看该作者
pci_alloc_consistent()试试看

论坛徽章:
0
3 [报告]
发表于 2012-03-18 23:14 |只看该作者
谢谢,查了一下:extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_handle);

第三个输入是什么意思?

回复 2# moon146


   

论坛徽章:
0
4 [报告]
发表于 2012-03-18 23:22 |只看该作者
有人知道吗? 谢谢了

论坛徽章:
0
5 [报告]
发表于 2012-03-19 13:07 |只看该作者
extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_handle);
这个你要找些资料看看啊

返回值:分配内存区域的内核地址
dma_handle:分配到的物理地址,等于总线地址

论坛徽章:
0
6 [报告]
发表于 2012-03-19 16:26 |只看该作者
回复 5# moon146

恩,谢谢你,我已经找到了

但是我一读取readl()总线地址,就报错,请问你知道是什么原因吗?


   

论坛徽章:
0
7 [报告]
发表于 2012-03-21 13:18 |只看该作者
你要读内核虚拟地址
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP