Qt 4.5.3 +tslib1.4移植

 

Qt 4.5.3 tslib1.4 移植

 

我的編譯環境是: ubuntu 10.04+Qt 4.5.3+tslib1.4

需要的軟件包:     arm-linux-gcc-3.4.1.tar.bz2 (交叉編譯)

                                            qt-x11-opensource-src-4.5.3.tar.gz

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

                                            tslib-1.4.tar.gz


. 配置交叉編譯環境

下載 arm-linux-gcc-3.4.1.tar.bz2 地址: http://download.csdn.net/source/2889583

具體安裝就不細講了,可以參照 http://blog.csdn.net/qq419036154/archive/2010/12/05/6056803.aspx

我的交叉編譯安裝路徑是 /usr/local/arm/3.4.1

 

. 安裝 X11

 

# tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz

# cd qt-x11-opensource-src-4.5.3

# ./configure

# make

# make install

qt-x11 被安裝到此目錄下 /usr/local/Trolltech/Qt-4.5.3

編譯 qvfb:

# cd qt-x11-opensource-src-4.5.3/tools/qvfb

# make

會在 qt-x11-opensource-src-4.5.3/bin 下生成 qvfb 文件

 

 

. 安裝pc 機的 x86

 

解壓:

# tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz

更名:

mv qt-embedded-linux-opensource-src-4.5.3 qt-embedded-linux-opensource-src-4.5.3-x86

編譯:

# cd qt-embedded-linux-opensource-src-4.5.3-x86

# ./configure -embedded x86 -qvfb ( 千萬不要落了- qvfb)

# make

# make install

qt-embedded 被安裝在這個目錄下 /usr/local/Trolltech/QtEmbedded-4.5.3

新建一個 setenv.sh 文件內容如下:

export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3

export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbeded-4.5.3/lib:$LD_LIBRARY_PATH


qt-x11-opensource-src-4.5.2/bin 下生成的 qvfb 文件 copy /usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin


 

. 安裝 tslib1.4

 

下載 tslib1.4 地址: http://download.csdn.net/source/2889575

1. 安裝編譯過程需用到的程序
sudo apt-get install autoconf(
autoconf2.13)
sudo apt-get install automake
sudo apt-get install libtool

2. 解壓配置

$tar xzvf tslib-1.4.tar.gz

$./autogen.sh

$echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
$./configure --prefix=/usr/local/tslib --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no

 

其中ac_cv_func_malloc_0_nonnull=yes 是爲解決如下編譯錯誤設置的
ts_test.o: In function `main':
ts_test.c:(.text+0x1d8): undefined reference to `rpl_malloc'
fbutils.o: In function `open_framebuffer':
fbutils.c:(.text+0xa20): undefined reference to `rpl_malloc'
collect2: ld returned 1 exit status

參數--enable-inputapi=no. 是爲了解決運行中提示 ts_open:Inappropriate ioctol for devic
它表示不使用ioctl來控制觸摸屏。

3. 編譯安裝
$make
$sudo make install
PC/ usr/local/tslib/
下生成觸摸屏運行庫。

五 . 安裝 embedded-ARM

 

解壓

$ tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz

更名

$mv qt-embedded-linux-opensource-src-4.5.3 qt-embedded-linux-opensource-src-4.5.3-arm

進入

$cd qt-embedded-linux-opensource-src-4.5.3-arm


配置

$./configure -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib


(藍色標註的路徑最好不要改變)

$make

#make install

qt-embeded 被安裝在這個目錄下 /usr/local/Trolltech/QtEmbedded-4.5.3-arm

這裏你可以新建一個 setenv.sh 文件

把下面複製到文件中

export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.3-arm

export PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib:$LD_LIBRARY_PATH

 


六 . 移植到開發板

 

接下來通過 NFS 測試是否成功( NFS 安裝請參照http://blog.csdn.net/qq419036154/archive/2010/12/05/6056824.aspx

先創建 3 nfs 共享文件夾, /nfsboot /fonts /tslib

1. 準備庫

sudo cp -a /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/ /nfsboot/ 然後在 /usr/local/arm/3.4.1/arm-linux/lib 裏面找這些庫

librt.so librt.so.1 librt-2.3.2.so libstdc++.so libstdc++.so.6libstdc++.so.6.0.1,libgcc_s.so.1

將上面這些庫拷貝到 /nfsboot/lib


2. 準備字體

cp -arf /usr/local/Trolltect/QtEmbedded-4.5.3- arm/lib/fonts /fonts


3. 準備 tslib 文件

sudo cp -a /usr/local/tslib/* /tslib

 

4. 修改觸摸屏配置文件

tslib 程序在運行的時候是通過打開 / 關閉 ts.conf 配置文件來配置相應的文件,根據我們板子的實際需求我們修改如下:

vi /usr/local/tslib/etc/ts.conf

我的設備驅動是 h3600 ,所以將 14 # module_raw h3600 前面的 # 和空格去掉

內容如下:

module_raw h3600

module pthres pmin=1 // Pthres : Tslib 提供的觸摸屏靈敏度門檻插件

module variance delta=30 // Variance: Tslib 提供的觸摸屏濾波算法插件

module dejitter delta=100 //Dejitter: Tslib 提供的觸摸屏去噪算法插件

module linear // Linear: Tslib 提供的觸摸屏座標變換插件


去掉哪個主要取決於你的驅動類型

 

5. 掛載文件

接下來將開發板和主機通過網線連接起來,並在開發板裏進行 mount , 先配置 PC 機上的 IP ,所配

 

置的 IP 要於開發板的 IP 在同一個網段,在開發板上建立目錄 /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib 和 /usr/local/tslib

然後掛載:

(a). 掛載 Qt 庫文件

mount -t nfs -o nolock -o tcp 192.168.0.16:/nfsboot /mnt


(b). 掛載字體 lib 目錄的 fonts

因爲 Qtopia 默認查找字體的目錄是 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts ,所以我們要在開發板

 

上建立一條 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts 路徑

 

#mkdir /usr/local && mkidr /usr/local/Trolltech &&mkdir /usr/local/Trolltech/QtEmbedded-4.5.3-arm &&/usr

 

/local/Trolltech/QtEmbedded-4.5.3-arm/lib


然後進行掛載:

mount -t nfs -o nolock -o tcp 192.168.0.16:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib


(c). 掛載 tslib 庫文件

在開發板上建立一條 /usr/local/tslib 路徑

然後進行掛載:

mount -t nfs -o nolock -o tcp 192.168.0.16:/tslib /usr/local/tslib (掛載 tslib 庫文件)


6. 設置環境變量

export T_ROOT=/usr/local/tslib                                 // 開發板上 tslib 的路徑

export TSLIB_CONSOLEDEVICE=none                // 設定控制檯設備爲 none

export TSLIB_FBDEVICE=/dev/fb0                          // 指定幀緩衝設備

export TSLIB_TSDEVICE=/dev/h3600_tsraw         // 觸摸屏設備節點文件

export QWS_MOUSE_PROTO=Tslib:/dev/h3600_tsraw

export LD_LIBRARY_PATH=$T_ROOT/lib:/mnt/lib          // 庫文件的路徑

export TSLIB_CALIBFILE=/etc/pointercal                  // 指定觸摸屏校準文件 pintercal 的存放位置

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf      //tslib 配置文件的位置

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts             // 觸摸屏插件所在路徑

export QWS_SIZE=640x480


在配置環境變量時要注意 TSLIB_TSDEVICE ,這取 決於具體的設備驅動了 , 事件驅動用 export TSLIB_TSDEVICE=/dev/input/event0 ,而 h3600 用如下配置 export TSLIB_TSDEVICE=/dev/h3600_tsraw

 

 

7.校準觸摸屏

觸摸屏的前提是你的觸摸屏驅動已經寫好 , 並加載進了內核。 你可以測試有沒有加載觸摸屏驅動, /dev/touchscreen/0( 這是我板子上的觸摸節點 )

# cat /dev/touchscreen/0

看終端有無信息顯示,若有則表明正確

進行校準:

cd /usr/local/tslib/bin
./ts_calibrate

如果正常,則會在校準文件會保存在 /etc/pointercal

接下來就可以運行 qt 程序了

#./dialog -qws &

如果出現問題一般都是缺少庫文件或者環境變量沒設置好

 

 

發佈了43 篇原創文章 · 獲贊 11 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章