新聞中心

QTE/Qtopia在Liod-270上的移植

——
作者:億道電子技術(shù)有限公司 時(shí)間:2006-07-07 來(lái)源:電子產(chǎn)品世界 收藏

一、Qt、Liod-270平臺(tái)簡(jiǎn)介 
 
Qt/Embedded是著名的Qt庫(kù)開(kāi)發(fā)商TrollTech(http://www.trolltech.com/)發(fā)布的面向的Qt版本。因?yàn)镼t是KDE等項(xiàng)目使用的GUI支持庫(kù),所以有許多基于Qt的X Window程序可以非常方便地移植Qt/Embedded版本上。自從Qt/Embedded發(fā)布以來(lái),就有大量的嵌入式Linux開(kāi)發(fā)商轉(zhuǎn)到了Qt/Embedded系統(tǒng)上,并且有多種免費(fèi)版本可以使用。本次2006年"英特爾杯"全國(guó)大學(xué)生電子競(jìng)賽所用的Liod-270平臺(tái),除了可以使用TinyX以外也可以選擇Qt。本文將以?xún)|道電子提供的Liod-270平臺(tái)為例,詳細(xì)說(shuō)明QTE/Qtopia的移 植過(guò)程。
Trolltech提供三大Qtopia版本:Qtopia手機(jī)版,Qtopia PDA版本和Qtopia消費(fèi)電子產(chǎn)品平臺(tái)。本文采用的是Qtopia PDA版的免費(fèi)版本。
 
此次競(jìng)賽平臺(tái)Liod是億道電子設(shè)計(jì)、生產(chǎn)并捐贈(zèng)的。武耀博德信息技術(shù)有限公司( www.51board.com )是 億道電子 旗下全資控股的嵌入式方案設(shè)計(jì)公司,其前身是億道電子的嵌入式研發(fā)中心。武耀博德專(zhuān)業(yè)提供基于英特爾嵌入式處理器的ODM/OEM項(xiàng)目設(shè)計(jì)、測(cè)試、生產(chǎn)服務(wù),涉及從高校實(shí)驗(yàn)平臺(tái)、導(dǎo)航系統(tǒng)、數(shù)字家庭、多媒體終端、行業(yè)PDA、監(jiān)控項(xiàng)目、工業(yè)控制、RFID物流項(xiàng)目等等領(lǐng)域。

二、移植過(guò)程
1.編譯準(zhǔn)備
在編譯QTE和QPE之前,我們先要下載QTE和QPE的源代碼。
上述的軟件都可以在"英特爾杯"全國(guó)大學(xué)生電子競(jìng)賽的支持網(wǎng)站(www.xsbase.com )上下載得到。解壓上述的源代碼包。
2.安裝Toolchain
使用cp命令將 Xsbase-arm-linux-qt.tar.gz文件拷貝到PC上/usr/local/下,然后進(jìn)入到/usr/local/目錄下,解壓該文件。
為了之后在任何目錄下面都能夠使用Toolchain,必須要對(duì)路徑進(jìn)行設(shè)置。打開(kāi)/root/.bash_profile文件來(lái)設(shè)置路徑,用VI編輯器打開(kāi)/root/.bash_profile文件并添加下述的路徑: 
 
保存并退出該文件,使用source命令來(lái)使其路徑起作用。

3. 編譯Qt/X11
編譯qt-x11的唯一目的就是為編譯QTE提供uic(用戶(hù)接口編譯器)uic用來(lái)把.ui文件轉(zhuǎn)成.h和.cpp文件.uic是for x86的文件。 
 
 
4. 編譯QTE的庫(kù) 
 
拷貝qconfig-qpe.h文件到QTE中。 
 
進(jìn)入到qt-2.3.7文件夾里面,并進(jìn)行configure。 
 
configure 選項(xiàng)中:-qconfig qpe是編譯qtopia的配置參數(shù)。執(zhí)行configure的話(huà)會(huì)問(wèn)到如下幾個(gè)問(wèn)題:
- 是否同意license?選擇yes。
- 選擇colordepth時(shí)選擇16。 
- 是否支持Qt Virtual Framebuffer?在ARM上用,可以選擇 no。Qt Virtual Framebuffer(qvfb)程序在X上實(shí)現(xiàn)Framebuffer。
環(huán)境設(shè)置結(jié)束后彈出如下信息,因?yàn)槭窃O(shè)置為ARM用,最下面一行的Build Type中會(huì)出現(xiàn)linux-arm-g++ -share。

然后就可以執(zhí)行make sub-src。
編譯結(jié)束后查看Qt/Embedded 庫(kù)來(lái)確認(rèn)編譯是否正常。確認(rèn)各個(gè)庫(kù)文件的連接關(guān)系。
利用file命令確認(rèn)生成的執(zhí)行文件是否適合目標(biāo)平臺(tái)即生成ARM平臺(tái)的二進(jìn)制文件。 
 
前面將QT/E編譯了目標(biāo)板上,但我們發(fā)現(xiàn)還不能進(jìn)行操作,那是因?yàn)榘遄拥挠|摸屏設(shè)備驅(qū)動(dòng)和QT/E的readMouseData()函數(shù)不匹配,需要修改QT/E源代碼。利用vi工具打開(kāi)管理觸摸屏的QT/E源代碼/root/qt-2.3.7/src/kernel/qwsmouse_qws.cpp,并參考ARMLinux系統(tǒng)的觸摸屏ADS7843驅(qū)動(dòng)代碼(/driver/char/ads7843_ts.c)中的讀函數(shù)來(lái)適當(dāng)?shù)匦薷膮?shù)值。
下面是修改好的readMouseData()的代碼。
5編譯工具庫(kù)
編譯Qtopia的時(shí)候需要用到j(luò)peg和libuuid的庫(kù)。這兩個(gè)庫(kù)需要編譯到我們的交叉編譯工具中。
首先編譯e2fsprogs。

進(jìn)入到e2fsprogs-1.32/lib/uuid文件夾里面,打開(kāi)uuidP.h文件,把#include <ext2_types.h>改成#include "ext2_types.h"。修改e2fsprogs-1.32/lib/uuid下面的Makefile文件。 
 
編譯后會(huì)生成我們需要的庫(kù)文件libuuid.a。
我們需要把它拷貝到我們的工具鏈中。 
 
Qtopia里面的BMP和JPEG格式的圖片的顯示需要調(diào)用到JPEG的庫(kù)函數(shù),因此我們需要編譯jpeg的庫(kù)。

Configure后生產(chǎn)Makefile文件,我們需要編譯jpeg for ARM的庫(kù),編譯前需要修改Makefile。 
 
然后進(jìn)行make 就可以了。

6 編譯Qtopia
所有的準(zhǔn)備工作就完成了,就可以開(kāi)始編譯QT的圖形用戶(hù)界面Qtopia了。先解壓。

先configure一下。
然后直接make一下就開(kāi)始編譯Qtopia了。
編譯完成后,我們可看到以下的文件夾是我們需要的。包括文件夾目錄apps , bin , etc , li8n , lib , pics , plugins ,include共八個(gè)文件夾。
7運(yùn)行Qtopia
在文件系統(tǒng)的/usr目錄下新建一個(gè)qpe文件夾,把上面編譯好的Qtopia文件夾拷貝到這個(gè)qpe文件夾里面,同時(shí)把qt-2.3.7/lib下面的庫(kù)文件和font文件夾一起拷貝到文件系統(tǒng)的/usr/qpe/lib下面。
運(yùn)行Qtopia。運(yùn)行后,首先可以看到Welcom to Qtopia,然后一些語(yǔ)言和時(shí)間的設(shè)置,最后就可以看到類(lèi)似下面的界面,至此就移植全部完成了。讀者有任何問(wèn)題可以在www.xsbase.com 上留貼。
在這里,感謝上海交大、英特爾、億道對(duì)本文的支持。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉