看到的人過來幫幫忙啊!!!糾結的觸摸屏移植問題(爲什麼別人可以,我不行呢)

近期在做mips上移植觸摸屏的課題。
網上的方法都看遍了,tslib-1.3,tslib-1.4都可移植到板子上,但是依然不能實現觸摸屏的校準功能。


下面描述一下自己所遇到的問題,希望能得到大家的指正。

目標平臺:mips
交叉編譯工具:mipsel-linux-gcc.
內核:linux-2.6.22.19-29-sigma
觸摸屏:未手動安排觸摸屏驅動,將屏插入到板子的usb接口。
cat /proc/bus/input/devices 顯示如下:
I: Bus=0003 Vendor=0eef Product=0001 Version=0112
N: Name="HOLTEK Touch"
P: Phys=usb-tangox-ehci-hcd-1.1/input0
S: Sysfs=/class/input/input1
U: Uniq=
H: Handlers=mouse0 event0 
B: EV=b
B: KEY=401 0 30000 0 0 0 0 0 0 0 0
B: ABS=f
cat /dev/input/event0,手摸觸摸屏,有反應。

經過排查錯誤,tslib-1.3或者1.4都已經./autogen.sh ./configure,make,make install成功。
其中./configure --host=mipsel-linux --prefix=/nfsroot/8654root/mnt/config/tslib ac_cv_func_malloc_0_nonnull=yes --disable-inputapi

tslib-1.3時:
export TSLIB_ROOT=/tslib;
export TSLIB_TSDEVICE=/dev/input/event0;
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal;
export POINTERCAL_FILE=$TSLIB_ROOT/etc/pointercal;
export TSLIB_PLUGINDIR=$TSLIB_ROOT/share/ts/plugins;
export TSLIB_CONSOLEDEVICE=none;
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf;
export TSLIB_FBDEVICE=/dev/fb0;
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH;
export TSLIB_TSEVENTTYPE=UCB1x00;

運行./ts_calibrate
可顯示光標,x軸正確,但是y軸其實在78%的時候便已經超出。
查看源碼presure值一直爲正。按光標沒法進入下一個點校正。
將ts_calibrate函數getxy()中的
if (index < MAX_SAMPLES-1)
index++;
改爲
if (index < MAX_SAMPLES-1)
  index++;
  esle
  break;
在prssure值不等於0的情況下也可跳出循環,則顯示如下:
Took 127 samples...
Top left : X = 19912 Y = 29152
Took 127 samples...
Top right: X = 19912 Y = 27934
Took 127 samples...
Bot right: X = 19912 Y = 34397
Took 127 samples...
Bot left : X = 19912 Y = 37781
Took 127 samples...
Middle: X = 19912 Y = 37470
902.598145 0.046774 0.015463
524.549683 0.018851 0.005005
Calibration constants: 59152672 3065 1013 34376888 1235 327 65536

可以看到讀到的值都是錯的。
嘗試export TSLIB_TSEVENTTYPE爲其它的值,也都不行。

tslib-1.4時:
export TSLIB_ROOT=/tslib;
export TSLIB_TSDEVICE=/dev/input/event0;
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal;
export POINTERCAL_FILE=$TSLIB_ROOT/etc/pointercal;
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts;
export TSLIB_CONSOLEDEVICE=none;
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf;
export TSLIB_FBDEVICE=/dev/fb0;
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH;
export TSLIB_TSEVENTTYPE=UCB1x00;

./ts_calibrate
不可顯示光標,讀值也不對。



個人分析:從ts_read_raw讀到的數便是錯的,猜想可能是tslib裏面所定義的幾個結構
struct ts_event ;
struct h3600_ts_event;
struct mk712_ts_event ;
struct arctic2_ts_event ;
struct collie_ts_event ;
struct corgi_ts_event ;
都不滿足/dev/input/event0的設備文件所讀到的數,有可能是選錯了觸摸屏所對應的驅動類型,但是全部試過都不行,是否是tslib中未出現的類型?
是否可能是我的觸摸屏根本就沒有安裝驅動程度,但是又爲何cat /dev/input/event0時可以有反應??
--disable-inputapi項嘗試過不加,但是也不行。

糾結了好久了啊,希望大家給意見,謝謝,謝謝!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章