免费注册 查看新帖 |

Chinaunix

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

[硬件及驱动] FPGA-based设备驱动 [复制链接]

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-21 11:13 |只看该作者 |倒序浏览
FPGA-based设备驱动可以有下面3种实现方法:
1。用户程序直接调用mmap(), 把fpga base address映射到用户空间; 用户程序直接从映射后的用户空间地址操作fpga寄存器
2。写一个驱动程序,驱动操作函数组里实现mmap函数, 驱动的这个mmap函数会利用remap_pfn_range()把fpga base address映射到用户空间; 用户程序用驱动程序影射的地址操作fpga寄存器
3 写一个驱动程序, 驱动程序会利用ioremap()把fpga base address映射到内核空间地址;驱动程序再提供read()/write()给用户来操作ioremap影射的内核地址,进尔操作fpga寄存器
那一种map是linux比较钟爱的方法?

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
2 [报告]
发表于 2012-06-24 03:06 |只看该作者
没人点评一下?
我看内核例程有些驱动是第三种方法
有的书上用的是第二方法作例子
我自己写的驱动用了最简单的第一种方法

论坛徽章:
0
3 [报告]
发表于 2012-06-24 10:41 |只看该作者
方法简单,通用性差

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
4 [报告]
发表于 2012-06-24 21:07 |只看该作者
回复 3# moon146
FPGA实现的硬件功能本身差别较大, 功能不一样时不能指望驱动能通用;功能相同时只要变变base address就可以通用。

   

论坛徽章:
1
水瓶座
日期:2013-09-28 21:40:25
5 [报告]
发表于 2012-06-25 21:42 |只看该作者
本帖最后由 bensenq 于 2012-06-25 21:42 编辑

我怎么感觉你说的前两种方法是一回事儿呢?不都是使用remap_pfn_range把物理地址映射到用户空间么?
回复 1# linuxfellow


论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
6 [报告]
发表于 2012-06-27 10:10 |只看该作者
回复 5# bensenq
第一种方法是直接从用户空间通过mmap系统调用来实现,不用写驱动
第二种方法驱动要实现

   

论坛徽章:
1
水瓶座
日期:2013-09-28 21:40:25
7 [报告]
发表于 2012-06-27 20:55 |只看该作者
你说的第一种,用户调用mmap进行映射是不是要制定给一个fd,这样mmap系统调用会找到对应设备程序中file operations结构中的mmap(),然后mmap调用remap_pfn_range最终实现映射。这不就是一回事儿么?
莫非还可以不用实现驱动中的mmap,利用默认的mmap就可以映射物理空间、IO?
linuxfellow 发表于 2012-06-27 10:10
回复 5# bensenq
第一种方法是直接从用户空间通过mmap系统调用来实现,不用写驱动
第二种方法驱动要实现 ...

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
8 [报告]
发表于 2012-06-28 08:44 |只看该作者
本帖最后由 linuxfellow 于 2012-06-28 09:11 编辑

回复 7# bensenq
不好意思,你是对的:
第一种方法,用现成驱动“/dev/mem"的mmap()来映射物理空间、IO;
第二种方法,写自己的驱动“/dev/myfpga" 实现mmap()来映射物理空间、IO
两种方法是一样的

   

论坛徽章:
0
9 [报告]
发表于 2012-07-09 21:02 |只看该作者
小弟菜鸟一个,问个初级问题,怎么加载FPGA程序呢?

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
10 [报告]
发表于 2012-07-10 10:05 |只看该作者
回复 9# wawava
google或baidu上查一下“FPGA程序下载”, 会有详细答案

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP