免费注册 查看新帖 |

Chinaunix

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

请教最简单的在用户空间对物理地址进行读写的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-28 11:36 |只看该作者 |倒序浏览
我的硬件平台是at91rm9200,跑着linux-2.4.27.我把at91rm9200的ncs2 ,a2...a9,d0..d15都引到一个fpga的i/o上.现在需要和fga通信,就是需要对ncs2片选控制的物理地址进行读写.
我想能不能写个简单的程序,里面对上述要求初始化后,然后调用系统调用mmap,对地址进行重影射后,就可以在用户空间直接对地址为0x30000000的内存进行操作.
高手请说说这能不能实现,如果能,能否指点一下流程和要点,或者有更简单的办法.
如果不能,应该怎么办?

论坛徽章:
0
2 [报告]
发表于 2006-09-29 10:52 |只看该作者
呵呵,你不是已经找到最简便的方法了吗?
不知道你试过了没有,应该就是可以的.

Linux 的图形界面驱动就是通过这种方法实现的,这是linux应用层驱动的实现方式.

论坛徽章:
0
3 [报告]
发表于 2006-09-29 13:53 |只看该作者
同意楼上的。

论坛徽章:
0
4 [报告]
发表于 2006-09-29 15:16 |只看该作者
谢谢两位。不好意思,我现在遇到实际问题,我不想用驱动的方式去实现,只想在应用程序中映射。但是,我没有在/kernel/sys.c上找到sys_mmap()系统调用,可在/include/asm-arm/unistd.h确实有sys_mmap()的定义。我是linux菜鸟,连sys_mmap()源码都找不到,那根本不会调用它。而且我在网上又查到说要用ioremap()系统调用来实现,都晕了!
不过在/arch/parisc/kernel/sys_parisc.c里找到了asmlinkage  unsigned long sys_mmap(
                                               unsigned long addr, unsigned long len,unsigned long prot,
                                               unsigned long flags,unsigned long fd,unsigned long  offset)
                                             {}
头大啊,这些参数我的设想一点不粘边。倒是/kernel/mm/memory.c里定义remap_page_range(
                                               unsigned long virt_add, unsigned long phys_add,
                                               unsigned long size, pgprot_t  prot)
                                              {}
这个函数和我的要求还相近。virt_add重映射起始的用户虚礼地址,phys_add虚拟地址所映射的物理地址,size被重映射的区域大小,prot新VMA的保证标志。我是不是可以这样填充参数:virt_add=0x00000000;
phys_add=0x30000000 ,size=0x20000 ,但是prot是什么意思啊?但是/arch/parisc/kernel/sys_parisc.c里的asmlinkage  unsigned long sys_mmap不调用这个函数啊?

急啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

论坛徽章:
0
5 [报告]
发表于 2006-09-30 12:32 |只看该作者
老兄,你知道你现在要映射什么吗?要映射到哪里吗?你的硬件驱动加载到内核中以后,你设备的IO地址域应该就确定了,然后你可以通过一定的手段把这个地址域传递给应用程序,然后应用程序调用mmap把这块区域映射到自己的地址空间中,这样它们就可以直接通过访问内存进行通信了。

你还需要什么吗?你干嘛要找sys_mmap的源码啊,它是系统调用在内核中的接口函数。

你现在是不知道怎样申请设备的内存地址域,还是不知道怎样把这块地址域映射到应用程序?

你这个东西现在已经很清楚了啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP