LINUX设备驱动之触摸屏tslib编译使用方法

启动:
nfs 30000000 192.168.1.105:/work/nfs_root/uImage_digitpic; bootm 30000000

安装:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

编译:
tar xzf tslib-1.4.tar.gz
cd tslib
./autogen.sh

mkdir tmp
echo “ac_cv_func_malloc_0_nonnull=yes” >arm-linux.cache
./configure –host=arm-linux –cache-file=arm-linux.cache –prefix=$(pwd)/tmp
make
make install

安装:
cd tmp
cp * -rf /work/nfs_root/fs_mini_mdev_new

使用:

先安装s3c_ts.ko, lcd.ko

1.
修改 vi /etc/ts.conf第1行(去掉#号和第一个空格):

# module_raw input
改为:
module_raw input

就是“#”和前面的空格都去掉;

2.
设置环境变量

export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

ts_calibrate

出现错误
/ # ts_calibrate
xres = 480, yres = 272
selected device is not a touchscreen I understand

原因:tslib中的输入系统和内核input系统版本不匹配,当然也有其他原因;
是EV_VERSION这个函数配置出了问题;

解决方案
在/usr/local/arm/4.3.2 中 grep “EV_VERSION” * -nR
得到
arm-none-linux-gnueabi/libc/usr/include/linux/input.h:32:#define EV_VERSION 0x010000
应该改为和内核一样 内核中EV_VERSION的值为 0010001;
记得chmod +w input.h 还有 sudo vi input.h
然后:
回到tslib,进行make clean

然后又make make install 然后进入tmp后cp * -rf /work/nfs_root/fs_mini_mdev_new
回到开发板:
再进行ts_calibrate又出现错误;
vi /etc/ts.conf第1行(去掉#号和第一个空格):

ts_test

cat /proc/mymsg

replay_r, replay_w

0x00075cf7 0x00000003 0x00000018 0

0x00076617 0x00000003 0x00000018 0
0x00076617 0x00000003 0x00000018 0
0x00076617 0x00000003 0x00000018 0
0x00076617 0x00000003 0x00000018 0
0x00076617 0x00000003 0x00000018 0
0x0007661b 0x00000003 0x00000018 0
0x0007661b 0x00000003 0x00000018 0
0x0007661b 0x00000003 0x00000018 0
0x0007661b 0x00000003 0x00000018 0
0x0007661b 0x00000003 0x00000018 0

你可能感兴趣的:(触摸屏)