免费注册 查看新帖 |

Chinaunix

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

ioremap()函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-01 19:37 |只看该作者 |倒序浏览
我将一个寄存器用ioremap函数定义到驱动中,R_GPECON=ioremap(GPECON,4),我是不是可以这样对这个寄存器直接赋值:
         R_GPECON=0xffffffff还是这样*R_GPECON=0xffffffff。到底那个正确呀。
谢谢

论坛徽章:
0
2 [报告]
发表于 2008-09-02 08:11 |只看该作者
writeb/writew/readb/readw in 2.4 kernel,
writeb(内容,地址)。
R_GPECON=ioremap(GPECON,4);
writew(0xffffffff,R_GPECON);:wink:

ioremap 将物理地址映射到内核中的一段地址,映射之后你看到的R_GPECON跟物理地址有一段偏移,所以不能直接操作~~

就是这个样子~~

论坛徽章:
0
3 [报告]
发表于 2008-09-04 10:01 |只看该作者
ls的,应该是writel(0xffffffff,R_GPECON);吧?看它映射的是32位。还有,一般多用~0,而不是0xffffffff

论坛徽章:
0
4 [报告]
发表于 2008-09-04 10:02 |只看该作者
ls的,应该是writel(0xffffffff,R_GPECON);吧?看它映射的是32位。还有,一般多用~0,而不是0xffffffff

论坛徽章:
0
5 [报告]
发表于 2008-09-04 10:40 |只看该作者
*addr = data时要用修饰词volatile

论坛徽章:
0
6 [报告]
发表于 2008-09-04 22:40 |只看该作者
谢谢各位的指教

论坛徽章:
0
7 [报告]
发表于 2008-09-07 13:59 |只看该作者
原帖由 小瓶盖儿 于 2008-9-2 08:11 发表
writeb/writew/readb/readw in 2.4 kernel,
writeb(内容,地址)。
R_GPECON=ioremap(GPECON,4);
writew(0xffffffff,R_GPECON);:wink:

ioremap 将物理地址映射到内核中的一段地址,映射之后你看到的R_GP ...


一般是推荐用writeX系列函数而不是直接用指针操作,不过原因好像不是你所说的吧?主要是这个函数经常用于映射外设的一些地址空间到虚拟地址中,而外设的访问有时有一些限制,而用writeX系列比较安全。如果是映射一些不用的物理内存如系统启动时保留出来的内存,则直接做内存访问即可。

论坛徽章:
0
8 [报告]
发表于 2008-09-07 16:38 |只看该作者

回复 #7 Cyberman.Wu 的帖子

请教,如果在驱动中~~
#define kaka      (*((volatile INT32U *) 0x01c00000))
kaka=0xfc;
可以访问成功么?

论坛徽章:
0
9 [报告]
发表于 2008-09-07 19:36 |只看该作者
原帖由 小瓶盖儿 于 2008-9-7 16:38 发表
请教,如果在驱动中~~
#define kaka      (*((volatile INT32U *) 0x01c00000))
kaka=0xfc;
可以访问成功么?


1、这段代码是驱动中的,说明执行kaka=0xfc;时享有cpu特权,此时的代码可以做内核能够做得任何事情~~
2、如果有mmu的话,cpu将0x01c00000送给mmu,mmu会查表,找出0x01c00000对应的物理地址(假设是add_temp),
3、mmu从ram中寻址add_temp
4、我也不知道到底能不能正确访问,我是新手,请高人分析一下其中的过程~~

论坛徽章:
0
10 [报告]
发表于 2008-09-07 22:01 |只看该作者

回复 #8 小瓶盖儿 的帖子

你这样的访问编译后的指令使用的是虚拟地址,能否访问取决于这一地址有没有映射吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP