移植前准备工作
1、ubuntu 搭建好开发环境 (NFS、tftp\) 2、开发板x210(里面烧好uboot程序,内核镜像通过tftp下载) 3、内核镜像(能正常启动,挂载NFS,配置好触摸屏和显示屏驱动)
检查环境配置
正常启动开发板并进入系统rootfs目录下,检查驱动是否安装配置好。
cat /proc/bus/input/devices
出现
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="s3c-button"
P: Phys=s3c-button/input0
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=3
B: KEY=101680 0 10000 40000000
I: Bus=0013 Vendor=dead Product=beef Version=0101
N: Name="S5P TouchScreen"
P: Phys=input(ts)
S: Sysfs=/devices/virtual/input/input1
U: Uniq=
H: Handlers=mouse0 event1
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="gslX680"
P: Phys=
S: Sysfs=/devices/platform/s3c2440-i2c.1/i2c-1/1-0040/input/input2
U: Uniq=
H: Handlers=mouse1 event2
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
其中N: Name=“gslX680” 就是我的ts设备,可知gslX680对应的设备文件是event2。
通过 cat /dev/input/event2 ,然后点击触摸屏,console上会打印字符(乱码),说明触摸功能OK。 通过写APP测试,把之前写好的触摸程序拷贝到当前目录下执行,查看是否有打印输出也可测试。
tslib 移植
tslib是QT依赖的一个库(本来使用用来做触摸屏校准功能用的),故需要进行移植。
1、下载好 tslib-1.4.tar.gz 安装包。 2、cp到ubuntu的目录下(我的是~/x210/QT5.x_Porting/),然后解压tar -xvf tslib-1.4.tar.gz 3、配置
cd tslib
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache
mkdir /opt/tslib
./configure --prefix=/opt/tslib --host=arm-linux --cache-file=arm-linux.cache
注:如果报错,./autogen.sh: 4: autoreconf: not found ,是因为系统中没有安装autoconf工具 解决方法:先让ubuntu能上网,然后执行:sudo apt-get install autoconf automake libtool 4、编译、安装
make
sudo make install
5、部署 把安装好的tslib的相关文件cp到开发板系统中,主要包括以下这些文件: (1)动态库文件so (2)配置文件 (3)bin文件 可以直接把ubuntu中的生成的/opt/tslib/目录整个拷贝到开发板rootfs目录下或某个目录下,然后清除一些不必要的文件(include目录,lib下的.la静态库)即可。
6、定义tslib运行需要的环境变量
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_CALIBFILE=/tslib/etc/pointercal
export TSLIB_CONFFILE=/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tslib/lib
export TS_INFO_FILE=/sys/class/input/input2/uevent
把上面的这些语句添加到rootfs下的/etc/profile 中。然后重启才能执行生效。
7、运行和测试 重启后,进入/tslib/bin/下执行./ts_calibrate 报错:
No raw modules loaded.
ts_config: No such file or directory
解决:在/tslib/etc/ts.conf中打开module raw input 这行的注释就行了。
再次执行。报错:selected device is not a touchscreen I understand 郁闷~
分析思路:通过打印的这个信息进行查找定位(在ubuntu下用grep -rl "关键字"查找),发现是问题大概是EV_VERSION这个宏的问题。 在网上找了一下解决方法,一个是修改内核中的宏,二是修改编译链中的宏。因为修改内核比较麻烦,故修改了编译链中的宏。 修改后,重新配置tslib库,按上面配置移植步骤,把修改生成后的tslib拷贝到开发板并做好修改。
再次执行/tslib/bin/下的
./ts_calibrate
成功!
|