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

을 참고 하세요