杨培文

NanoPi2内核驱动

makefile:

1
2
3
4
5
6
7
8
obj-m:=gpio.o
mymodule-objs:=gpio
KDIR:=/home/ypw/Desktop/linux-3.4.y/
MAKE:=make
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <mach/platform.h>
#include <mach/devices.h>
#include <mach/soc.h>
#include <mach/gpio.h>

#define DEVICE_NAME “gpio”

#define OUTPUT 1
#define INPUT 0
#define HIGH 1
#define LOW 0

unsigned int GPIOC11 = PAD_GPIO_C + 11;

//GPIOC11
static int gpio_init(void){
printk(“init\n”);
gpio_request(GPIOC11, “test”);
gpio_direction_output(GPIOC11, 1);
gpio_set_value(GPIOC11, HIGH);
printk(“gpio_set_value HIGH\n”);
return 0;
}

static void gpio_exit(void){
printk(“gpio_set_value LOW\n”);
gpio_set_value(GPIOC11, LOW);
gpio_free(GPIOC11);
printk(“exit\n”);
}

module_init(gpio_init);
module_exit(gpio_exit);

MODULE_LICENSE(“GPL”);
MODULE_AUTHOR(“YPW”);