免费注册 查看新帖 |

Chinaunix

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

ioremap如何用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-06 22:09 |只看该作者 |倒序浏览
小弟最近在写一驱动,需要把物理地址0x80000000开始的连续8个端口映射成虚拟地址,并对其进行I/O操作

端口地址是8位的, 分别是000,001,...,111。

现在想用ioremap把物理映射过来

以下是ioremap的原型函数:

void *ioremap(unsigned long phys_addr, unsigned long size)

我想问的是:

映射之后的地址是什么类型的?是void *addr吗?因为我在驱动中直接就 addr=ioremap(0x80000000, ;

ioremap的第二参数size怎么填,size的单位是什么?直接填8吗?

我知道网上说ioremap地方还挺多的,但一直没搞懂上述两个问题,问题可能提得不好,希望各位大侠帮助一下!

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
2 [报告]
发表于 2010-11-06 22:43 |只看该作者
是的.就是32位线性地址
size是端口占的字节数 这里就是8

实际上一次影射了的一个页大小的物理地址
也就是8个端口如果连续且在一页中.就直接为这个页建立一个页表项

论坛徽章:
0
3 [报告]
发表于 2010-11-07 09:30 |只看该作者
回复 2# smalloc


    敢问这8个端口是什么?是把映射到的地址addr+1代表001,addr+2代表002,还是以8位为单位地寻址呢?

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
4 [报告]
发表于 2010-11-07 16:36 |只看该作者
回复 3# commandow01


    addr+1代表001
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP