版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第第頁嵌入式Linux系統(tǒng)中的GUI系統(tǒng)的研究與移植介紹引言
嵌入式GUI為嵌入式系統(tǒng)供應了一種應用于特別場合的人們交互接口。嵌入式GUI要求簡潔、直觀、牢靠、占用資源小且反應快速,以適應系統(tǒng)硬件資源有限的條件。另外,由于嵌入式系統(tǒng)硬件本身的特別性,嵌入式GUI應具備高度可移植性與可裁減性,以適應不同的硬件條件和使用需求??傮w來講,嵌入式GUI具備以下特點:
*體積小;
*運行時耗用系統(tǒng)資源小;
*上層接口與硬件無關,高度可移植;
*高牢靠性;
*在某些應用場合應具備實時性。(收集整理)
1基于嵌入式Linux的GUI系統(tǒng)底層實現(xiàn)基礎
一個能夠移植到多種硬件平臺上的嵌入式GUI系統(tǒng),應用至少抽象出兩類設備:基于圖形顯示設備〔如VGA卡〕的圖形抽象層GAL〔GraphicAbstractLayer〕,基于輸入設備〔如鍵盤,觸摸層等〕的輸入抽象層IAL〔InputAbstractLayer〕。GAL層完成系統(tǒng)對詳細的顯示硬件設備的操作,極大程度上隱藏各種不同硬件的技術實現(xiàn)詳情,為誚程序開發(fā)人員供應統(tǒng)一的圖形編程接口。IAL層則需要實現(xiàn)對于各類不同輸入設備的掌握操作,供應統(tǒng)一的調用接口。GAL層與IAL層的設計概念,可以極大程序地提高嵌入式GUI的可移植性,如圖1所示。
目前應用于嵌入式Linux系統(tǒng)中比較成熟,功能也比較強大的GUI系統(tǒng)底層支持庫有SVGAlib、LibGGI、Xwindow、framebuffer等。
2三種嵌入式GUI系統(tǒng)的分析與比較
2.1Microwindows
Microwindows是一個典型的基于Server/Clinent體系結構的GUI系統(tǒng),基本分為三層,如圖2所示。
最底層是面對圖形顯示和鍵盤、鼠標或觸摸屏的驅動程序;中間層供應底層硬件的抽象接口,并進行窗口管理;最高層分別供應兼容于XWindow和ECMAAPIW〔Win32子集〕的API。其中使用NanoX接口的API與X接口兼容,但是該接口沒有供應窗口管理,如窗口移動和窗口剪切等高級功能,系統(tǒng)中需要首先啟動nanoX的Server程序nanoxserver和窗口管理程序nanowm。用戶程序連接nanoX的Server獲得自身的窗口繪制操作。使用ECMAAPIW編寫的應用程序無需nanoxserver和nanowm,可直接運行。
Microwindows供應了相對完善的圖形功能和一些高級的特性,如Alpha混合、三維支持和TrueType字體支持等。該系統(tǒng)為了提高運行速度,也改良了基于Socket套接字的X實現(xiàn)模式,采納了基于消息機制的Server/Client傳輸機制。Microwindows也有一些通用的窗口控件,但其圖形引擎存在很多問題,可以歸納如下:
*無任何硬件加速力量;
*圖形引擎中存在很多低效算法,如在圓弧圖函數(shù)的逐點推斷剪切的問題。
由于該項目缺乏一個強有力的核心代碼維護人員,Microwindows推出版本0.90后,該項目的進展開頭陷于停滯狀態(tài)。
2.2MiniGUI
MiniGUI是由國內自由軟件開發(fā)人員設計開發(fā)的,目標是為基于Linux的實時嵌入式系統(tǒng)供應一個輕量級的圖形用戶界面支持系統(tǒng)。MiniGUI的體系架構如圖3所示。
MiniGUI分為最底層的GAL層和IAL層,向上為基于標準POSIX接口中pthrea
d庫的Minithread架構和基于Server/Client的MiniLite架構。其中前者受限于thread模式對于整個系統(tǒng)的牢靠性影響——進程中某個thread的意外錯誤可能導致整個進程的崩潰,該架構應用于系統(tǒng)功能較為單一的場合。MiniLite應用于多進程的應用場合,采納多進程運行方式設計的Server/Client架構能夠較好地解決各個進程之間的窗口管理、Z序剪切等問題。MiniGUI還有一種從MiniLite衍生出的standalone運行模式。與Lite架構不同的是,standalone模式一次只能以窗口最大化的方式顯示一個窗口。這在顯示屏尺寸較小的應用場合具有肯定的應用意義。
MiniGUI的GAL層技術SVGAlib、LibGGI、基于framebuffer的native圖形引擎以及啞圖形引擎等,對于Trolltech公司的QVFB在XWindow下也有較好的支持。IAL層則支持Linux標準掌握臺下的GPM鼠標服務、觸摸屏、標準鍵盤等。
MiniGUI下豐富的控件資源也是MiniGUI的特點之一。當前MiniGUI的最新版本是1.3.3。該版本的控件中已經添加了窗口皮膚、工具條等桌面GUI中的高級控件支持。
2.3QT/Embedded
Qt/Embedded是有名的Qt庫開發(fā)商Trolltech公司開發(fā)的面對嵌入式系統(tǒng)的Qt版本。由于Qt是KDE等項目使用的GUI支持庫,很多基于Qt的XWindow程序因此可以特別便利地移植到Qt/Embedded上。Qt/Embedded同樣是Server/Client結構。
Qt/Embedded連續(xù)了Qt在X上的強大功能,在底層摒棄了Xlib,僅采納framebuffer作為底層圖形接口。同時,將外部輸入設備抽象為keyboard和mouse輸入大事,底層接口支持鍵盤、GPM鼠標、觸摸屏以及用戶自定義的設備等。
Qt/Embedded類庫完全采納C++封裝。豐富的控件資源和較好的可移植性是Qt/Embedded最為優(yōu)秀的一方面。它的類庫接口完全兼容于同版本的QtX11,使用X下的開發(fā)工具可以直接開發(fā)基于Qt/Embedded的應用程序QUI界面。
與前兩種GUI系統(tǒng)不同的是,Qt/Embedded的底層圖形引擎只能采納framebuffer。這就注定了它是針對高端嵌入式圖形領域的應用而設計的。由于該庫的代碼追求面面俱到,以增加它對多種硬件設備的支持,造成了其底層代碼比較凌亂,各種補丁較多的問題。Qt/Embedded的結構也過于冗雜臃腫,很難進行底層的擴充、定制和移植,尤其是用來實現(xiàn)signal/slot機制的moc文件。
Qt/Embedded當前的最新版本為3.3.2,能夠支持Trolltech的手持應用套件Qtopia的Qt/Embedded最高版本為2.3.8。Trolltech公司將于末推出的Qt/Embedded3為基礎的Qtopia2應用套件。
3三種嵌入式GUI的移植與中文化
在進行以上三種嵌入式GUI的討論和移植過程中,硬件平臺采納自行設計的以MotorolaMC9328MX1為核心的開發(fā)系統(tǒng)。該系統(tǒng)采納CPU內部LCD掌握器和320×240辨別率的16bppTFTLCD作為顯示設備,使用I2C總線擴展出16按鍵的鍵盤,同時配置了9位A/D量化精度的電阻觸摸屏作為鼠標類輸入設備;同時移植了ARMLinux作為操作系統(tǒng)。以下分別商量這三種嵌入式GUI的底層移植和中文化技術。
移植以上三種嵌入式GUI系統(tǒng),需要首先實現(xiàn)Linux內核中的framebuffer驅動。對應于開發(fā)系統(tǒng)為MC9328中的LCD掌握器,該部分驅動程序必需以靜態(tài)方式編譯進內核,在系統(tǒng)啟動時由傳遞進內核的啟動參數(shù)激活該設備。I2C鍵盤的驅動程序和觸摸屏的驅動程序實現(xiàn)后,作為Linux內核模塊在使用時動態(tài)加載。
3.1Microwindows的移植
Microwindows驅動層相應的源碼名目為src/drivers/。其中以scr*開頭的源碼是針對顯示設備的驅動接口,以mou*開頭的源碼文件為鼠標設備〔包括觸摸屏〕的驅動接口,以kbd*開頭的源碼文件針對鍵盤設備的驅動接口。移植過程中需要實現(xiàn)自己的設備驅動接口供應給Microwindows使用,就必需根據指定的接口格式編寫相應的scr、mou、kbd的底層支持。這種方式實現(xiàn)簡潔,條理也很清楚。
顯示設備驅動接口:Microwindows的圖形發(fā)生引擎支持framebuffer,修改src/中的config文件指定使用framebuffer作為底層圖形支持引擎;但需要留意嵌入式Linux的framebuffer較少支持掌握臺字符模式,需要修改Microwindows中對framebuffer的操作部分以關閉顯示模式的轉換。
在應用程序開發(fā)移植中需要留意的是:使用ECMAAPIW接口設計的程序無需nanoX的Server程序和nanowm。系統(tǒng)中可以直接啟動使用該接口編寫的用戶程序;但需要留意的是,一個系統(tǒng)中猶如時存在使用兩種不同的API接口編寫的進程,會造成nanoX的Server與ECMAAPIW的進程對系統(tǒng)硬件資源的使用競爭,雙方的程序將無法正常顯示或響應應用戶輸入。
在為Microwindows增加中文顯示的支持時,主要工作包括兩個部分。一部分是系統(tǒng)字體的中文支持。此處使用等寬光柵字體,主要負責窗口標題和內置控件的中文繪制,將字體編譯進Microwindows內核中,光柵信息作為一維數(shù)組,顯示時根據字符偏移量從該數(shù)組中調出相應的光柵信息顯示即可。除此之外,當程序調用CreateFont時,需要在內部實現(xiàn)為打開文件系統(tǒng)中的字體文件。通過修改src/engine/devfont.c中的GdCreateFont部分,添加相應的hzk〔漢字庫〕支持,便可以實如今CreateFont時創(chuàng)建出一個支持GB2312字符集的規(guī)律字體,并使用外部字體進行顯示。在應用程序設計時,假如沒有調用SelectObjectu將外部字體選入,中文顯示時將默認使用系統(tǒng)字體。
3.2MiniGUI
由于MiniGUI較好地將硬件設備抽象為GAL層和IAL層,移植時只需要針對自身的`硬件特點根據GAL層調用接口和IAL層調用接口來做內部實現(xiàn)即可。圖4為MiniGUI的GAL層結構示意,IAL層結構類似。
實現(xiàn)了framebuffer的Linux驅動后,配置MiniGUI選擇Native的GAL引擎,便可以使用framebuffer作為MiniGUI的圖形發(fā)生引擎。
MiniGUI的IAL層將輸入設備的輸入大事最終映射為GUI系統(tǒng)API層的消息大事。IAL層默認處理兩種設備的輸入操作:鍵盤設備和鼠標設備。鍵盤設備向上層供應不同的按鍵輸入信息,鼠標設備供應點擊、抬起和落筆坐標等的信息。在實現(xiàn)MiniGUI與輸入設備驅動的接口時,采納Select的方式獲得輸入設備的動作,并轉換為消息隊列中的消息。消息參數(shù)根據Win32接口定義為點擊鍵編號或鼠標當前的坐標〔其中觸摸屏大事與鼠標大事類似〕。通過編寫針對硬件開發(fā)系統(tǒng)的IAL支持代碼,實現(xiàn)了IAL層的移植。
MiniGUI中多字體和字符集支持是通過設備上下文〔DC〕的規(guī)律字體〔LOGFONT〕實現(xiàn)的,創(chuàng)建規(guī)律字體時指定相應的字符集,其內部實現(xiàn)為對于所需顯示字符的所屬字符集的識別處理,最終調用相應字符集的處理函數(shù)族。應用程序在啟動時,可切換系統(tǒng)字符集,如GB2312、BIG5、EUCKR、UJIS。MiniGUI的這種字符集支持方式不同于采納UNICODE的解決方案。在節(jié)約系統(tǒng)資源的意義上講,這種實現(xiàn)更加適合于嵌入式系統(tǒng)應用,是MiniGUI的一大創(chuàng)新點。MiniGUI同時支持包括ttf、bdf、type1、vbf等多種字體格式,可以依據需要配置MiniGUI來支持相應字體的顯示。
3.3Qt/Embedded的移植
Qt/Embedded的底層圖形引擎完全依靠于framebuffer,因此在移植時需考慮目標平臺的Linux內核版本和framebuffer驅動程序的實現(xiàn)狀況,包括辨別率和顏色深度等在內的信息。當前嵌入式CPU大多內部集成LCD掌握器,并支持多種配置方式。除少數(shù)CPU低顏色配置時的endian問題外,Qt/Embedded能夠較好地依據系統(tǒng)已有的framebuffer驅動接口構建上層的圖形引擎。
Qt/Embedded圖形發(fā)生引擎中的圖形繪制操作函數(shù)都是由源泉碼名目src/kernel/中的src/kernel/qgfxreaster_qws.cpp中所定義的QgfxRasterBase類發(fā)起聲明的。對于設備更加底層的抽象描述,則在src/kernel名目中的qgfx_qws.cpp中的Qscreen類中賜予相應定義。這些是對framebuffer設備直接操作的基礎,包括點、線、區(qū)域填充、alpha混合、屏幕繪制等函數(shù)均在其中定義實現(xiàn)。在framebuffer驅動程序調試通過后,配置Qt/Embedded的編譯選項,可以保證Qt/Embedded的圖形引擎正常工作。
Qt/Embedded中的輸入設備,同樣分為鼠標類與鍵盤類。其中鼠標設備在源泉碼名目中的src/kernel/qwsmouse_qws.cpp中實現(xiàn),從該類又重新派生出一些特別鼠標類設備的實現(xiàn)類,其派生結構如圖5所示。
依據詳細的硬件驅動程序實現(xiàn)的接口,可以實現(xiàn)類似的接口函數(shù)。
Qt/Embedded中對于鍵盤響應的實際函數(shù)位于src/kernel/qkeyboard_qws.cpp中,在qkeyboard_qws.h中,定義了鍵盤類設備接口的基類QWSKeyboardHandler。詳細的鍵盤硬件接口依舊要建立在鍵盤驅動程序基礎上,移植時需要依據鍵盤驅動程序從該類派生出實現(xiàn)類,實現(xiàn)鍵盤大事處理函數(shù)processKeyEve
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古典概型課件
- 2024年蒙陰縣幼兒園教師招教考試備考題庫帶答案解析(奪冠)
- 2025年聊城大學東昌學院馬克思主義基本原理概論期末考試模擬題帶答案解析
- 2025年山西金融職業(yè)學院馬克思主義基本原理概論期末考試模擬題帶答案解析(必刷)
- 2024年西吉縣幼兒園教師招教考試備考題庫含答案解析(必刷)
- 2024年湘陰縣招教考試備考題庫附答案解析
- 啟蒙運動知識點
- 2025年江西應用技術職業(yè)學院馬克思主義基本原理概論期末考試模擬題及答案解析(必刷)
- 2026年嘉興南洋職業(yè)技術學院單招綜合素質考試題庫帶答案解析
- 2025年鄖縣招教考試備考題庫及答案解析(奪冠)
- 客運駕駛員培訓教學大綱
- 園區(qū)托管運營協(xié)議書
- 2025年江蘇省蘇州市中考數(shù)學模擬試卷(含答案)
- GB/T 45133-2025氣體分析混合氣體組成的測定基于單點和兩點校準的比較法
- 九年級下冊語文必背古詩文(字帖描紅)
- 北京市行業(yè)用水定額匯編(2024年版)
- 婚內財產協(xié)議書標準版
- 基于大數(shù)據的金融風險評估模型構建
- 供應鏈與生產制造L1-L4級高階流程規(guī)劃框架 相關兩份資料
- 國際貿易合同履行中的運輸保險索賠程序與操作指南
- 龍澤滴灌帶生產項目可行性研究報告
評論
0/150
提交評論