[嵌入式linux] 有关ioreamp的操作

[复制链接]
 楼主| maowa_2005 发表于 2013-12-16 17:14 | 显示全部楼层 |阅读模式
本帖最后由 maowa_2005 于 2013-12-16 19:24 编辑

最近在看linux设备驱动开发,看到有个资料在讲解通过insmod加载驱动模块的时候,物理地址到虚拟地址映射的函数为:virtuaddr=ioremap(base_addr,0xc),疑惑这个0xc到底是根据什么设置的
qyihan 发表于 2013-12-17 00:37 | 显示全部楼层
void *ioremap(unsigned long phys_addr, unsigned long size)
第二个参数是要映射的空间的大小,比如说,arm的一个寄存器是32位,4个字节,那么
(volatile unsigned long *)rGPADAT =(volatile unsigned long *)ioremap(GPADAT, 4)
那么在内核空间操作rGPADAT,就相当于操作GPADAT(需要定义)寄存器了。
如果是分配一块内存,那么第二个参数就根据自己的需要设置了,比如内核中dm9000的platform驱动,在板文件中,设置了内存资源,而在驱动中,进行了映射。

评分

参与人数 1威望 +1 收起 理由
drf63329272 + 1 很给力!

查看全部评分

 楼主| maowa_2005 发表于 2013-12-17 08:38 | 显示全部楼层
qyihan 发表于 2013-12-17 00:37
void *ioremap(unsigned long phys_addr, unsigned long size)
第二个参数是要映射的空间的大小,比如说,a ...

多谢你的回答,了解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

76

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部