主题 : 物理地址和虚拟地址的映射问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 42871
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
综合积分: 36 分
注册时间: 2011-04-11
最后登录: 2012-03-31
楼主  发表于: 2011-04-11 23:31

 物理地址和虚拟地址的映射问题

#define S3C64XX_GPIOREG(reg)    (S3C64XX_VA_GPIO + (reg))

#define S3C64XX_GPA_BASE    S3C64XX_GPIOREG(0x0000)

以上两行代码是什么意思,看到有的地方直接用value=readl(S3C64XX_GPA_BASE);

我猜想:上面两行把物理地址转换成了内存中的虚拟地址,value=readl(S3C64XX_GPA_BASE);实际上就是通过操作S3C64XX_GP

A_BASE对应的虚拟地址来改变硬件地址为S3C64XX_GPA_BASE寄存器的值。

不知我的猜想是不是正确的,请大侠指点(初来乍到,还望各位高手不吝赐教)
级别: 新手上路
UID: 42871
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
综合积分: 36 分
注册时间: 2011-04-11
最后登录: 2012-03-31
1楼  发表于: 2011-04-11 23:33

 回 楼主(yjb4611) 的帖子

请大侠小虾现身。。。
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
2楼  发表于: 2011-04-12 09:22
上面两行只是定义了一个虚拟地址, 地址的转换是在其它地方进行的
级别: 新手上路
UID: 42871
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
综合积分: 36 分
注册时间: 2011-04-11
最后登录: 2012-03-31
3楼  发表于: 2011-04-12 20:17
对头,S3C64XX_VA_GPIO这个宏用来转换虚拟地址。