触摸屏和ADC驱动的移植 (fl2440)

关于fl2440的触摸屏的移植,首先要了解关于输入设备是怎样与用户进行交互的。
在linux的输入子系统中,低层驱动(例如按键被按下,触摸屏被触摸,鼠标点击等)都会发生相应的事件,而驱动就会把事件提交给上层,
这其中涉及到输入设备子系统的工作原 理http://www.cnblogs.com/hoys/archive/2011/03/24/1994233.html。

我们在来说一下s3c2440触摸屏工作的原理,触摸屏的接口与ADC的接口是集成在一起的,触摸屏要正常的工作就离不开ADC的转换。
触摸屏和ADC驱动的移植 (fl2440)_第1张图片
触摸屏和ADC驱动的移植 (fl2440)_第2张图片
上图是功能方框图,假如我们在触摸屏上按下,它会产生x,y方向上的两个模拟信号(xp,yp)进入到AD转换器,然后再触发相应的中断(分为ADC和TC两种)来进行处理,然后在中断处理程序中来上报数据。

接下来我们进入移植部分:
内核:linux-3.0
开发板:fl2440
首先进入到arch/arm/mach-s3c2440/mach-smdk2440.c中找到
触摸屏和ADC驱动的移植 (fl2440)_第3张图片
加入&s3c_device_adc和&s3c_device_ts这两项
然后在其下面的
触摸屏和ADC驱动的移植 (fl2440)_第4张图片
加入s3c24xx_ts_set_platdata(&smdk2440_ts_cfg);
除此之外我们还要添加smdk2440_ts_cfg结构体的相关信息
触摸屏和ADC驱动的移植 (fl2440)_第5张图片

然后在文件开始加入头文件 #include
最后make menuconfig
触摸屏和ADC驱动的移植 (fl2440)_第6张图片
然后返回上一界面选中
这里写图片描述

移植成功后会在内核里的打印信息中有加载信息。
然后在dev/input/event 中可以显示触摸信息,刚开始是一些乱码,如果要精确显示坐标信息,还要移植tslib来进行校准。

下载tslib的源码,我用的是1.4版本,解压后进入到tslib目录中,
先./autogen生成./configure文件
./configure –host=arm-linux –prefix=(安装目录) –enable-debug=no CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
make编译
make && make install

然后进入到安装目录下,将 bin etc include lib这四个目录打包成一个文件,拷贝到开发板上,在/app/下建立tslib目录,进入到
这里写图片描述

然后在设置环境变量和所需的tslib的一些配置,在/etc/profile中加入
触摸屏和ADC驱动的移植 (fl2440)_第7张图片

触摸屏和ADC驱动的移植 (fl2440)_第8张图片`
最后还要修改一下配置文件,在vi apps/tslib/etc/ts.conf 末尾添加
触摸屏和ADC驱动的移植 (fl2440)_第9张图片
然后运行校准程序
触摸屏和ADC驱动的移植 (fl2440)_第10张图片
触摸屏就可以正常工作了。

你可能感兴趣的:(linux,+,arm,触摸屏)