강좌 & 팁
tslib 를 설치하고 터치패드를 테스트 하는 방법을 알아보겠습니다.
먼저 m4 , autoconf , libtool 을 설치 해야 합니다.
ubuntu 의 경우 system - administration - synaptic Package manager 에서 각각 검색 후 설치 하면 됩니다.
ubuntu 가 아닌경우 인터넷에서 잘 찾아 다운 받고 ..
ftp://ftp.gnu.org/gnu/m4/
ftp://ftp.gnu.org/gnu/autoconf/
ftp://ftp.gnu.org/gnu/libtool/
모두 압축을 푼다음 각각
>./configure
>make
>make install
이렇게 설치 해 줍니다.
그다음. tslib 를 설치할 차례입니다.
압축된 파일이라면 적당히 작업할 곳에 놓고 압축을 풀어 줍니다.
압축을 풀었으면 tslib 폴더안에서 작업을 진행 합니다.
>./autogen.sh
>./configure --prefix=/usr --enable-inputapi --enable-shared --disable-h3600 --disable-corgi --disable-collie --enable-input --enable-mk712 --disable-arctic2 --disable-ucb1x00 --build=i386-linux --host=arm-generic-linux-gnueabi
설정이 끝났으면 몇몇 파일의 내용을 수정해 주어야 합니다.
config.h 에서 181행의 #define malloc rpl_malloc 내용을 주석
plugins/input-raw.c 내용에서 65행에서 "&& (absbit & (1 << ABS_PRESSURE))" 부분을 삭제
/tslib/etc/ 의 ts.conf 를 열어 module_raw input 의 주석을 해제 합니다.
이제 메이크를 진행 합니다.
>make
빌드가 되면 이제 라이브러리를 생성해 주어야 합니다.
어차피 타겟보드로 옮길 것 이기 때문에 이왕이면 nfs/ 폴더에 인스톨 하면 나중에 타겟에서 가져 가기 좋다.
>make prefix=/nfs/tslib install
/nfs 폴더내에서 아래와 같이 환경 설정을 위한 파일을 하나 만들어 준다.
>vi init_tslib.sh
---------- init_tslib.sh 파일 내용 --
cp ./tslib /usr/local/. -a
export TSDIR=/usr/local/tslib
export LD_LIBRARY_PATH=$TSDIR/lib:$LD_LIBRARY_PATH
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=$TSDIR/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
/usr/local/tslib/bin/ts_calibrate
------------------------------------------- 끝 --
/tslib/etc/ 의 ts.conf 를 열어
module_raw input 의 주석을 해제 합니다.
여기까지 해서 타겟보드로 옮기기전 모든 작업은 끝났습니다.
이제부터는 타겟보드에서 실행 합니다.
먼저 nfs 로 아까 작업한 폴더를 마운트 합니다. 여기서는 192.168.10.122 의 /nfs/tslib/ 폴더라 가정 합니다.
[root@falinux ~]$ cd /mnt/nfs
[root@falinux nfs]$ ls
init_tslib.sh tslib
아까 만들어 놓은 init_tslib.sh 파일과 tslib 폴더가 있는것이 확인 되었습니다.
이제 실행만 하면 끝.
[root@falinux nfs]$ source init_tslib.sh
xres = 800, yres = 480
init_tslib.sh 의 마지막 줄에서 ts_calibrate 를 바로 실행 하므로 lcd화면을 보면 좌측 상단에 x 표가 보이게 됩니다.
이걸 한번 눌러주면 우측으로 이동하고.또 눌러주면 좌측 하단, 한번 더 누르면 우측 하단으로. 마지막으로 가운데로 이동합니다.
pre: x, y = 75, 68
~ 생략 ~
x, y = 411, 250
Took 15 samples...
Center : X = 414 Y = 248
-25.395264 1.015163 0.031456
-17.148010 0.003644 1.036694
Calibration constants: -1664304 66529 2061 -1123812 238 67940 65536
[root@falinux nfs]$
한번 누를때 마다 발생한 좌표 값이 쭉 나오고, 모두 누르고 나면 좌표값에 상응하는 값들이 정의되어 나오게 됩니다.
지금까지의 작업은 사실 터치드라이버 포팅의 최종 단계인 이 좌표 값을 얻기 위함 입니다.
-1664304 66529 2061 -1123812 238 67940 65536
이 값은 실제 값을 뽑아낸 것이지 현재 터치스크린에서 들어온 x,y 좌표와 매칭이 되지 않은 값 입니다.
이 값이 실제 좌표 배열에 맞춰야 하는데...어떤 순서로 되는지 알 수 없네요.
그러나 다행이도 etc/pointercal 을 열어보면 배열 순서에 맞게 정렬된 값을 얻을 수 있습니다.
[root@falinux /]$ cat /etc/pointercal
-31 -3511 53979720 2539 20 -5349542 65536
ts_calibrate 가 실행되면 etc/pointercal 이 생성되므로 다시 좌표값을 초기화 하고 싶다면 이 pointercal 파일을 삭제 후에
다시 ts_calibrate 를 실행 해야 합니다.
이 7개의 좌표 값은 /kernel/linux-2.6.29/drivers/input/touchscreen/s3c-ts.c 파일의 static int __init s3c_ts_init(void) 함수에서..
------------중략--
pointercal[0] = -31; pointercal[1] = -3511; pointercal[2] = 53979720 ;
pointercal[3] = 2539; pointercal[4] = 20; pointercal[5] = -5349542; pointercal[6] = 65536;
------------중략--
이렇게 정의해 놓고 사용 하게 됩니다.
좀더 자세한 내용을 보고 싶다면..본 포럼의
http://forum.falinux.com/zbxe/?mid=ezboard&category=459080&document_srl=448893&listStyle=&cpage
을 참고 하세요