为了使能我们的触摸屏,我们必须对原有的触摸屏驱动做一些小的修改,添加相应的支持。
先添加我们的结构体,对一些参数进行设置
添加我们的ts的结构体,
我们可以看到s3c24xx_ts_set_platdata()就是将添加的触摸屏的信息传给s3c_device_ts.dev.platform的,
我们还要注册adc和ts的设备结构体到paltform设备总线上去,这里上面的写法是错误的,&s3c_device_ts应该在&s3c_device_adc的下面,不然编译的时候不会抛错,但是移植运行内核的时候会抛错误:Unable to handle kernel NULL pointer dereference at virtual address 00000021
我估计是应为ts设备依赖着adc设备,所以得先添加了adc才不会抛错。
进入menuconfig添加选项
Device Drivers —>
Input device support —>
选上<*> Event interface
<*> Event debugging
进入
[*] Touchscreens —>
<*> Samsung S3C2410/generic touchscreen input driver //选择上这个
然后编译移植,cat /dev/input/event0,此文件下会记录触摸屏的信息,然后用手按压触摸屏,会有很多乱码显示出来,这是因为缺少tslib库来校准我们的坐标信息,Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
下载tslib1.4版本源码,并解压
源码最好不要从windows下直接拿,从git或者直接网站下载,不然可能会编译错误,
git源码网站:https://github.com/zhuerwang/Tslib.git
进入tslib运行 ./autogen.sh生成configure,再运行
./configure --host=arm-linux --prefix=/home/xiaobaicai/lib/tslib CC=/opt/xtools/arm920t/bin/arm-linux-gcc生成Makefile文件,
最后make && makeinstall,过程中可能需要一些工具,automake、autoconf、libtool,缺少哪个就apt-get install就行了
在安装好的路径下,也就是\home\xiaobaicai\lib\tslib,会产生五个文件,不要share,其余的四个文件打包移植到开发板上\lib\tslib下
然后就是配置环境变量
在 lib\tslib\etc\ts.conf中添加
然后在lib/tslib/bin/运行./ts_calibrate