QT4程序在聚芯开发板上使用触摸屏

                                                 主要完成触摸屏在QT程序下的使用,
我的开发环境:
ubuntu 9.04

开发板:
博创“中国龙”聚芯开发板

gcc -v
线程模型:posix
gcc 版本 4.3.3 (Ubuntu 4.3.3-5ubuntu4)

mipsel-linux-gcc -v
Thread model: posix
gcc version 4.1.2

开发板内核 linux-2.6.18-erasoc-ts

QT:qt-embedded-linux-opensource-src-4.5.3.tar.gz

TSLIB(触摸屏): tslib-1.4

一、内核配置支持触摸屏
  <*> Erasoc Touch Screen driver support based on SPI Controller   

  <*>   Touchscreen interface                                                                  
                        (640)   Horizontal screen resolution                                                         
                        (480)   Vertical screen resolution

  <*>   Event interface     

  [*]   Touchscreens  --->   里面什么都不用选

重新编译内核,烧写到开发板,
在开发板内核启动中会有触摸屏的初始化显示:

era1000fb: LCD controller driver for EraSoC 1000                                
era1000fb: Panel VGA_800x640_16 not supported!                                  
era1000fb: Panel=TFT_640x480_16 Mode=default                                    
Console: switching to colour frame buffer device 80x30                          
Success adding erasoc_ts_cdev!                                                  
From Erasoc touch screen driver GPIO_Ads7843_INIT                               
Erasoc touch screen  be initiated by GPIO model!                                
From Erasoc Touch Screen ------> IRQ: 54 is OK!                                 
erasoc-ts touch screen driver initialized successfully!

mice: PS/2 mouse device common for all mice                                     
ts: Compaq touchscreen protocol output  

测试触摸屏驱动是否完成:
echo 8>/proc/sys/kernel/printk

cat /dev/ts
这时按一下屏,如果有所显示,则说明触摸屏驱动基本完成了!


二、编译TSLIB
修改build.sh

#/bin/sh
export CC=/home/eleday/mipseltools-gcc412-glibc261/bin/mipsel-linux-gcc
./autogen.sh
#./configure --prefix=/mnt/nfs/tslib1.4-install --host=arm-linux
echo "ac_cv_func_malloc_0_nonnull=yes" >mipsel-linux.cache
./configure --host=mipsel-linux --cache-file=mipsel-linux.cache -prefix=/home/usb/lib/tslib1.4 --with-gnu-ld
make
make install

运行build.sh完成编译与安装

其中参数-prefix 是指定TSLIB的安装目录
make 的时候是报一些错,用sudo apg-get install 安装相应的库就行了!

三、编译QT4
我的configure :
./configure -release -make libs -xplatform qws/linux-mips-g++ -embedded mips -little-endian -no-separate-debug-info -depths 8,16,24,32  -qt-freetype -no-nis -no-qvfb -no-dbus -no-cups -no-dbus -no-iconv -no-largefile -no-openssl -qt-zlib -silent -no-largefile -no-mmx -no-3dnow -no-sse -no-sse2 -no-stl -no-phonon -no-svg -no-phonon-backend -no-webkit -nomake demos -nomake docs -qt-gfx-linuxfb -no-gfx-qvfb -qt-kbd-usb -qt-kbd-tty -no-kbd-qvfb -no-mouse-qvfb -no-mouse-bus -no-mouse-yopy -no-mouse-vr41xx -no-mouse-linuxtp -qt-mouse-pc -qt-mouse-tslib -I /home/usb/lib/tslib1.4/include -L /home/usb/lib/tslib1.4/lib -prefix /home/lx/lib 2>./configure_error.log

其中 -qt-mouse-tslib -I /home/usb/lib/tslib1.4/include -L /home/usb/lib/tslib1.4/lib 包含的是TSLIB安装之后的两个目录,这是QT4支持触摸屏的参数

-prefix /home/lx/lib 这个是QT程序运行时寻找的指定的是QT的安装目录,主要是用于寻找fonts 目录

在运行configure之前,先将TSLIB的库文件拷到QT4源安装目录的库目录下
 1、 将TSLIB的安装目录下的lib文件夹的目录与文件拷到QT4源安装目录下的lib目录下,cp加上参数  -arf
    
 2、将TSLIB的安装目录下的include文件夹的 ts* 文件拷到QT4源安装目录下的include目录下,cp加上参数  -arf

安装QT4-mipsel要注意的地方
1、mkspecs/qws/linux-mips-g++/qmake.conf
 
   mipsel-linux-gcc,g++等编译器前加上绝对路径
   
     去掉-mips32参数

2、src/corelib/qrch/mips/qatomic32.s
   在文件代码前面加上一行 .set mips3

3、交叉编译器的版本要尽量用高一点的。

四、设置环境变量

/lib 目录很重要,lib可以是一个真正的一目录,也可以是一个链接,批向一个包含库文件的目录,lib目录要包含有QT程序运行时库,这些库文件可以从QT4-embedded源文件编译之后得到。
或者可以通过改变环境变量,设置库目录的位置。

fonts 目录,QT程序运行时的字体都来处这里。如果configure 用了-prefix参数指定,则在这个目录下找,若没有,则在QT安装目录下找,这时可以建立一个链接模拟QT的安装目录指向实际的fonts目录。实际的fonts目录可以通过NFS挂载上。


环境变量如果一个一个的输入会很烦人的,所以通常写一个脚本程序,一次搞定,但是运行脚本程序时要注意一下,如我的环境变量设置ts.sh
# cat ts.sh
#!/bin/sh

export QTDIR=/home/usb
export LD_LIBRARY_PATH=$QTDIR/lib:/lib
export TSLIB_TSDEVICE=/dev/ts
export TSLIB_PLUGINDIR=$QTDIR/lib/ts
export TSLIB_CONSOLEDEVICE=none
export QT_TSLIBDIR=$QTDIR/lib
export TSLIB_CONFFILE=$QTDIR/etc/ts.conf
#export POINTERCAL_FILE=$QTDIR/etc/ts-calib.conf
export QWS_MOUSE_PROTO=tslib:/dev/ts
#export QWS_MOUSE_PROTO=pc:/dev/mice
export TSLIB_CALIBFILE=/etc/pointercal
#export TSLIB_CALIBFILE=$QTDIR/etc/ts-calib.conf
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export LANG=zh_CN
export QWS_DISPLAY="LinuxFb:mmWidth640:mmHeight480:0"
export TSLIB_FBDEVICE=/dev/fb0

运行时这样: #. ./ts.sh
两点中间再加一个空格,要不然有时候环境变量设不上的。

要注意各项的实际位置!

五、触摸屏的较准

在TSLIB的安装目录下,有四个目录,除了前面用到的include和lib两个目录外,还有一个bin目录和一个etc

etc 目录下有一个关键的配置文件ts.conf , 在上面的环境变量设置中已经用到了!
bin 目录是触摸屏的较准测试程序

执行 ./ts_calibrate -qws 进行较准
会依次在屏上显示5个点,只要在这几个点上按一下就好了!

若显示:No raw modules loaded.
则将ts.conf文件中的 #module_raw inpu 的注释符号去掉。

若显示:selected device is not a touchscreen I understand
则将ts.conf文件中的#module_raw h3600 的注释符号去掉。

触摸屏较准完成后会在/etc目录下生成一个/etc/pointercal 这样的文件,这个文件在上面的环境变量设置中也用到了。
这个时候就可以QT4的程序里使用触摸屏了!














你可能感兴趣的:(QT4程序在聚芯开发板上使用触摸屏)