[t:/]$ 지식_

터치스크린 touch screen tslib.

2008/11/26

tslib는 리눅스용 터치스크린 라이브러리이다.

http://tslib.berlios.de/

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, 에 대해서 알아보자.









[t:/] is not "technology - root". dawnsea, rss