QTE/Qtopia在Liod-270上的移植
一、Qt、Liod-270平臺簡介
Qt/Embedded是著名的Qt庫開發(fā)商TrollTech(http://www.trolltech.com/)發(fā)布的面向嵌入式系統(tǒng)的Qt版本。因?yàn)镼t是KDE等項(xiàng)目使用的GUI支持庫,所以有許多基于Qt的X Window程序可以非常方便地移植Qt/Embedded版本上。自從Qt/Embedded發(fā)布以來,就有大量的嵌入式Linux開發(fā)商轉(zhuǎn)到了Qt/Embedded系統(tǒng)上,并且有多種免費(fèi)版本可以使用。本次2006年"英特爾杯"全國大學(xué)生電子競賽所用的Liod-270平臺,除了可以使用TinyX以外也可以選擇Qt。本文將以億道電子提供的Liod-270平臺為例,詳細(xì)說明QTE/Qtopia的移 植過程。
Trolltech提供三大Qtopia版本:Qtopia手機(jī)版,Qtopia PDA版本和Qtopia消費(fèi)電子產(chǎn)品平臺。本文采用的是Qtopia PDA版的免費(fèi)版本。
此次競賽平臺Liod是億道電子設(shè)計(jì)、生產(chǎn)并捐贈(zèng)的。武耀博德信息技術(shù)有限公司( www.51board.com )是 億道電子 旗下全資控股的嵌入式方案設(shè)計(jì)公司,其前身是億道電子的嵌入式研發(fā)中心。武耀博德專業(yè)提供基于英特爾嵌入式處理器的ODM/OEM項(xiàng)目設(shè)計(jì)、測試、生產(chǎn)服務(wù),涉及從高校實(shí)驗(yàn)平臺、導(dǎo)航系統(tǒng)、數(shù)字家庭、多媒體終端、行業(yè)PDA、監(jiān)控項(xiàng)目、工業(yè)控制、RFID物流項(xiàng)目等等領(lǐng)域。
二、移植過程
1.編譯準(zhǔn)備
在編譯QTE和QPE之前,我們先要下載QTE和QPE的源代碼。
上述的軟件都可以在"英特爾杯"全國大學(xué)生電子競賽的支持網(wǎng)站(www.xsbase.com )上下載得到。解壓上述的源代碼包。
2.安裝Toolchain
使用cp命令將 Xsbase-arm-linux-qt.tar.gz文件拷貝到PC上/usr/local/下,然后進(jìn)入到/usr/local/目錄下,解壓該文件。
為了之后在任何目錄下面都能夠使用Toolchain,必須要對路徑進(jìn)行設(shè)置。打開/root/.bash_profile文件來設(shè)置路徑,用VI編輯器打開/root/.bash_profile文件并添加下述的路徑:
保存并退出該文件,使用source命令來使其路徑起作用。
3. 編譯Qt/X11
編譯qt-x11的唯一目的就是為編譯QTE提供uic(用戶接口編譯器)uic用來把.ui文件轉(zhuǎn)成.h和.cpp文件.uic是for x86的文件。
4. 編譯QTE的庫
拷貝qconfig-qpe.h文件到QTE中。
進(jìn)入到qt-2.3.7文件夾里面,并進(jìn)行configure。
configure 選項(xiàng)中:-qconfig qpe是編譯qtopia的配置參數(shù)。執(zhí)行configure的話會(huì)問到如下幾個(gè)問題:
- 是否同意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 庫來確認(rèn)編譯是否正常。確認(rèn)各個(gè)庫文件的連接關(guān)系。
利用file命令確認(rèn)生成的執(zhí)行文件是否適合目標(biāo)平臺即生成ARM平臺的二進(jìn)制文件。
前面將QT/E編譯了目標(biāo)板上,但我們發(fā)現(xiàn)還不能進(jìn)行操作,那是因?yàn)榘遄拥挠|摸屏設(shè)備驅(qū)動(dòng)和QT/E的readMouseData()函數(shù)不匹配,需要修改QT/E源代碼。利用vi工具打開管理觸摸屏的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ù)來適當(dāng)?shù)匦薷膮?shù)值。
下面是修改好的readMouseData()的代碼。
5編譯工具庫
編譯Qtopia的時(shí)候需要用到j(luò)peg和libuuid的庫。這兩個(gè)庫需要編譯到我們的交叉編譯工具中。
首先編譯e2fsprogs。
進(jìn)入到e2fsprogs-1.32/lib/uuid文件夾里面,打開uuidP.h文件,把#include <ext2_types.h>改成#include "ext2_types.h"。修改e2fsprogs-1.32/lib/uuid下面的Makefile文件。
編譯后會(huì)生成我們需要的庫文件libuuid.a。
我們需要把它拷貝到我們的工具鏈中。
Qtopia里面的BMP和JPEG格式的圖片的顯示需要調(diào)用到JPEG的庫函數(shù),因此我們需要編譯jpeg的庫。
Configure后生產(chǎn)Makefile文件,我們需要編譯jpeg for ARM的庫,編譯前需要修改Makefile。
然后進(jìn)行make 就可以了。
6 編譯Qtopia
所有的準(zhǔn)備工作就完成了,就可以開始編譯QT的圖形用戶界面Qtopia了。先解壓。
先configure一下。
然后直接make一下就開始編譯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下面的庫文件和font文件夾一起拷貝到文件系統(tǒng)的/usr/qpe/lib下面。
運(yùn)行Qtopia。運(yùn)行后,首先可以看到Welcom to Qtopia,然后一些語言和時(shí)間的設(shè)置,最后就可以看到類似下面的界面,至此就移植全部完成了。讀者有任何問題可以在www.xsbase.com 上留貼。
在這里,感謝上海交大、英特爾、億道對本文的支持。
評論