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的程序裏使用觸摸屏了!














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章