tslib는 리눅스용 터치스크린 라이브러리이다.
Qtopia, Maemo 등에서 쓰는 것 같다. 나는 다른 용도로 쓰고 있다. MV6410 보드 기준으로 설명한다.
방화벽, SSH 문제 등으로 SVN 첵아웃이 여의치 않다면 다음 경로에서 받는다.
http://ftp.nluug.nl/pub/os/Linux/distr/pdaxrom/src/
받아야 할 버전은 tslib-1.3.tar.bz2 이다.
압축풀고.
./autogen.sh
만약 autogen 에서 에러가 난다면 조치한다. 요약 : libtool, autoconf, automake 류를 깔아본다.
자 이제 크로스빌드 합시다. 변수들은 대강 알아서 수정하세열~
./configure --prefix=/home2/working_6410/directfb/ --host=arm-linux --build=i686-pc-linux-gnu --target=arm-linux CC=arm-linux-gcc
걍 빌드하면 잘 안 되염~♡
cd plugins
vi Makefile
LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
--> 이렇게 고칩시다.
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`
여전히 문제가 있음.
linux input driver 로서 터치스크린을 쓸 것이므로.
Makefile 을 수정한다.
./configure 에 --enable-linuxinput 넣어도 안 됨.
src, plugins, tests 의 Makefile에서 CFLAGS 맨 뒤에 -DUSE_INPUT_API를 추가
make all install
이제 타겟 시스템의 RFS에 복사합니다.~♡~♡
1. /usr/local/lib에 libts* 모두 복사
2. /etc/에 ts.conf 복사
3. /usr/local/share에 ts/plugins/* 복사.
4. /usr/local/bin/에 ts_* 테스트 프로그램 복사.
타겟 시스템에는 환경변수를 추가해야 한다.
TSLIB_CONFFILE=/etc/ts.conf
TSLIB_PLUGINDIR=/usr/local/share/ts/plugins/
TSLIB_TSDEVICE=/dev/input/event0
환경변수, 플러그인 경로, 리눅스 디바이스 드라이버를 지정하고 있다.
ts.conf 를 까서, 각자에 맞게 수정한다. 나의 시스템은 다음과 같다.
module variance xlimit=50 ylimit=50 pthreshold=3
module dejitter xdelta=100 ydelta=100 pthreshold=1
module linear
상세한 설명은 README를 읽고 매뉴얼을 쳐보세여~♡~♡ 하는건 승질에 안맞고. 간단히 설명을 하면..
리눅스 디바이스 드라이버 -> ts_raw -> variance -> dejitter -> linear 식으로 값이 전달되어 온다.
리눅스 디바이스 드라이버는 커널경로의 drivers/input/touchscreen/s3c-ts.c 에 있다. 여기서 리눅스 인풋 linux input 장치 규약에 따른 좌표 정보를 만들어낸다.
cat /dev/input/event0 을 치고 터치를 건드리면 값이 마구 쏟아지는 것을 관찰할 수 있다.
variance 는 사용자가 드래그를 좍좍 했을 때 부드럽게 커서가 쫓아오게 보간 해준다. dejitter 는 커서를 누르고 있을 때 떨지 않도록 노이즈를 잡아준다. linear 는 전체 영역에 대하여 좌표를 캘리브레이션 해준다. (좌표축을 LCD와 일치시키거나 하는)
ts_calibrate 등의 유틸리티로 검사~
+) 예전에 썼던 노트 추가
tslib 플러그 인을 프루빙 하는 곳을 줄이면 로딩을 빠르게 할 수 있다.
tslib_parse_vars 함수 선언이 에러가 나는데 전부 쌔리박자.
http://cafe.naver.com/devctrl.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4346
dlopen 함수에 RTLD_LAZY를 넣으면 해당 심볼까지 실행하고 없으면 그제서야 뻗는다. RTLD_NOW는 동적링크를 모두 처리한다.
ldd 사용법을 추가로 조사하자
l1, l2, 에 대해서 알아보자.