文章是从一个“S3C2410_GPF(0)”开始的。是LED驱动里的一个IO地址,但在linux中非常的不好找,我来试试找一下!
Ilnux中的IO口
驱动程序中有一个头文件从这里开始入手吧。#include
打开看这个头文件,还有找,连像一点的都没有。但这里有一个重要的信息#include
我们接着再打开它,一看有这么多宏。有一句比较像,
#define S3C2410_GPF(_nr)(S3C2410_GPIO_F_START + (_nr))
这里的这句S3C2410_GPF(_nr) 应该就是这个的定义S3C2410_GPF(0),(_nr)超哥说应该变量吧,我也是这样认为。
现在找是找到,但还是没有找到我们想要的。我们要的是地址。看看后面这句(S3C2410_GPIO_F_START + (_nr))
把它找出来看看,S3C2410_GPIO_F_START这个是本程序里有,是再一个结构定的,
S3C2410_GPIO_F_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_E),这就是那句,意思应该是开始地址,还是没找到,我们继续挖吧,S3C2410_GPIO_NEXT(S3C2410_GPIO_E)找这句,这句本在程序,还是没有见地址
#define S3C2410_GPIO_NEXT(__gpio) \
((__gpio##_START) +
(__gpio##_NR) +
CONFIG_S3C_GPIO_SPACE + 0)这句我是看不懂从网上查。
S3C2410_GPIO_NEXT(S3C2410_GPIO_A)=
(S3C2410_GPIO_A_START +
S3C2410_GPIO_A_NR +
CONFIG_S3C_GPIO_SPACE + 0)
看到这里我在找不到了,但是我知道linux控制的IO口都是虚拟地址。说这样移植性高了。待续
阅读(3043) | 评论(0) | 转发(1) |