irq 작성중입니다. FLAG 가 고민되서요...
글쓴이: chxooi / 작성시간: 목, 2010/06/10 - 12:16오후
임베디드 시스템하나 만들어보는데요...
console 이 irq 2번
그리고
또하나의 device 가 irq 2 번을
공유해서 씁니다. UART 이용하는거거든요...
그런데,
코드를 만드는데,
static void handler_func(int irq, void *dev_id, struct pt_regs *regs)
{
printk("\n#### handler %d\n", __LINE__);
}
if(request_irq(irq_num, &handler_func,IRQF_SHARED, "irq_handle1", NULL))
처럼 쓰면 안되나요?
IROF_SHARED 가 shared 에 쓰이는것같아 썼는데,
어떤 코드를 참고하니,
SA_INTERRUPT 도 쓰고했더라구요...
둘다 share 인것같은데...
하는 디바이스는 그냥 입력장치 인터페이스로 리모콘이나 마우스 같은겁니다.
SA_INTERRUPT 만써야될까요???
이 옵션들은 너무 너무 헷깔리네요
interrupt 가 잘안올라와서요...
Forums:
커널 버전이...
커널 버전이... 굉장히 구려 보이고요.
가능하다면 IRQF_xxx 를 사용하시고요,
shared irq 를 request_irq() 할 경우엔 맨 마지막 아규먼트가 필수입니다.
free_irq() 할 때 어떤 핸들을 해지할 지 구분을 할 수 있어야하기 때문에.
그리고,
irq 핀이 하나뿐인 multi-port UART 컨트롤러에 대한 것도 기본 드라이버인 drivers/serial/8250.c 로 가능합니다.
예제는 http://lxr.linux.no/#linux+v2.6.32/arch/mn10300/unit-asb2303/include/unit/serial.h
마지막으로,
UART HID 장치에 대한 드라이버는 http://kldp.org/node/113447 참고하세요.
뒤에 언급한 uinput 을 사용하는 방식의 접근법에 대한 구현은 http://projects.linuxtogo.org/projects/kbdd/ 에 좋은 예가 있고,
실제로 http://www.handhelds.org/moin/moin.cgi/kbdd 에 응용 예도 있습니다.
OTL
댓글 달기