디바이스 드라이버 모듈
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 43 44 45 46 47 48 49 50 51 52 | #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/gpio.h> #include <linux/sched.h> #include <linux/delay.h> #include <linux/interrupt.h> #define PIR 24 static unsigned int pir_irq; irqreturn_t pir_isr(int irq, void *unuse) { static int cnt=0; printk("#### [%s], irq = %d\n cnt: %d", __FUNCTION__, irq, cnt++); return IRQ_HANDLED; } static int mod_hw_pir_int_init(void) { int ret; // 24번 gpio 를 인터럽트 번호로 변환 pir_irq = gpio_to_irq(PIR); // 인터럽트 핸들러 등록 ret = request_irq(pir_irq, pir_isr, IRQF_TRIGGER_RISING, "pir irq", NULL); // ^ 신호가 상승할 때 인터럽트 인지 if(ret){ printk("FAILED Request irq %d. error : %d \n", pir_irq, ret); return ret; } return 0; } static void mod_hw_pir_int_exit(void) { free_irq(pir_irq, NULL); } module_init(mod_hw_pir_int_init); module_exit(mod_hw_pir_int_exit); MODULE_AUTHOR("PlanX Studio"); MODULE_DESCRIPTION("mod_hw_sw_int"); MODULE_LICENSE("Dual BSD/GPL"); | cs |
출처 : 인지소프트웨어 기술포럼 ( 전유진 강사님 수업자료)
'임베디드 > 디바이스 드라이버' 카테고리의 다른 글
디바이스 드라이버 시그널 예제 (0) | 2018.01.02 |
---|---|
디바이스 드라이버 인터럽트 (0) | 2017.12.28 |
디바이스 드라이버 GPIO 모션 센서 예제 (0) | 2017.12.28 |
디바이스 드라이버 GPIO 조이스틱 예제 (0) | 2017.12.28 |
Misc 디바이스 드라이버2 (0) | 2017.12.27 |