主题 : 求解   但是GPIO口地址问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 68228
精华: 0
发帖: 105
金钱: 530 两
威望: 106 点
综合积分: 210 分
注册时间: 2012-04-20
最后登录: 2014-04-17
楼主  发表于: 2012-05-10 09:05

 求解   但是GPIO口地址问题

请问我在板子的linux系统里面看到的led驱动程序的gpio口的地址 怎么与手册我看到的地址不一样 手册的GPIOCON地址为 0x7F00800 但是我根据linux系统里面的宏定义推算出来得出为F6500800
级别: 侠客
UID: 68228
精华: 0
发帖: 105
金钱: 530 两
威望: 106 点
综合积分: 210 分
注册时间: 2012-04-20
最后登录: 2014-04-17
1楼  发表于: 2012-05-10 09:53
推算过程是这样的 在linux系统里面 led驱动程序里面mini6410_leds.c    使用了readl(S3C64XX_GPKCON);    在gpio-bank-k.h
中有  S3C64XX_GPKCON 定义 #define S3C64XX_GPKCON     (S3C64XX_GPK_BASE + 0x00)  这样S3C64XX_GPK_BASE在regs-gpio.h   定义为#define S3C64XX_GPA_BASE    S3C64XX_GPIOREG(0x0000)    
                #define S3C64XX_GPIOREG(reg)    (S3C64XX_VA_GPIO + (reg))  
   其中S3C64XX_VA_GPIO  在map.h文件里这样定义的 #define S3C64XX_VA_GPIO    S3C_ADDR(0x00500000)
   S3C_ADDR在   map-base.h文件中 定义为
#ifndef __ASSEMBLY__
#define S3C_ADDR(x)    ((void __iomem __force *)S3C_ADDR_BASE + (x))
#else
#define S3C_ADDR(x)    (S3C_ADDR_BASE + (x))
#endif

其中 S3C_ADDR_BASE定义为#define S3C_ADDR_BASE    0xF6000000  

综上所述 我推算出来 GPKCON口的地址为F6500800   但是我在手册上看到的地址为7F008800
所以比较晕
认真学习
级别: 新手上路
UID: 85639
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2013-01-07
最后登录: 2013-06-08
2楼  发表于: 2013-06-08 10:02

 Re:求解  但是GPIO口地址问题

这个应该是静态映射,ioremap则是动态的