推算过程是这样的 在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
所以比较晕