基于Qt/Embedded的GUI移植及應(yīng)用程序開發(fā)
發(fā)布時(shí)間:2007/9/11 0:00:00 訪問(wèn)次數(shù):820
隨著互聯(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è)十分友好的圖形用戶界面(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嵌入式開發(fā)板上。整個(gè)系統(tǒng)包括四部分:
(1)引導(dǎo)裝載程序(BootLoader),這是一段駐留在開發(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)圖形用戶界面,采用基于Qt/Embedded的Qtopia桌面環(huán)境;
(4)應(yīng)用程序的編寫與添加。本文重點(diǎn)介紹圖形用戶界面的移植和添加應(yīng)用程序。表1給出了整個(gè)系統(tǒng)平臺(tái)的結(jié)構(gòu)。
表1 系統(tǒng)平臺(tái)構(gòu)建
2 硬件平臺(tái)的選擇
采用XSBase255開發(fā)板,這是一款比較理想的PDA、手機(jī)等等應(yīng)用的開發(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.1 Qt/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è)專門為小型設(shè)備提供圖形用戶界面的應(yīng)用框架和窗口系統(tǒng)。提供了豐富的窗口小部件(Widgets),并且還支持窗口部件的定制,因此它可以為用戶提供漂亮的圖形界面。Qt 是 KDE 等項(xiàng)目使用的 GUI 支持庫(kù),所以有許多基于 Qt 的 X Window 程序可以非常方便地移植到 Qt/Embedded 版本上。最終,在分析和比較了各種GUI的特點(diǎn),我們選用Qt/Embedded作為移植對(duì)象。
3.2 Qt/Embedded底層支持分析
不管你選擇的標(biāo)準(zhǔn)如何,大量現(xiàn)成的COTS電路板對(duì)于高性能嵌入式系統(tǒng)開發(fā)過(guò)程來(lái)說(shuō)是至關(guān)重要的。當(dāng)設(shè)計(jì)師拓展技術(shù)邊界時(shí),電路板供應(yīng)商與標(biāo)準(zhǔn)化組織都必須趕緊升級(jí)規(guī)范,并用相應(yīng)產(chǎn)品填補(bǔ)空缺。如果一直成功的COTS產(chǎn)品出現(xiàn)問(wèn)題,則可能是業(yè)界不能決定一種或兩種交換結(jié)構(gòu)技術(shù)。在供應(yīng)商制造的電路板支持多達(dá)6種相互競(jìng)爭(zhēng)結(jié)構(gòu)的情況下,預(yù)計(jì)按同一標(biāo)準(zhǔn)生產(chǎn)的模塊之間的互操作問(wèn)題會(huì)日益嚴(yán)重。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)用程序可以直接寫內(nè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ū)。用戶可以將它看成是顯示內(nèi)存的一個(gè)映象,將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫操作了,而寫操作可以立即反映在屏幕上。framebuffer驅(qū)動(dòng)程序[1]是最重要的驅(qū)動(dòng)程序之一,正是這個(gè)驅(qū)動(dòng)程序才能使系統(tǒng)屏幕顯示內(nèi)容。其實(shí)現(xiàn)分為兩個(gè)方面:一是對(duì)LCD及其相關(guān)部件的初始化,包括畫面緩沖區(qū)的創(chuàng)建和對(duì)DMA通道的設(shè)置;二是對(duì)畫面緩沖區(qū)的讀寫,具體到代碼為read、write等系統(tǒng)調(diào)用接口。
3.
隨著互聯(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è)十分友好的圖形用戶界面(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嵌入式開發(fā)板上。整個(gè)系統(tǒng)包括四部分:
(1)引導(dǎo)裝載程序(BootLoader),這是一段駐留在開發(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)圖形用戶界面,采用基于Qt/Embedded的Qtopia桌面環(huán)境;
(4)應(yīng)用程序的編寫與添加。本文重點(diǎn)介紹圖形用戶界面的移植和添加應(yīng)用程序。表1給出了整個(gè)系統(tǒng)平臺(tái)的結(jié)構(gòu)。
表1 系統(tǒng)平臺(tái)構(gòu)建
2 硬件平臺(tái)的選擇
采用XSBase255開發(fā)板,這是一款比較理想的PDA、手機(jī)等等應(yīng)用的開發(fā)系統(tǒng)。采用高性能(400MHz主頻)和低功耗的Intel A255 處理器,64Mb SDRAM以及32MB 的FLASH(閃存)組成。640*480分辨率的LG TFT LCD,和觸摸屏驅(qū)動(dòng)ADS7843。A255處理器是Intel公司新近推出的取代Strong ARM的新一代嵌入式應(yīng)用處理器,它擁有Thumb壓縮指令、64位長(zhǎng)乘法指令、擴(kuò)展型DSP指令等先進(jìn)特性。A255具有眾多的擴(kuò)展接口與無(wú)線接口,可支持PCMCIA、Compact Flash、MMC/SD Card、USB、Bluetooth IF、IrDA等設(shè)備。
3 嵌入式GUI的移植
3.1 Qt/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è)專門為小型設(shè)備提供圖形用戶界面的應(yīng)用框架和窗口系統(tǒng)。提供了豐富的窗口小部件(Widgets),并且還支持窗口部件的定制,因此它可以為用戶提供漂亮的圖形界面。Qt 是 KDE 等項(xiàng)目使用的 GUI 支持庫(kù),所以有許多基于 Qt 的 X Window 程序可以非常方便地移植到 Qt/Embedded 版本上。最終,在分析和比較了各種GUI的特點(diǎn),我們選用Qt/Embedded作為移植對(duì)象。
3.2 Qt/Embedded底層支持分析
不管你選擇的標(biāo)準(zhǔn)如何,大量現(xiàn)成的COTS電路板對(duì)于高性能嵌入式系統(tǒng)開發(fā)過(guò)程來(lái)說(shuō)是至關(guān)重要的。當(dāng)設(shè)計(jì)師拓展技術(shù)邊界時(shí),電路板供應(yīng)商與標(biāo)準(zhǔn)化組織都必須趕緊升級(jí)規(guī)范,并用相應(yīng)產(chǎn)品填補(bǔ)空缺。如果一直成功的COTS產(chǎn)品出現(xiàn)問(wèn)題,則可能是業(yè)界不能決定一種或兩種交換結(jié)構(gòu)技術(shù)。在供應(yīng)商制造的電路板支持多達(dá)6種相互競(jìng)爭(zhēng)結(jié)構(gòu)的情況下,預(yù)計(jì)按同一標(biāo)準(zhǔn)生產(chǎn)的模塊之間的互操作問(wèn)題會(huì)日益嚴(yán)重。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)用程序可以直接寫內(nè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ū)。用戶可以將它看成是顯示內(nèi)存的一個(gè)映象,將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫操作了,而寫操作可以立即反映在屏幕上。framebuffer驅(qū)動(dòng)程序[1]是最重要的驅(qū)動(dòng)程序之一,正是這個(gè)驅(qū)動(dòng)程序才能使系統(tǒng)屏幕顯示內(nèi)容。其實(shí)現(xiàn)分為兩個(gè)方面:一是對(duì)LCD及其相關(guān)部件的初始化,包括畫面緩沖區(qū)的創(chuàng)建和對(duì)DMA通道的設(shè)置;二是對(duì)畫面緩沖區(qū)的讀寫,具體到代碼為read、write等系統(tǒng)調(diào)用接口。
3.
熱門點(diǎn)擊
- 基于Qt/Embedded的GUI移植及應(yīng)用
- 用Altera FLEX 10K可編程邏輯器
- 嵌入式電阻與電容
- 基于PSL語(yǔ)言的數(shù)字集成電路功能覆蓋率測(cè)試
- 用SignalTap嵌入邏輯分析儀驗(yàn)證PLD
- 利用MATLAB增強(qiáng)MAX+PLUS II的
- 基于VHDL語(yǔ)言的智能撥號(hào)報(bào)警器的設(shè)計(jì)
- 一種基于移位寄存器的CAM的Verilog
- 用FPGA技術(shù)實(shí)現(xiàn)模擬雷達(dá)信號(hào)
- 現(xiàn)代可編程計(jì)算機(jī)控制器PCC及其應(yīng)用
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- 首款新結(jié)構(gòu)硅基外腔混合集成光源芯片
- 全大核架構(gòu) X930 超大核的
- 計(jì)算子系統(tǒng)(Compute Sub Syst
- Neoverse CSS V3 架構(gòu)R
- Arm Neoverse CP
- Dimensity 9400芯
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究