도와주세요!!
안녕하세요,
이번에 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 올리면 키보드 마우스 역시 따로 모듈 만들
어서 설치해야 하나요?
----------------------------------------------------------------------------------------------------------------
여기서부터 조언이 필요합니다....
초보적인 질문들이라서 죄송하지만,
지나가는 조언 한마디라도 해주시면 저에겐 황금이 됩니다 ㅜㅜ
아, 어마어마어마어마하게 감사합니다 동수님!!!!!!!!!!!!!!
다시한번 도전해 보겠습니다!!!!!!!1
(사실 mk712 디바이스 때문에 7일동안 고생하고 있었습니다 ㅜㅜ 하루 거의 10시간씩 매달려 있었는데도 ㅜㅜ)
정말정말정말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 관련 일정은
정확히 포팅 일정이 잡히지 않았습니다.
그럼 좋은 하루되십시오^^