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