《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Linux的輕量級嵌入式GUI系統及實現
基于Linux的輕量級嵌入式GUI系統及實現
微計算機信息
趙英濤 柳翠寅 張春宇
摘要: 基于Linux的輕量級嵌入式GUI系統及實現,1、引言近年來,隨著信息家電、手持設備、無線設備的迅速發展,人們對嵌入式系統的需求逐漸增多,要求也越來越高。這使為嵌入式系統提供一個友好方便、穩定可靠的G UI系統成為非常緊迫要求[5]。嵌入式技術是當前微電
Abstract:
Key words :

1、引言

近年來,隨著信息家電、手持設備、無線設備的迅速發展,人們對嵌入式系統的需求逐漸增多,要求也越來越高。這使為嵌入式系統提供一個友好方便、穩定可靠的G UI系統成為非常緊迫要求[5]。嵌入式技術是當前微電子與計算機技術中的一個重要分支[1], 它是指以應用為中心, 以計算機技術為基礎,軟件、硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等的嚴格要求的專用計算機系統[2]。常用的PC機上的GU I因嵌入式設備對資源的嚴格要求顯得過于龐大,而不適合嵌入式系統[6]。與普通環境下的GUI 系統相比較.嵌入式環境下的GUI 系統要求輕型、占用資源少、高性能、高可靠性、可配置等。同時,由于嵌入式環境的多樣性,跨平臺、高移植性也是嵌入式GUI系統必須具備的特點。

盡管嵌入式系統對GUI 的需求越來越明顯,但目前GUI的實現方法各有不同,主要有二種; 第一種方法是某些大型廠商針對自身需要自主開發滿足自身需要的GUI 系統;第二種方法是某些廠商使用某些比較成熟的GUI系統。對于大部分廠商來說,第二種方法不失為一個省時省力、又可取得較好效果的方法。

2 GUI 系統發展概況

目前國內外已經推出了很多基于Linux的GUI產品, 比較成熟的面向嵌入式的GUI 系統有QtEmbedded 、MicroWindows 、MiniGUI 、WinCE 等[4]。

1)Microwindows 是一個公開源碼(LGPL)的項目。它致力于為一些小型的設備和平臺提供現代圖形窗口環境的一些特性,其主要特色是一個基于客戶/服務器體系結構的GUI 系統,采用了面向硬功件的驅動程序層、對硬件的接口層、向高層操作系統的API 層的三層體系結構。并提供了相對完善的圖形功能, 以及一些其他較高級的功能,比如Alpha 混合、三維支持、TrueType 字體支持等。但是有如下缺點:無任何硬件加速能力,圖形引擎中存在許多低效算法,且代碼質量較差。

2)MiniGUI是在Linux 控制臺上運行的,基于SVGALib 和LinuxThread 庫的多窗口圖形用戶界面支持系統。主要特色是基于線程來編寫,所有的應用研究程序都運行在同一個地址空間,這樣可以提高系統的效率。底層增加了圖形抽象層GAL 和基于輸入設備的輸入抽象層作為提供底層Linux 控制臺或者XWindow 上的圖形接口以及輸入接口。但是API沒有封裝,不便移植,功能限制其不能用于更大的嵌入式系統。

3)Qt/Embedded 是著名的Qt庫開發商Trolltech 公司開發的,是一個專門為嵌入式系統設計的圖形用戶界面工具包。它的主要特點是可移植到不同平臺上、擁有自己的窗口系統、擁有自己強大的開發工具和編程接口、提供壓縮字體格式、支持Unicode, 可以輕松地使程序支持多種語言。但是Qt/Embedded 不是免費的,使用者必須支持license 費用。

4)OpenGL 采用LGPL 條款發布。OpenGUI 比較適合于基于x86 平臺的實時系統,基于匯編實現的內核,并利用MMX 指令進行了優化使其運行速度快,但可移植性稍差。

這幾種GUI 的設計目標仍然是通用性,它們大多支持多窗口的隨意切換、覆蓋,以及可移動、可動態改變尺寸的窗口,諸如此類在多數嵌入式應用中幾乎永遠用不到的特性,使得應用程序的開發要考慮很多不必要的細節[5]。

以上的嵌入式GUI 系統已很成熟,但是對于一些需求自主開發輕型、功能簡潔、專用性強GUI 系統的用戶來說,以上的產品并不是一個很好的選擇。以上的GUI 系統一部分是收費的商業產品,另外是通用的GUI功能系統,對硬件資源非??粗氐那度胧较到y來說,多余無用的功能浪費硬件資源絕不是好的選擇。本文針對開發小型專用的嵌入式GUI 系統進行了研究,實現專用的GUI 系統的開發。

3 輕量級GUI 的設計與實現嵌入式GUI 系統采取分層設計的結構,對不同層次進行封裝。在最低層建立了硬件抽象層(HAL,Hard Abstract Layer),為基于圖形顯示設備(如VGA 卡)的圖形抽象層(Graphic Abstract Layer,GAL)和基于輸入設備(如鍵盤、觸摸屏等)的輸入抽象層(Input Abstract Layer,IAL) 。圖形抽象層GAL 建立在各種流行的繪圖引擎之上,屏蔽各種繪圖引擎的具體實現,對上層提供統一的底層繪圖接口。輸入抽象層IAL建立在各硬件設備驅動程序之上,屏蔽各種不同的輸入設備硬件實現,對上層提供統一的應用輸入接口;圖形引擎通過FrameBuffer 來獲得,而輸入設備的處理卻沒有統一的接口。在PC上,通常使用鍵盤和鼠標,而在嵌入式系統上, 可能只有觸摸屏或為數不多的幾個鍵,在這種情況下,提供一個抽象輸入層就顯得格外重要。圖形設備接口(GDI,Ggraphic Device Interface) 建立在圖形抽象層之上,主要包括點、線、面、文本、的繪制等功能。圖形用戶接口及相關API則建立在圖形設備接口之上,實現消息隊列、窗口、控件以及應用程序管理等各種功能。系統的層次結構如圖1所示。

3.1 嵌入式LIGHT GUI系統層次結構


GAL 層完成系統對具體的顯示硬件設備的操作, 極大程度上隱藏各種不同硬件的技術實現細節,為應用程序開發人員提供統一的圖形編程接口。IAL 層則需要實現對于各類不同輸入設備的控制操作,提供統一的調用接口。GAL 層與IAL 層的設計屏蔽了底層硬件的多樣性,可以極大程度地提高嵌入式GUI 的可移植性。另外利用GAL 可大大提高GUI 的可移植性,并且使程序的開發和擴展變得更加容易。圖形抽象層使用GFX 數據結構來表示圖形引擎系統;系統通過輸入設備層將底層的各種設備統一映射成上層應用程序支持的兩種基本輸入設備——鼠標設備和鍵盤設備。對于具體的硬件設備,只要根據驅動程序提供的接口,編寫程序實現相應的抽象接口,就能將各種設備模擬成為鼠標或者鍵盤進行輸入。

系統通過維護一個已注冊圖形引擎數組,保存每個圖形引擎數據結構的指針。系統利用一個指針保存當前使用的圖形引擎。每個圖形引擎的數據結構定義了該圖形引擎的一些信息,實現GAL 所定義的各個接口,包括初始化和終止、畫點處理函數、畫線處理函數、矩形框填充函數、調色板函數等。

3.2 圖形設備接口(GDI) 圖形設備接口是建立在圖形抽象層上的一個獨立的繪圖應用接口,它將圖形抽象層提供的接口功能進一步封裝和擴充,向更高層的應用程序提供使用更為簡便,功能完善的繪圖功能。lightGUI 采用了Windows 類似于Windows 中的GDI 模塊。它提供設備上下文(Device Context) 操作、基本GDI 對象操作(包括畫筆、畫刷、字體、位圖、區域等)。在該系統中,設備上下文的定義采用如下數據結構:typedef struct  gdi_DC{ int DrawPointx; int DrawPointy; int DrawOrgx; int DrawOrgy; int DrawRangx; int DrawRangy; int DrawRop; COLORREF BackColor;

COLORREF FontColor;
}DC,*PDC 

系統中設置和設備上下文主要的API 如表所示
CreateDC(): 創建新的設備上下文
DispatchDC(PDC):釋放設備上下文
GetDrawDes (PDC,POINT*): 獲取設備上下繪圖坐標原點
GetDrawRange(PDC,POINT*):獲取上下文繪圖坐標范圍
GetBackColor(PDC,int* ):獲取上下文繪圖背景色

3.3 消息驅動機制的設計實現系統的基本通信機制是事件驅動消息機制。系統線程與系統中所有的窗口擁有自己的消息隊列。系統線程,該隊列中存放所有從底層輸入設備接收到的各類控制消息,等待系統線程分配到應用程序窗口;系統中所有的窗口私有消息隊列用來存放發送到該窗口的所有消息,等待窗口進一步處理。在系統中消息分為四類:系統消息、外部時間消息、窗口菜單消息、窗口控件消息。在消息驅動的應用程序中,外設發生的事件(例如鍵的敲擊)都由支持系統收集,將其以事先約定格式翻譯為特定的消息。應用程序一般包含有自己的消息隊列,系統將消息發送到應用程序的消息隊列中。應用程序可以建立一個循環,在這個循環中讀取消息并處理消息,直到特定的消息傳來為止。當窗口沒有消息可處理時,消息循環處理阻塞狀態,這時不消耗CPU 資源。在GUI 中應用程序處理消息隊列中的消息分為GetMessage()從消息隊列中獲取消息。GetMe

ssage()函數有2個參數,一個用來存放接收到的消息數據,另一個是應用程序主窗口句柄。當獲得一個消息時,會將該消息的目標窗口確認為應用程序主窗口。如果收到的消息不是MSG_QUIT

3.4 窗口的設計實現窗口管理模塊支持多窗口的同時顯示,可進行窗口的創建、移動、大小調整等操作。窗口設計中包括主窗口、窗口菜單、窗口控件、窗口主過程和窗口相關的API函數。在設計中對每個窗口都采用自身的主過程來完成自身消息的處理工作3.5  控件層(Controls) 控件層是窗口的子窗口。這些子窗口的行為與主窗口一樣,既能夠接收鍵盤和鼠標等外部輸入,也可以在自己的區域內進行輸出,只是其所有活動被限制在主窗口中??丶釉O計實現了基本控件,包括按鈕、靜態文本框、單選(多選)框、繪圖框等多種通用控件??丶映浞滞诰蛄嘶敬翱谙到y的潛力。向用戶提供最常用的功能,極大地簡化用戶開發的過程。

 4 結束語

本文介紹了嵌入式圖形用戶界面系統的基本架構和實現原理,提出了嵌入式環境下自主、輕型、占用資源少可配置的GUI 系統的解決方案。輕量級 GUI 系統已在Linux 系統上測試通過。本文所開發所采用的體系結構以及面向對技術對窗口用戶控件的開發極大的提高了開發效率和代碼的重用率,對開發自主的GUI 系統有一定的借鑒和參考價值。本文作者創新點:利用Linu x開發平臺,研發適用于小型嵌入式系統的專用GUI系統,使用層次結構和面向對象的控件開發技術,縮短開發周期,降低開發成本,為嵌入式GUI系統的開發提供結開發方法的參考。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品videossex久久发布| 国产日韩欧美精品| 欧美日韩亚洲一区二区| 亚洲高清不卡一区| 亚洲一区二区综合| 精品二区视频| 久久精品国亚洲| 亚洲精品国精品久久99热| 一区二区三区**美女毛片| 久久亚洲精选| 亚洲综合视频网| 欧美日韩在线视频一区二区| 国产欧美日韩中文字幕在线| 亚洲综合国产激情另类一区| 亚洲欧美综合| 亚洲激情网站免费观看| 久久夜色精品国产欧美乱| 国产精品一区二区黑丝| 亚洲男女自偷自拍| 欧美制服第一页| 国产精品久久久久影院亚瑟| 欧美日韩精品| 欧美精品一区二区三区蜜臀| 亚洲激情校园春色| 美女日韩在线中文字幕| 国产一区二区日韩| 久久久久久69| 国产精品美女主播在线观看纯欲| 欧美日韩综合久久| 国产精品极品美女粉嫩高清在线| 欧美www视频在线观看| 午夜精品视频在线观看一区二区| 国产日韩一区二区三区在线| 日韩视频在线免费| 国产精品亚洲产品| 国产在线不卡精品| 欧美啪啪一区| 亚洲国产专区| 久久久久久电影| 国产精品色午夜在线观看| 欧美主播一区二区三区| 亚洲网站啪啪| 国产深夜精品福利| 亚洲欧美日韩国产一区二区三区| 国产午夜精品在线| 国产色爱av资源综合区| 欧美日精品一区视频| 午夜久久久久久| 一区二区三区视频在线观看| 欧美综合激情网| 在线播放精品| 欧美色播在线播放| 亚洲经典三级| 久久精品在线观看| 欧美绝品在线观看成人午夜影视| 亚洲一区成人| 亚洲第一狼人社区| 亚洲少妇中出一区| 亚洲一区二区三区在线| 欧美黑人国产人伦爽爽爽| 亚洲夜间福利| 欧美日韩成人综合天天影院| 亚洲一区二区三区中文字幕| 99国产精品久久久| 欧美大片在线观看一区二区| 亚洲最新在线视频| 欧美顶级少妇做爰| 狼狼综合久久久久综合网| 亚洲丶国产丶欧美一区二区三区| 狠狠色狠狠色综合日日tαg| 免费亚洲视频| 国产精品久久999| 一区二区三区你懂的| 欧美成人免费在线| 一本一本久久a久久精品综合麻豆| 亚洲专区一区| 亚洲国产一区二区三区高清| 亚洲大片一区二区三区| 久久久久久69| 欧美日韩高清在线观看| 国产精品一区亚洲| 欧美激情第一页xxx| 久久久久国色av免费观看性色| 影音先锋亚洲电影| 欧美一区二区三区视频在线| 日韩天堂在线视频| 91久久精品久久国产性色也91| 牛牛精品成人免费视频| aa级大片欧美三级| 在线欧美福利| 亚洲成人在线观看视频| 亚洲一区免费| 欧美日韩福利视频| 国产农村妇女毛片精品久久麻豆| 国产女人18毛片水18精品| 欧美精品一区二区三区视频| 国产日韩av一区二区| 欧美一区二区视频免费观看| 麻豆精品精品国产自在97香蕉| 免费亚洲一区| 久久综合精品国产一区二区三区| 99亚洲一区二区| 欧美电影免费网站| 国产一区二区观看| 国产精品永久免费在线| 国产午夜精品久久久久久久| 亚欧成人精品| 久久久国产一区二区三区| 欧美激情视频在线播放| 久久伊人一区二区| 玉米视频成人免费看| 亚洲欧美一级二级三级| 亚洲日本va午夜在线电影| 国产午夜精品久久久久久久| 国产一区二区精品久久99| 亚洲精品视频啊美女在线直播| 欧美先锋影音| 亚洲成人在线观看视频| 欧美国产精品人人做人人爱| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美在线啊v一区| 国产精品成人va在线观看| 欧美一区二区三区在线| 欧美劲爆第一页| 国产日韩亚洲欧美综合| 久久久亚洲国产天美传媒修理工| 欧美亚洲尤物久久| 亚洲一区二区av电影| 亚洲第一精品夜夜躁人人躁| 性xx色xx综合久久久xx| 一区二区不卡在线视频 午夜欧美不卡'| 在线观看中文字幕亚洲| 精品av久久久久电影| 国产精一区二区三区| 欧美三级在线播放| 午夜伦欧美伦电影理论片| 亚洲一区中文字幕在线观看| 亚洲欧洲免费视频| 欧美伊人精品成人久久综合97| 亚洲黄网站黄| 国产精品一区在线观看你懂的| 在线观看亚洲视频| 亚洲在线网站| 国产精品欧美一区二区三区奶水| 欧美伊人久久大香线蕉综合69| 欧美伊人久久久久久久久影院| 在线观看国产一区二区| 欧美体内she精视频在线观看| 亚洲免费观看高清完整版在线观看熊| 亚洲精品网址在线观看| 韩国女主播一区二区三区| 国产精品人人做人人爽| 亚洲午夜一二三区视频| 国产精品一区=区| 国产精品高潮在线| 加勒比av一区二区| 亚洲午夜精品久久| 亚洲精品一区二区三区不| 国产精品美女久久| 国产精品盗摄一区二区三区| 国产日韩精品电影| 夜夜嗨av一区二区三区网站四季av| aa级大片欧美| 国产亚洲欧美日韩精品| 日韩视频永久免费观看| 欧美日韩在线视频观看| 欧美精品一卡二卡| 国内在线观看一区二区三区| 亚洲欧美综合精品久久成人| 国产精品永久免费| 韩国av一区二区三区| 午夜亚洲激情| 欧美日韩在线另类| 亚洲第一视频| 欧美日韩视频不卡| 欧美国产日韩一区二区三区| 国产欧美日韩视频| 欧美激情一区在线观看| 国产一区二区三区久久悠悠色av| 久久综合色8888| 国产一区二区av| 羞羞色国产精品| 亚洲人妖在线| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲国产成人精品女人久久久| 一色屋精品视频在线观看网站| 亚洲高清不卡| 亚洲欧美激情诱惑| 久久精品视频在线观看| 国产精品久久久久影院色老大| 精品电影在线观看| 欧美电影免费观看大全| 亚洲字幕在线观看| 午夜精品福利视频| 国产精品你懂的| 欧美日韩国产小视频| 久久国产精品久久久久久| 老司机精品导航| 亚洲中字在线| 欧美va亚洲va日韩∨a综合色| 亚洲欧美日韩精品久久奇米色影视| 欧美日韩一区不卡| 国产精品欧美日韩一区二区| 欧美 日韩 国产 一区| 欧美精品123区| 国产精品视频免费观看www| 国产亚洲视频在线观看| 国产日韩1区| 久久精品视频在线看| 娇妻被交换粗又大又硬视频欧美| 欧美日韩xxxxx| 一本色道久久综合亚洲精品按摩| 亚洲国产成人高清精品| 国产欧美亚洲视频| 99精品99| 欧美一区二区三区四区在线观看地址| 亚洲国语精品自产拍在线观看| 欧美日韩成人综合在线一区二区| 国产欧美精品va在线观看| 国产精品日韩精品欧美在线| 欧美精品在线极品| 欧美理论电影在线播放| 欧美一区二区三区久久精品| 欧美日韩在线亚洲一区蜜芽| 欧美性猛交一区二区三区精品| 国产精品高潮呻吟久久av黑人| 国产伦精品一区二区三区免费| 先锋影院在线亚洲| 亚洲欧美成人| 久久精品水蜜桃av综合天堂| 欧美日韩综合精品| 亚洲一区二区三区欧美| 国户精品久久久久久久久久久不卡| 亚洲黄色免费网站| 欧美视频一区在线观看| 国产婷婷色一区二区三区四区| 久久国产精品高清| 久久伊人一区二区| 欧美日本在线视频| 国产精品福利在线| 国产精品日韩高清| 中文欧美日韩| 国产精品理论片在线观看| 噜噜噜噜噜久久久久久91| 国产美女精品在线| 亚洲国产欧美精品| aa成人免费视频| 精品99视频| 国产精品久久久久免费a∨大胸| 亚洲第一在线| 欧美日韩视频免费播放| 亚洲第一色在线| 国产精品乱子乱xxxx| 亚洲综合色自拍一区| 韩国女主播一区| 欧美国产欧美综合| 亚洲一区区二区| 狠狠色丁香久久婷婷综合_中| 亚洲狠狠丁香婷婷综合久久久| 亚洲无线一线二线三线区别av| 伊人蜜桃色噜噜激情综合| 亚洲高清在线视频| 在线观看一区二区视频| 欧美中文字幕久久| 欧美日韩亚洲综合一区| 亚洲一区二区四区| 一区二区三区不卡视频在线观看| 亚洲午夜国产一区99re久久| 麻豆精品在线播放| 久久婷婷国产麻豆91天堂| 欧美成人精品在线观看| 亚洲区第一页| 国产一区二区欧美日韩| 国产精品麻豆欧美日韩ww| 欧美精品综合| 欧美激情二区三区| 午夜在线播放视频欧美| 欧美激情一区二区三区在线视频| 国产日韩精品视频一区| 欧美黄色aa电影| 亚洲精一区二区三区| 久久久国产成人精品| 欧美日韩一本到| 欧美3dxxxxhd| 欧美影片第一页| 欧美日韩国产精品一区二区亚洲| 国产三级精品三级| 久久久久久亚洲精品中文字幕| 欧美亚洲成人精品| 狠狠88综合久久久久综合网| 激情亚洲网站| 一区二区三区回区在观看免费视频| 麻豆精品视频| 久久一区二区三区国产精品| 久久久久久色| 欧美日韩综合不卡| 伊人久久婷婷色综合98网| 国产精品自拍网站| 亚洲免费一在线| 中文av一区特黄| 久久久www成人免费无遮挡大片| 久久精品观看| 一片黄亚洲嫩模| 一区二区三区高清| 136国产福利精品导航| 国产三区二区一区久久| 久久成人免费网| 欧美成人a视频| 亚洲一区二区成人在线观看| 欧美涩涩网站| 亚洲欧美成aⅴ人在线观看| 欧美日本一区| 欧美色图首页| 亚洲一区网站| 亚洲免费人成在线视频观看| 国产精品大全| 蜜桃久久精品一区二区| 日韩亚洲成人av在线| 日韩亚洲精品视频| 久久久www成人免费精品| 亚洲免费观看高清在线观看| 黄色av日韩| 国产精品一区久久久久| 亚洲国产影院| 亚洲国产欧美一区二区三区丁香婷| 亚洲精品小视频在线观看| 久久久久久久一区| 99精品视频网|