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