X5 EZ-X5, 커널 2.6 디바이스 사용 문제..
2009.09.25 22:06
안녕하세요,
이번에 EZ-X5랑 EZ-PI, LM150x08 LCD를 구입하여 공부하고 있는 국민대 2학년 전자과 학생입니다.
(아 참, 그리고 너무나도 많은 선배님들이 추천해주신 "리눅스 디바이서 드라이버 -저 유영창" 도 구입했습니다 ;;)
공부해가는 도중, 몇가지 정말 궁금한점이 있어서 조언 좀 부탁드립니다.
환경은 페도라8, 보드에는 커널 2.6 올려서 쓰고 있습니다.
(커널 2.4 쓰면 어마어마하게 편할것 같다는 생각도 드는데 말입니다.. 학생의 오기가..)
---------------------------------------------------------------------------------------------------------------
ㅁㅁㅁㅁ 첫번째 질문은 터치 관련입니다.ㅁㅁㅁㅁ
-> 일단 커널 2.6에서 1024x768로 해상도 수정은 했습니다. 그 다음 mk712 디바이스를 잡으려 아래 처럼 작업을 했습니다.
① linux-2.6.21\arch\arm\mach-pxa\falinux_ez-x5.c에 아래와 같이 mk712 리소스 부분을 등록.
// mk712 touch [AlProgS] -----------------------------------------------
static struct resource mk712_resources[] = {
[0] = {
.name = "mk712_int",
.start = IRQ_GPIO(22),
.end = IRQ_GPIO(22),
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device mk712_device = {
.name = "mk712_touchscreen",
.id = -1,
.num_resources = ARRAY_SIZE(mk712_resources),
.resource = mk712_resources,
};
//-----------------------------------------------------------------------
② platform_device 구조체 안에 다음 구문 추가.
&mk712_device;
③ map_desc 구조체 안에 아래와 같이 추가.
{ // nCS1 MK712 -- fast RD/WR
.virtual = 0xf1300000,
.pfn = __phys_to_pfn(PXA_CS1_PHYS+0x400000),
.length = 0x00100000,
.type = MT_DEVICE
},
④ 커널 2.4의 mk712.c를 커널 2.6의 커널에 올리기 위해 모듈 컴파일 도중, 컴파일 에러 잡기위해
#include <asm/irq.h> -> #include <linux/irq.h>
#include <asm/io.h> -> #include <linux/io.h> 로 수정.
⑤ mk712_init 펑션에 아래와 같이 수정.
set_irq_type (MK712_DEFAULT_GPIO_IRQ, IRQT_RISING);
⑥ io = 0xf1300000, irq = IRQ_GPIO(22), gpio_irp = 22 로 수정.
-----> 결국 echo "1">/dev/mk712 해보면 아래 처럼 나오고 바로 프롬프트로 빠지더군요... ;;
cat /dev/mk712 해보면 아래처럼 나오고 Ctrl+C 누를때까지 계속 그대로 멈춰있구요.
그동안 적어놓은 작업 일지 보면서 다시 한번 정리하니 거의 다 된것 같은데도...
cat /proc/interrupts 로 인터럽트 확인해봐도 0이네요..
[START]MK712 USERS [0]
[ING]MK712 CONTORL VALUE [0000005B]
아, 일단 커널 2.4에서 기본적인 테스트는 했습니다. 커널 2.4에서는 잘 동작 하는거 같아요.
인제 어디를 손봐야 할까요... 제가 뭘 놓친 걸까요.. ;;
공부하는 과정이라 이렇게 막혀서 일단 리눅스 디바이스 드라이버 책만 뚫어져라 보고 하고 있습니다..
ㅁㅁㅁㅁ 두번째 질문은 키보드, 마우스 관련 입니다. ㅁㅁㅁㅁ
-> EZ-X5에 커널 2.6 올리면 EZ-PI 보드에 연결해놓은 PS2 마우스, PS2 키보드 사용은 아직 못하는건가요? 메뉴 컨피그에서
키보드, 마우스 설정 해놓았는데도 cat /proc/bus/input/devices 하면 아무 장치도 안보입니다... 이곳 포럼 계속 뒤져봐도
커널 2.6 에서 키보드 관련 정보는 거의 찾아볼수가 없더라구요..ez-x5에 커널 2.6 올리면 키보드 마우스 역시 따로 모듈 만들
어서 설치해야 하나요?
----------------------------------------------------------------------------------------------------------------
여기서부터 조언이 필요합니다....
초보적인 질문들이라서 죄송하지만,
지나가는 조언 한마디라도 해주시면 저에겐 황금이 됩니다 ㅜㅜ
댓글 3
-
동수에요^^
2009.09.26 02:04
-
전자개구리
2009.09.26 02:20
아, 어마어마어마어마하게 감사합니다 동수님!!!!!!!!!!!!!!
다시한번 도전해 보겠습니다!!!!!!!1
(사실 mk712 디바이스 때문에 7일동안 고생하고 있었습니다 ㅜㅜ 하루 거의 10시간씩 매달려 있었는데도 ㅜㅜ)
-
전자개구리
2009.09.26 04:47
정말정말정말x100 감사합니다,
임베디드 개발쪽은 처음 공부해보는지라, 위에서 처럼 문제점 뻔히 보이는데도 알아채지도 못했네요 ;;
동수님의 조언때문에 2시간만에 해결했습니다, GPIO 인터럽트 관련 부분 다시 한번 정리 하다가 찾아냈습니다 ;;
이걸로 EZ-X5, 커널 2.6에서 터치 패드 구동 완료군요 ㅋ
혹시나 다른 분들 정보 찾으실까 싶어 해결책 남깁니다.
-------------------------------------------------------------------------------------
위의 작업 일지 내역 중 다섯번째가 아래처럼 되있는데요,
⑤ mk712_init 펑션에 아래와 같이 수정.
set_irq_type (MK712_DEFAULT_GPIO_IRQ, IRQT_RISING);
set_irq_type( irq_nr , irq_type ) 이게 이 함수의 정의더군요;; 하는일은 인터럽트 활성화고 ^^;;
전 멍청하게 irq 번호를 넘겨야 하는데 GPIO 번호 따위나 넘기고 있었고 말이죠 ;; 바본걸까요 전 ;;
set_irq_type(MK712_DEFAULT_IRQ, IRQT_RISING); 로 수정하니 잘 되더군요 ^^
다시한번 감사합니다 동수님 _(_ _)_




안녕하세요^^
우선 터치는...
gpio 인터럽트 설정 부분이 빠지신거 같습니다. 그 부분을 추가 해 주십시오
두번째로 PS2 관련 일정은
정확히 포팅 일정이 잡히지 않았습니다.
그럼 좋은 하루되십시오^^