當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于Framebuffer的嵌入式GUI系統(tǒng)實現(xiàn)

摘要:本文研究了基于Framebuffer的嵌入式GUI的系統(tǒng)實現(xiàn),包括其體系結構層次的建立、驅動機制的分析、微型客戶端/服務器模式的實現(xiàn),以及基于Framebuffer的GAL與GDI的設計等關鍵內容。
關鍵詞:嵌入式;GUI;Linux;Framebuffer

0 前言

當前流行的商業(yè)化的GUI 系統(tǒng)包括Palm OS、Windows CE和Symbian OS 等。這些GUI 性能出眾,一般都提供完整的解決方案,對Java、多媒體的支持較好,使用它們可以很方便地構建自己的嵌入式系統(tǒng),縮短開發(fā)周期。但這些都是商業(yè)化產品,使用它們不可避免地要付出昂貴的授權費用,沒有公開源代碼,用戶也不能很自由地定制自己的產品。

Linux 的出現(xiàn)給嵌入式產品的開發(fā)帶來了新的活力,它擁有很多的優(yōu)良特性非常適合于嵌入式開發(fā)。目前國內外基于Linux的GUI產品比較流行的包括MiniGUI、MicroWindows、QT/Embedded 等,其中QT/Embedded 屬于商業(yè)化的產品,其他屬于開源軟件。從性能、功能各個方面來說QT/Embedded 比較優(yōu)秀,但是使用它需要支付高昂的授權費用,一般應用在高端的PDA 和SmartPhone 等產品上。MiniGUI和MicroWindows均為自由軟件,只是前者遵循LGPL條款,后者遵循MPL條款,這兩個系統(tǒng)的技術路線也有所不同,MiniGUI的策略是首先建立在比較成熟的圖形引擎之上,比如Svgalib和LibGGI,開發(fā)的重點在于窗口系統(tǒng)、圖形接口之上,而MicroWindows目前的開發(fā)重點則在底層的圖形引擎之上,窗口系統(tǒng)和圖形接口方面的功能還比較欠缺,而且MiniGUI在1.6版本以后也不再提供免費的完整功能版本下載。

FrameBuffer是Linux控制臺下的一個通用的圖形接口,它擁有良好的平臺無關性,可以支持絕大多數(shù)的硬件,因而得到愈來愈多廠家的支持,一些流行的圖形庫如QT、GTK便是基于FrameBuffer的。它的接口非常簡單,通過它可以十分方便地構建一個圖形系統(tǒng)。而對GUI的實現(xiàn)做一個系統(tǒng)深入的分析和研究也是嵌入式系統(tǒng)研究必不可少的一個步驟。本項目在開發(fā)嵌入式數(shù)字控制系統(tǒng)的過程中對現(xiàn)有的嵌入式GUI系統(tǒng)做了深入的研究,包括嵌入式GUI的體系結構層次、驅動機制,并實現(xiàn)了對自身量身定做的GAL和GDL,實現(xiàn)了滿足自身需求的嵌入式GUI系統(tǒng)。

1嵌入式GUI需求分析

與運行在PC 機上的GUI相比,作為運行在嵌入式設備上的程序,不可避免的要受到設備環(huán)境的限制,其實這也是所有嵌入式編程都要遇到的問題。嵌入式設備對GUI 的限制主要體現(xiàn)在:(1) CPU速度相對來說較慢,一般不具備浮點運算功能或浮點運算功能較弱;(2)內存、外存容量?。?3)電量有限需要考慮節(jié)電因素。

同時,嵌入式平臺具有多樣性,不同的平臺之間性能、功能部件千差萬別,很難設計出一個GUI產品能夠適合任何平臺,因此就必需對GUI產品進行準確的定位,包括所要運行的平臺、最終用戶的需求等等,它是產品成功的關鍵,也決定了我們的設計方針和思想,比如實時和非實時產品的設計是完全不同的。這里我們設計的GUI 系統(tǒng)是為中低端嵌入式系統(tǒng)提供圖形界面能力的中間件產品,它應該能滿足以Linux OS 作為產品系統(tǒng)平臺的中低端客戶對圖形用戶界面開發(fā)的要求,并易于第三方應用程序的移植。具體來說,其運行在CPU 主頻不高于400MHz(實際使用200MHz),內存容量在64MB(實際使用16M)以下的中低端嵌入式系統(tǒng),兼容POSIX標準的操作系統(tǒng),擁有完整或經過裁減的C庫。

在設計的時候要充分考慮到這些因素,在編程時也要注意一些原則:盡量讓CPU少做事,盡量不進行浮點運算,盡量減少文件操作,盡量減少內存分配。

2 基于Linux的嵌入式GUI構建

2.1 嵌入式GUI的體系結構層次

    嵌入式GUI的實現(xiàn)一般要劃分成四大功能模塊:GUI用戶接口模塊、GUI對象模塊、GUI基本圖形模塊和GUI消息驅動模塊。具體功能定義如下:

    1)GUI用戶接口模塊 該模塊為上層應用軟件開發(fā)人員提供方便、易用的API接口函數(shù),對上層開發(fā)人員屏蔽了GUI的設備實現(xiàn)細節(jié),讓開發(fā)人員很簡單的就可以編寫出良好的圖形用戶界面的應用程序。

    2)GUI對象模塊 GUI對象模塊對窗口環(huán)境中的邏輯對象進行組織管理。其中包括對象的添加、刪除引發(fā)的對象鏈表的更新,以及GUI窗口顯示的維護,如窗口切換、焦點切換、對象的隱藏和恢復等操作引發(fā)的對象屬性的更新,還有對不同控件的各種事件的響應。

    3)GUI基本圖形模塊 在該模塊中實現(xiàn)了對顯示輸出設備的操作,如畫點、畫線、畫矩形等基本功能,還有對于字符的解析輸出,以及對圖形的解析輸出。一般它獨立于具體的設備驅動程序,與物理設備之間形成“設備抽象層”。

    4)GUI消息驅動模塊 該模塊是GUI系統(tǒng)的通訊模塊,負責GUI的消息接收和與其它任務的通訊以及消息隊列的維護。

    我們在自我裁減的Linux操作系統(tǒng)基礎上具體實現(xiàn)了一個輕量級的嵌入式GUI系統(tǒng),在C語言中,采用了類似于面向對象的技術,同時將GUI系統(tǒng)的核心模塊設計的盡量小巧,便于測試。GUI系統(tǒng)內核對GUI特性和使用環(huán)境進行了高度抽象,為了增加GUI系統(tǒng)的可移植性和可擴展性,本系統(tǒng)將與特定設備相關的功能全部分裝到了獨立的函數(shù)之中,如果要移植到其它不同的設備上去,只需要把這些與特點設備相關的函數(shù)部分重寫即可達到目的。本GUI系統(tǒng)采用的垂直分層的系統(tǒng)結構圖如下:

圖1、嵌入式GUI系統(tǒng)結構圖

用戶和嵌入式系統(tǒng)交互的過程即是用戶通過輸入設備操作GUI的應用程序,GUI系統(tǒng)在接到用戶對該輸入事件的處理消息之后,將處理后的結果顯示在輸出設備上。因此GUI系統(tǒng)涉及的主要技術有事件驅動、輸出顯示、資源管理。其中事件驅動是GUI系統(tǒng)的核心,輸出顯示是GUI的關鍵,資源管理是GUI系統(tǒng)的基礎。

2.2 嵌入式GUI的驅動機制分析

    GUI系統(tǒng)的事件驅動機制主要是消息驅動機制。從消息機制方面來說,本GUI系統(tǒng)可以劃分為三個子系統(tǒng):圖形處理子系統(tǒng),輸入設備子系統(tǒng)和輸出設備子系統(tǒng),各子系統(tǒng)以圖形處理子系統(tǒng)為核心,既相對獨立又彼此聯(lián)系。

    所謂消息有兩層含義:1、消息發(fā)生的時間(事件,動態(tài)概念):2、消息內容(信息,靜態(tài)概念)。消息發(fā)生觸發(fā)一個事件,用以主動通知信息的到來。系統(tǒng)中消息發(fā)生時間是隨機的,由操作系統(tǒng)異步捕獲此事件,再分發(fā)給對應的處理程序。程序起著信息處理的作用,而消息則代表到達的信息。對于可以事先判定信息的種類范圍,而不能事先預測信息到達時間的情況,有兩種處理方法:被動輪詢和主動通知。消息屬于主動通知一類。利用消息驅動計算機輸入的機制,顯得自然、簡潔。

    消息處理機制包括消息的產生、傳遞(發(fā)送和接收)和處理等過程。消息作為一種任務、程序、系統(tǒng)等應用之間的信息和數(shù)據聯(lián)系,它可以由硬件事件產生,也可以由其它任務、程序、系統(tǒng)等應用中產生,并將它們發(fā)到其它應用中,以控制應用的行為。

本GUI系統(tǒng)的消息處理機制如圖2所示。

圖2、系統(tǒng)的消息處理機制圖

采用這種消息機制后,模塊之間形成完全松散的耦合關系,增加了整個連接和集成的靈活性,這是通過消息和響應的非直接、隱式調用實現(xiàn)的。

    選用這種消息機制作為嵌入式GUI系統(tǒng)的設計,正好適合了嵌入式系統(tǒng)本身要求可以配置、裁剪的特點。嵌入式GUI本身只需要維持一個消息處理機即可,可以大大增加系統(tǒng)的可移植性。采用這種消息機制,只需要重新定義消息和響應處理,GUI系統(tǒng)中的任何控件都可以簡單地替換為另一個控件,這一特點可以滿足GUI系統(tǒng)本身要求的可擴展性,用戶可以根據自己的要求對控件進行修改、定制和擴展GUI系統(tǒng)的界面風格。

    對于激勵和響應之間沒有嚴格的時間邏輯關系的系統(tǒng),消息是一種非常好的控制機制。消息機制完全可以滿足嵌入式GUI的調度要求。

2.3 微型客戶端/服務器模式的實現(xiàn)

從系統(tǒng)整體角度看,根據是否采用多進程C/S 機制和服務程序的具體功能,基本可以將Linux 下的嵌入式GUI 劃分為類X GUI 和非X GUI 兩大類。

圖3、類X GUI的系統(tǒng)C/S交互機制示意圖

是否采用C/S客戶服務機制,決定于用戶的設計需求和實時性考慮。當實時能力能夠得到滿足時,類X的GUI在系統(tǒng)健壯性和功能完備性上要大大超過非X的GUI。非X GUI往往采用單進程多線程,所有數(shù)據和操作共享同一內存區(qū)域,當某個線程出現(xiàn)錯誤時容易造成整個進程癱瘓,因此用于復雜場合的成熟的GUI大多數(shù)都采用類X GUI多進程多客戶單服務的機制。由于類X的嵌入式GUI具有應用普遍性,我們采用了類X GUI客戶服務結構模式。

X GUI的原理是借鑒X Window的客戶服務機制,采用了事件驅動的設計方法。應用程序在客戶端,輸入接口在服務器端,應用程序通過和服務器通訊間接和輸入輸出硬件設備交互。如圖3是系統(tǒng)的類X GUI的系統(tǒng)C/S交互機制示意圖

客戶程序向服務器程序提交感興趣的事件或要阻止的事件請求,服務器主程序啟動循環(huán)收集事件(包括輸入設備上的事件),由輸入引擎接口上的系統(tǒng)調用來接收輸入設備事件。將客戶感興趣的事件發(fā)送給客戶程序,客戶程序處理后再向服務器程序提交圖形繪制和其它操作請求。兩者之間通過IPC或socket連接的辦法來傳送事件和請求。

3 基于Framebuffer的GAL與GDI的設計

FrameBuffer是出現(xiàn)在2.2.xx內核當中的一種驅動程序接口。這種接口將顯示設備抽象為幀緩沖區(qū)。用戶可以將它看成是顯示內存的一個映像,將其映射到進程地址空間之后,就可以直接進行讀寫操作,而寫操作可以立即反應在屏幕上。該驅動程序的設備文件一般是/dev/fb0,/dev/fbl等等。在應用程序中,一般通過將FrameBuffer設備映射到進程地址空間的方式使用。FrameBuffer設備還提供了若干ioctl命令,通過這些命令,可以獲得顯示設備的一些固定信息(比如顯示內存大小)、與顯示模式相關的可變信息(比如分辨率、象素結構、每掃描線的字節(jié)寬度),以及偽彩色模式下的調色板信息等等。通過FrameBuffer設備,還可以獲得當前內核所支持的加速顯示卡的類型(通過固定信息得到),這種類型通常是和特定顯示芯片相關的

    研究中我們發(fā)現(xiàn),雖然己有的幾種嵌入式GUI庫在窗口管理、消息機制等應用層的實現(xiàn)各不相同;但為了便于移植的特性,都有相似的設備驅動層設計。

    一個能夠移植到多種硬件平臺上的嵌入式GUI庫,應用至少抽象出兩類設備:基于圖形顯示設備(如VGA卡)的圖形抽象層GAL ( Graphic Abstract Layer );基于輸入設備(如鍵盤,觸摸層等)的輸入抽象層IAL ( Input Abstract Layer )。GAL層完成系統(tǒng)對具體的顯示硬件設備的操作,極大程度上隱蔽各種不同硬件的技術實現(xiàn)細節(jié),為程序開發(fā)人員提供統(tǒng)一的圖形編程接口。先進的嵌入式GUI,比如MicroWindows和MiniGUI,都支持Framebuffer。

因為MicroWindows的GAL層代碼量小,結構清晰而且模塊性好,非常方便修改和擴充。因此我們借鑒MicroWindows的設備抽象層構建,實現(xiàn)需要在文件中包含src/include/device.h和src/include/mwtypes.h頭文件。前者包含對MicroWindows底層調用函數(shù)接口的聲明,后者包含MicroWindows中特定結構的定義和一些宏定義。

    GDI對象對于GUI系統(tǒng)來說是一個很重要的概念,它可以提供給用戶更加靈活的操作方式,所以本GUI系統(tǒng)實現(xiàn)了類似于Windows下的GDI系統(tǒng),不像有些GUI系統(tǒng),放棄了GDI對象概念,窗口層直接跟繪圖層交互,導致用戶操作起來不靈活,這樣設計也容易在遵循嵌入式軟件平臺API標準的前提下與Windows的圖形用戶接口相兼容。系統(tǒng)GDI提供了設備上下文(Device Context)操作、基本GDI對象操作〔包括畫筆、畫刷、字體、位圖、區(qū)域、填充等),還有映射模式、背景模式和光柵操作。盡管系統(tǒng)GDI吸取了Windows GDI的一些概念和設計方法,但其作為嵌入式GUI系統(tǒng)的一部分,特別針對嵌入式環(huán)境的特點,取消了一些不常用的、影響效率的功能,充分挖掘GDI層的性能。由于硬件抽象層提供的圖形操作接口只有一個Surface,所以所有的基本圖形繪制及操作都需要GDI實現(xiàn),所以提高GDI性能的重點是好的圖形學算法。本系統(tǒng)GDI對原有的組成元素做了一些取舍,其組成元素如表1所示:

表1、系統(tǒng)GDI組成元素表

設備上下文

GDI對象

繪圖屬性

位圖操作

字體

DC

畫筆、畫刷

光柵、背景模式、坐標模式

DIB、DDB

點陣、True Type

4 結束語

本文研究了基于Framebuffer的嵌入式GUI的系統(tǒng)實現(xiàn),包括其體系結構層次的建立、驅動機制的分析、微型客戶端/服務器模式的實現(xiàn),以及基于Framebuffer的GAL與GDI的設計等關鍵內容,提供了除現(xiàn)行流行方案外的嵌入式GUI的解決方案,并可根據自己系統(tǒng)需求量身定做,在實際項目實施中獲得了很好的效果。

作者簡介:趙霞 (1968-)女(漢族),河北人,高級講師,碩士,新僑職業(yè)技術學院計算機信息系.主要研究領域:計算機應用與軟件研究.

BiographyZhao Xia(1968-), Female(Han), Senior instructor, Master, Department of computer, Xinqiao Professional Technological Institute. Research area: Research on computer application and software development.

參考文獻:

[1]王田苗.嵌入式系統(tǒng)設計與實例分析.清華大學出版社,2003年10月第二版.

[2]王同洋,熊偉,嵌入式Linux中圖形用戶界面的研究與設計.微計算機信息,2006, (08),90-92

[3]張娟,張雪蘭.基于嵌入式Linux的GUI應用程序的實現(xiàn).計算機應用,2003 (04):116-117

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉