- 论坛徽章:
- 0
|
小弟刚看驱动.C语言不是很熟,比较生疏,
看完了misc设备的LED驱动能理解70%
但是恰恰好有个问题非常不懂.
static unsigned long led_out[]={
S3C2410_GPIO_OUTP,
S3C2410_GPIO_OUTP,
S3C2410_GPIO_OUTP,
S3C2410_GPIO_OUTP,
}
这里看到文件头式里将S3C2410_GPIO_OUTP定义为
#S3C2410_GPIO_OUTP (0x10<<0);
这里就不明白了,为什么要位移0位?有什么意义?
还有,看了很多函数都是位移,不明白这些位移对驱动有着什么实际的意义?
第二个问题是,在定义LED引脚时用的是无符号int,而定义寄存器用的是无符号long.
这里为什么要这样区分?定义引脚是否可以用ungisned long?
第三个问题是看到PWM(蜂鸣器)驱动时.
一来就看到了有个复合型定义:static struct semaphore lock;
然而在剩下的驱动就没有再看到semaphore的定义了,lock也没有赋值.就是说没有初始化.
那么这句话的赋值或者是定义在哪里?
PWM驱动:http://blog.csdn.net/garby2004/archive/2009/09/28/4604039.aspx
这些问题还请前辈们帮忙指导下. |
|