注:以下以友善之臂 mini2440 为例,内核版本为 Linux-2.6.29.4
1.引脚配置
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
unsigned int s3c2410_gpio_getcfg(unsigned int pin);
void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);
int s3c2410_gpio_getpull(unsigned int pin);
void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);
unsigned int s3c2410_gpio_getpin(unsigned int pin);
unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change);
int s3c2410_gpio_getirq(unsigned int pin);
int s3c2410_gpio_irq2pin(unsigned int irq);
上面方法的定义在 Linux-2.6.29/arch/arm/plat-s3cxx 目录的 gpio.c 目录下,声
明在 Linux-2.6.29/arch/arm/mach-s3c2410/include/mach 的目录下。
2.中断配置
IRQ_TYPE_EDGE_RISING,IRQ_TYPE_EDGE_FALLING
在 Linux-2.6.29/include/linux 目录下的 irq.h 下面定义,同时驱动程序中的
kernel.h 等头文件也在该目录下。
中断向量 IRQ_EINT4,IRQ_TIMER0 以及中断向量号 S3C2410_IRQ(31)在
Linux-2.6.29/arch/arm/mach-s3c2410/include/mach 目录下 irqs.h 定义。
3.
给 linux 应用程序传递函数值,如 copy_to_user(),copy_from_user()等函数
的定义,在 linux-2.6.29/include/linux 目录下的 uaccess.h 头文件中。
4. file_operation 函数的定义,在在 linux-2.6.29/include/linux 目录下的 fs.h 头文件
中。
struct file_operations {
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
int (*readdir) (struct file *, void *, filldir_t);
unsigned int (*poll) (struct file *, struct poll_table_struct *);
int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
int (*mmap) (struct file *, struct vm_area_struct *);
int (*open) (struct inode *, struct file *);
int (*flush) (struct file *, fl_owner_t id);