主题 : GPIO 宏定义“#define S3C2410_GPIO_BANKA   (32*0)” 中的“32”是怎么回事? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 3689
精华: 0
发帖: 41
金钱: 250 两
威望: 104 点
综合积分: 82 分
注册时间: 2009-02-02
最后登录: 2014-05-27
楼主  发表于: 2010-01-25 09:31

 GPIO 宏定义“#define S3C2410_GPIO_BANKA   (32*0)” 中的“32”是怎么回事?

在regs-gpio.h中有这么几条定义:

#define S3C2410_GPIO_BANKA   (32*0)
#define S3C2410_GPIO_BANKB   (32*1)
#define S3C2410_GPIO_BANKC   (32*2)
#define S3C2410_GPIO_BANKD   (32*3)
#define S3C2410_GPIO_BANKE   (32*4)
#define S3C2410_GPIO_BANKF   (32*5)
#define S3C2410_GPIO_BANKG   (32*6)
#define S3C2410_GPIO_BANKH   (32*7)

32是怎么回事?实在没看明白!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-01-25 15:40

 回 楼主(yyyhhh) 的帖子

没什么意思,只是每个GPIO BANK的寄存器地址正好相差32字节
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 3689
精华: 0
发帖: 41
金钱: 250 两
威望: 104 点
综合积分: 82 分
注册时间: 2009-02-02
最后登录: 2014-05-27
2楼  发表于: 2010-01-26 13:06

 Re:GPIO 宏定义“#define S3C2410_GPIO_BANKA  (32*0)” 中的“32”是怎么回事?

GPACON 地址 0X56000000,  GPBCON地址0X56000010 相差应该是16个字节, 怎么是32字节?
级别: 新手上路
UID: 14000
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
综合积分: 18 分
注册时间: 2010-02-01
最后登录: 2017-01-11
3楼  发表于: 2010-02-02 13:08

 Re:GPIO 宏定义“#define S3C2410_GPIO_BANKA  (32*0)” 中的“32”是怎么回事?

虽然定义的是32,扩大了1倍。但是在用的时候,它使用的宏定义
“S3C2410_GPIO_BASE(pin)   ((((pin) & ~31) >> 1) + S3C24XX_VA_GPIO)”
把基地址又除以2,其实还是16个字节偏移。