Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342472
  • 博文数量: 61
  • 博客积分: 2816
  • 博客等级: 少校
  • 技术积分: 880
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-18 23:38
文章存档

2012年(1)

2011年(19)

2010年(41)

分类: LINUX

2010-08-25 00:09:28

文章是从一个“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) |
给主人留下些什么吧!~~