Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18604
  • 博文数量: 5
  • 博客积分: 214
  • 博客等级: 入伍新兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-14 01:11
文章分类
文章存档

2011年(5)

最近访客

分类: LINUX

2011-05-02 14:29:26

   最近在学习linux的设备驱动编写,没有什么指导。。偶尔有些小感受小心得体会。。发出来希望能够给和我一样的初学者一点启发和帮助。。有不对的地方希望大家能够指正。。谢谢!
 
mach/gpio-nrs.h文件部分内容
/* GPIO bank sizes */
 
#define S3C2410_GPIO_A_NR (32)
#define S3C2410_GPIO_B_NR (32)
#define S3C2410_GPIO_C_NR (32)
#define S3C2410_GPIO_D_NR (32)
#define S3C2410_GPIO_E_NR (32)
#define S3C2410_GPIO_F_NR (32)
#define S3C2410_GPIO_G_NR (32)
#define S3C2410_GPIO_H_NR (32)
 
#define S3C2410_GPIO_NEXT(__gpio) \
 ((__gpio##_START) + (__gpio##_NR) + CONFIG_S3C_GPIO_SPACE + 0)
 
#ifndef __ASSEMBLY__
 
enum s3c_gpio_number {
 S3C2410_GPIO_A_START = 0,
 S3C2410_GPIO_B_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_A),
 S3C2410_GPIO_C_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_B),
 S3C2410_GPIO_D_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_C),
 S3C2410_GPIO_E_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_D),
 S3C2410_GPIO_F_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_E),
 S3C2410_GPIO_G_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_F),
 S3C2410_GPIO_H_START = S3C2410_GPIO_NEXT(S3C2410_GPIO_G),
};

#endif /* __ASSEMBLY__ */

/* S3C2410 GPIO number definitions. */

#define S3C2410_GPA(_nr) (S3C2410_GPIO_A_START + (_nr))
#define S3C2410_GPB(_nr) (S3C2410_GPIO_B_START + (_nr))
#define S3C2410_GPC(_nr) (S3C2410_GPIO_C_START + (_nr))
#define S3C2410_GPD(_nr) (S3C2410_GPIO_D_START + (_nr))
#define S3C2410_GPE(_nr) (S3C2410_GPIO_E_START + (_nr))
#define S3C2410_GPF(_nr) (S3C2410_GPIO_F_START + (_nr))
#define S3C2410_GPG(_nr) (S3C2410_GPIO_G_START + (_nr))
#define S3C2410_GPH(_nr) (S3C2410_GPIO_H_START + (_nr))

/*
*这几个宏定义其实很有趣。。理解起来并不难。。开始我理解的时候倒是花了点时间。。
*主要是忘了预处理需要做的事情就是替换#之后的内容。。所以大家再结合下面对
*实际中我们应用格式是直接使用S3C2410_GPB(1)展开就相当于
*S3C2410_GPG(1)->
*S3C2410_GPIO_G_START + (1) ->
*S3C2410_GPIO_NEXT(S3C2410_GPIO_F)->
*(S3C2410_GPIO_F_START +S3C2410_GPIO_NR + CONFIG_S3C_GPIO_SPACE + 0->
*S3C2410_GPIO_F_START又还可以进行替换。。所以实际替换之后得到
*0+32*5+1+0 = 161 就是从GPA的首地址+GPA个数+GPB的offset就是当前GPB的IO偏移量
*/
 
阅读(1282) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

网络安全服务2011-05-13 16:41:52

路过````