ESP-MMI는 일반 모니터로 영상을 출력할 수 있을 뿐 아니라 USB로 일반 키보드와 마우스를 연결할 수 있기 때문에 실무에서도 유용하겠습니다만 학습용으로도 매우 유익한 제품이지 않나 싶습니다. 교육을 위해 EZ-X5와 EZ-ETIO제품도 있습니다만 ESP-MMI가 더 유용하다고 생각합니다.
ESP-MMI
요즘에 QT를 학습하다 보니까, 임베디드 보드에서 테스트하기 위해서는 마우스나 터치스크린이 필요했습니다. 개인적으로 학습하다보니 터치 스크린은 가격적으로 부담이 되죠. 그러나 ESP-MMI는 앞서 말씀 드린대로 일반 모니터와 연결할 수 있어서 바로 QT 프로그램의 실행을 볼 수 있고, USB로 키보드와 마우스를 연결할 수 있기 때문에 고가의 터치 스크린이 필요 없어 학습하기 참 편합니다.
커서는 출력, 그러나 움직이지 않는다.
그런데 문제가 생겼어요. QT 프로그램을 실행하면 커서는 출력되는데, 아무리 마우스를 움직여도 커서가 움직이지 않는 것이었습니다. 클릭도 안 먹히구요. 해서 원인을 찾아 봤는데 도저히 제 실력으로는 해결할 문제가 아니더군요. 웹으로 검색해 보니 저와 같은 문제로 고생하시는 분이 계시더군요.
결국 (주)FALINUX에 문의하게 되었고, 장형기 팀장님께서 바쁘신 와중에서도 직접 확인하시고 해결 방법을 알려 주셨습니다. 이 문제와 방법은 비단 ESP-MMI에서만이 아니라 USB 마우스를 사용하는 장비라면 공통된 내용이므로 정리하여 올립니다. 이 자리를 빌어 (주)FALINUX의 장형기 팀장님께 감사의 말씀을 올립니다. 꾸뻑~ ^^
USB 마우스 확인
일단 USB 마우스가 보드에 정상적으로 인식했는지 확인해야 겠지요. 장치에 대한 노드부터 확인하겠습니다.
관련 노드는 /dev/ 디렉토리에 mouse 이며, /dev/mouse는 실제 /dev/psaux로 링크된 것이기 때문에 두가지 모두 확인해 봅니다. 각 노드가 없다면 설명에 따라 노드를 생성합니다.
/dev/psaux 가 있는지를 확인합니다.
]$ ls -al /dev/psaux crw-r--r-- 1 root root 10, 1 Sep 27 2003 /dev/psaux -> 요렇게 나오면 정상입니다. 없다면 노드를 생성합니다. ]$ mknod /dev/psaux c 10 1 /dev/mouse 가 있는지도 확인합니다. ]$ ls -al /dev/mouse lrwxrwxrwx 1 root root 5 Feb 21 2006 /dev/mouse -> psaux ->요렇게 나오면 역시 정상 없다면 psaux로 링크를 만들어 줍니다. ]$ ln -s /dev/psaux /dev/mouse
mouse 노드가 정상 적으로 생성되었다면, 마우스 정보를 읽어 들일 수 있는지 hexdump 명령으로 확인해 봅니다.
]$ hexdump /dev/mouse
그러면 마우스를 움질일 때 마다 마우스의 위치 값이 헥사 값으로 계속 출력됩니다.
그럼에도....
이렇게 hexdump로도 이상없이 마우스 값을 읽어 들임에도 QT 프로그램을 실행시키면, 커서는 나오지만 커서가 움직이지 않습니다. 이유는 커널 문제로 make menuconfig 에서 아래의 Provide legacy /dev/psaux device에 체크하시고 커널을 만드신 후 보드에서 업로드합니다.
make menuconfig Device Drivers ---> Input device support ---> [*] Provide legacy /dev/psaux device
QT에서 마우스 사용
Embedded용 GUI 프로그램은 많습니다만 제가 사용해 본 것은 QT뿐입니다. 이렇게 커널을 준비하고 노드가 이상없이 생성되어 있다면 별다른 프로그램 코드를 준비할 필요 없이 바로 마우스를 이용하실 수 있습니다.
(주)FALINUX의 장형기팀장님과 통화하면서 마우스 뿐만 아니라 터치 스크린도 별다른 코드를 준비할 필요없이 바로 사용할 수 있다고 하더군요. 처음에는 QT를 단순한 그래픽 라이브러리인 줄로만 알았는데 이렇게 강력한 tool kit인지 몰랐습니다. 정말 매력있네요.