新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Qt/Embedded的GUI移植及應(yīng)用程序開(kāi)發(fā)

基于Qt/Embedded的GUI移植及應(yīng)用程序開(kāi)發(fā)

作者: 時(shí)間:2005-08-17 來(lái)源: 收藏

基于Qt/Embedded的GUI移植及應(yīng)用程序開(kāi)發(fā)
 Transplantation of GUI and Implementation of  Application Based on Embedded Linux
       西安電子科技大學(xué)  白玉霞 劉旭輝 孫肖子
摘要:介紹了系統(tǒng)平臺(tái)構(gòu)建;重點(diǎn)分別從主機(jī)環(huán)境和XSbase 255開(kāi)發(fā)板兩部分介紹Qt/Embedded圖形界面的移植,最后結(jié)合實(shí)例闡述了如何開(kāi)發(fā)基于Linux的應(yīng)用程序以及文件系統(tǒng)鏡像的制作。
關(guān)鍵詞:Linux;嵌入式GUI;Qt/Embedded;Qtopia
Abstract: This article introduced the system designing , Introduced the transplanting process of host and XSbase 255 embedded platform. Combining with the development experience ,the procedure application development based on embedded linux and filesystem  image building was described in detail.
Key words: Embedded linux ;Embedded GUI;Qt/Embedded;Qtopia
隨著互聯(lián)網(wǎng)和移動(dòng)通信技術(shù)的日益成熟,兩者相互滲透和融合的步伐正在加快。21世紀(jì)被譽(yù)為“移動(dòng)之王”時(shí)代,與此同時(shí),嵌入式linux在手機(jī)、PDA(個(gè)人數(shù)字助理)等手持信息設(shè)備領(lǐng)域的應(yīng)用出現(xiàn)了一個(gè)強(qiáng)勁的發(fā)展勢(shì)頭。手持設(shè)備的關(guān)鍵在于人機(jī)交互技術(shù)的體現(xiàn),所以一個(gè)十分友好的圖形用戶(hù)界面(GUI)是必不可少的。
1 系統(tǒng)平臺(tái)構(gòu)建
本文構(gòu)建的系統(tǒng)是實(shí)現(xiàn)一個(gè)掌上信息處理終端系統(tǒng),集個(gè)人數(shù)字助理應(yīng)用、網(wǎng)絡(luò)應(yīng)用、多媒體應(yīng)用于一身,并成功運(yùn)行在XSbase255嵌入式開(kāi)發(fā)板上。整個(gè)系統(tǒng)包括四部分:(1)引導(dǎo)裝載程序(BootLoader),這是一段駐留在開(kāi)發(fā)板上的代碼,系統(tǒng)上電后首先被執(zhí)行,對(duì)CPU、內(nèi)存等進(jìn)行初始化,完成內(nèi)核映像的裝載和引導(dǎo);(2)Linux內(nèi)核,是在官方的2.4.18 linux內(nèi)核基礎(chǔ)上,加入了相應(yīng)的硬件驅(qū)動(dòng)和新的文件系統(tǒng)而構(gòu)成的;(3)圖形用戶(hù)界面,采用基于Qt/Embedded的Qtopia桌面環(huán)境;(4)應(yīng)用程序的編寫(xiě)與添加。本文重點(diǎn)介紹圖形用戶(hù)界面的移植和添加應(yīng)用程序。表1給出了整個(gè)系統(tǒng)平臺(tái)的結(jié)構(gòu)。

本文引用地址:http://butianyuan.cn/article/7626.htm

表1  系統(tǒng)平臺(tái)構(gòu)建

2 硬件平臺(tái)的選擇
采用XSBase255開(kāi)發(fā)板,這是一款比較理想的PDA、手機(jī)等等應(yīng)用的開(kāi)發(fā)系統(tǒng)。采用高性能(400MHz主頻)和低功耗的Intel  PXA255 處理器,64Mb SDRAM以及32MB 的FLASH(閃存)組成。640*480分辨率的LG TFT LCD,和觸摸屏驅(qū)動(dòng)ADS7843。PXA255處理器是Intel公司新近推出的取代Strong ARM的新一代嵌入式應(yīng)用處理器,它擁有Thumb壓縮指令、64位長(zhǎng)乘法指令、擴(kuò)展型DSP指令等先進(jìn)特性。PXA255具有眾多的擴(kuò)展接口與無(wú)線接口,可支持PCMCIA、Compact Flash、MMC/SD Card、USB、Bluetooth IF、IrDA等設(shè)備。
3嵌入式GUI的移植
3.1Qt/Embedded選取
嵌入式Linux系統(tǒng)的有代表性的GUI系統(tǒng)主要有MiniGUI、MicroWindows、Tiny X以及Qt/Embedded。這些GUI系統(tǒng)在接口定義、體系結(jié)構(gòu)、功能特性等方面存在著很大的差別。
Tiny-X,是標(biāo)準(zhǔn)X-windows在嵌入式系統(tǒng)的小巧實(shí)現(xiàn),作為一個(gè)圖形環(huán)境,X-window是成功的,但由于在體系接口上的原因,限制了它對(duì)游戲、多媒體的支持能力。    
MicroWindows,其主要特色在于提供了C/S體系結(jié)構(gòu),同時(shí)也提供了相對(duì)完善的圖形功能。但卻無(wú)任何硬件加速能力,圖形引擎中也存在著許多未經(jīng)優(yōu)化的低效算法。
MiniGUI,是建立在比較成熟的圖形引擎之上,其特點(diǎn)是小巧精致。它盡量保持與Win32的兼容,這樣在Win CE應(yīng)用的場(chǎng)合,也可以使用MiniGUI。
Qt/Embedded,是一個(gè)專(zhuān)門(mén)為小型設(shè)備提供圖形用戶(hù)界面的應(yīng)用框架和窗口系統(tǒng)。提供了豐富的窗口小部件(Widgets),并且還支持窗口部件的定制,因此它可以為用戶(hù)提供漂亮的圖形界面。Qt 是 KDE 等項(xiàng)目使用的 GUI 支持庫(kù),所以有許多基于 Qt 的 X Window 程序可以非常方便地移植到 Qt/Embedded 版本上。
最終,在分析和比較了各種GUI的特點(diǎn),我們選用Qt/Embedded作為移植對(duì)象。
3.2 Qt/Embedded底層支持分析
Qt/Embedded  以原始  Qt  為基礎(chǔ),并做了許多出色的調(diào)整以適用于嵌入式環(huán)境。Qt/Embedded  通過(guò)  Qt  API  與  Linux  I/O  設(shè)施直接交互,成為嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省內(nèi)存,因?yàn)樗恍枰粋€(gè)X服務(wù)器或是Xlib庫(kù),它在底層撅棄了X lib,采用framebuffer(幀緩沖)作為底層圖形接口。同時(shí),將外部輸入設(shè)備抽象為keyboard和mouse輸入事件。Qt/Embedde的應(yīng)用程序可以直接寫(xiě)內(nèi)核緩沖幀,這避免開(kāi)發(fā)者使用繁瑣的Xlib/Server系統(tǒng)。

表2  Qt/Embedded與Qt/X11的比較
Qt/Embedded的底層圖形引擎基于framebuffer,framebuffer出現(xiàn)在2.2.x以上內(nèi)核的版本當(dāng)中的一種驅(qū)動(dòng)程序接口。這種接口采用mmap系統(tǒng)調(diào)用,將顯示設(shè)備抽象為幀緩沖區(qū)。用戶(hù)可以將它看成是顯示內(nèi)存的一個(gè)映象,將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫(xiě)操作了,而寫(xiě)操作可以立即反映在屏幕上。framebuffer驅(qū)動(dòng)程序[1]是最重要的驅(qū)動(dòng)程序之一,正是這個(gè)驅(qū)動(dòng)程序才能使系統(tǒng)屏幕顯示內(nèi)容。其實(shí)現(xiàn)分為兩個(gè)方面:一是對(duì)LCD及其相關(guān)部件的初始化,包括畫(huà)面緩沖區(qū)的創(chuàng)建和對(duì)DMA通道的設(shè)置;二是對(duì)畫(huà)面緩沖區(qū)的讀寫(xiě),具體到代碼為read、write等系統(tǒng)調(diào)用接口。
3.3 Qt/Embedded和Qtopia的移植。
移植過(guò)程中我們采取了宿主機(jī)和目標(biāo)板的開(kāi)發(fā)模式。宿主機(jī)是一臺(tái)運(yùn)行Linux 的PC 機(jī),目標(biāo)板即hybus開(kāi)發(fā)板。先在宿主機(jī)上調(diào)試通過(guò)后,再移植到目標(biāo)板上。
3.3.1 宿主機(jī)上的移植
前面介紹過(guò)Qt/Embedded直接寫(xiě)入幀緩沖,在宿主機(jī)上則是通過(guò)qvfb(vitural framebuffer)來(lái)模擬幀緩沖。qvfb是X窗口用來(lái)運(yùn)行和測(cè)試Qtopia應(yīng)用程序的系統(tǒng)程序,允許我們?cè)谧烂婕捌渖祥_(kāi)發(fā)Qt嵌入式程序,而不需要在命令臺(tái)和X11之間來(lái)回切換。qvfb使用了共享存儲(chǔ)區(qū)域(虛擬的幀緩沖)來(lái)模擬幀緩沖并且在一個(gè)窗口中(qvfb)模擬一個(gè)應(yīng)用來(lái)顯示幀緩沖,顯示的區(qū)域被周期性的改變和更新。通過(guò)指定顯示設(shè)備的寬度和顏色深度,虛擬出來(lái)的緩沖幀和物理的顯示設(shè)備在每個(gè)像素上保持一致。這樣我們?cè)诿看握{(diào)試應(yīng)用時(shí)不需要總是刷新嵌入式設(shè)備的FLASH存儲(chǔ)空間,從而加速了應(yīng)用的編譯、連接和運(yùn)行周期。
因此在最初編譯配置嵌入式Linux內(nèi)核時(shí)必須使其支持幀緩沖。宿主機(jī)上的移植需要的工具及環(huán)境變量見(jiàn)表3。其中環(huán)境變量可以直接用export 來(lái)聲明,也可以在~/.bash_profile腳本文件中進(jìn)行設(shè)置。
特別指出,在配置qt-2.3.7時(shí),./configure -qconfig -qvfb -depths 4,8,16,32 就是指定Qt嵌入式開(kāi)發(fā)包生成虛擬緩沖幀工具qvfb,并支持4,8,16,32位的顯示顏色深度。運(yùn)行Qt的虛擬緩沖幀工具的方法是:在Linux圖形模式下運(yùn)行命令:./qvfb &。如果要把Qt嵌入式應(yīng)用程序的顯示結(jié)果輸出到虛擬緩沖幀時(shí),運(yùn)行時(shí)需在程序名后加上-qws選項(xiàng)。如./canvas-qws。
Qtopia即QPE(Qt PalmtopEnvironment)是由著名的Trolltech公司基于Qt的嵌入式版本Qt/Embedded庫(kù)的基礎(chǔ)上,專(zhuān)門(mén)針對(duì)PDA、SmartPhone這類(lèi)運(yùn)行嵌入式Linux的移動(dòng)計(jì)算設(shè)備和手持設(shè)備所開(kāi)發(fā)的開(kāi)放源碼的一套應(yīng)用程序包和開(kāi)發(fā)庫(kù)。Qtopia是基于qt/embedded程序庫(kù)編寫(xiě)的應(yīng)用程序環(huán)境,(Qtopia是Qt在Linux/embedded Linux版本里的一個(gè)application實(shí)現(xiàn)。)界面優(yōu)美。主要應(yīng)用于高端手機(jī),pda等嵌入式系統(tǒng),具有廣闊的發(fā)展前景。

表3  宿主機(jī)移植所需工具及環(huán)境變量聲明

表4  Qtopla配置編譯及其架構(gòu)
3.3.2 目標(biāo)板上的移植
目標(biāo)板上的移植與宿主機(jī)類(lèi)似,只需將編譯參數(shù)做一定的修改即可。表4列出了qtopia移植中qtembedded共享庫(kù)的支持,環(huán)境變量聲明和關(guān)鍵的編譯配置命令,以及最后目標(biāo)板上qpe的架構(gòu)。圖1是在XSbase255開(kāi)發(fā)系統(tǒng)上移植Qt/Embedded和Qtopia的顯示截圖。

圖1  基于XSbase的Qtopia圖形

表5 文件系統(tǒng)組織圖
4添加應(yīng)用程序到qtopia
如前所述,我們已經(jīng)安裝好了Qtopia應(yīng)用環(huán)境。下面介紹如何在Qtopia里添加我們編寫(xiě)的應(yīng)用程序(camera)例子,具體Qt程序的編寫(xiě)不在本文內(nèi)容之內(nèi)。
1) 建立camera程序的圖標(biāo)文件
制作一個(gè)32

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

linux相關(guān)文章:linux教程




關(guān)鍵詞: 嵌入式

評(píng)論


相關(guān)推薦

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

關(guān)閉