當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]嵌入式多任務(wù)GUI的通用解決方案

摘要 針對(duì)嵌入式多任務(wù)GUI系統(tǒng)需要非常強(qiáng)的靈活性、可移植性和可伸縮性的特點(diǎn).提出一種通用解決方案;采用層次化、模塊化和面向?qū)ο蟮脑O(shè)計(jì)思想,給出了GUI的體系結(jié)構(gòu),并對(duì)多任務(wù)GUI設(shè)計(jì)中的多任務(wù)調(diào)度策略及管理、消息驅(qū)動(dòng)機(jī)制、桌面廈窗口管理和對(duì)象樹等關(guān)鍵技術(shù)進(jìn)行了研究。該解決方案的原型已經(jīng)成功應(yīng)用于我國(guó)自主產(chǎn)權(quán)的實(shí)時(shí)操作系統(tǒng)DeltaOS中。
關(guān)鍵詞 嵌入式系統(tǒng)嵌入式GUI圖形用戶界面 多任務(wù)


    嵌入式GUI(Graphic Uset Interface)系統(tǒng)就是在嵌入式系統(tǒng)中為特定的硬件設(shè)備或環(huán)境而設(shè)汁的圖形用戶界面系統(tǒng)。調(diào)查顯示,越來越多具有靈活性、高效性和可移植性的嵌入式GUI系統(tǒng)被廣泛應(yīng)用于辦公自動(dòng)化、消費(fèi)電子、通信設(shè)備、智能儀器等許多領(lǐng)域;而且隨著硬件技術(shù)的發(fā)展,要求GUI實(shí)現(xiàn)的功能越來越豐富,GUI系統(tǒng)也變得比以往更加復(fù)雜、多樣。
    大多數(shù)的嵌入式GUI系統(tǒng)都只能簡(jiǎn)單地支持單任務(wù)。單任務(wù)GUI的效率較低,無法滿足未來GUI的發(fā)展需求,故多任務(wù)GUI是嵌入式GUI的發(fā)展方向。
    目前,在嵌入式應(yīng)用領(lǐng)域比較成功的嵌入式多任務(wù)GUI系統(tǒng)主要有:MiniGUI、MicroWindows和Qt/Em-bedded。它們主要是針對(duì)嵌入式Linux而設(shè)計(jì)的,通過PThrred庫來實(shí)現(xiàn)對(duì)多線程的支持;而PThred本身就比較復(fù)雜,很難將這些GUI系統(tǒng)移植到平臺(tái)接口不符合POSIX標(biāo)準(zhǔn)的目標(biāo)平臺(tái)上。所以,上述幾種GUI系統(tǒng)有一個(gè)共同的缺點(diǎn),就是過分地依賴于某種特定的平臺(tái),導(dǎo)致可移植性差。
    為了有效地兼容嵌入式領(lǐng)域的各種環(huán)境,下面提出一種通用、有效并且可移植性好的嵌入式GUI體系結(jié)構(gòu),并對(duì)多任務(wù)GUI設(shè)汁中的關(guān)鍵技術(shù)進(jìn)行研究。


1 體系結(jié)構(gòu)
   
針對(duì)GUI需要非常強(qiáng)的靈活性,可移植性和可伸縮性的特點(diǎn),在其體系結(jié)構(gòu)的設(shè)計(jì)中,采用層次化、模塊化和面向?qū)ο蟮脑O(shè)計(jì)思想。層次式的體系結(jié)構(gòu)在許多軟件系統(tǒng)中被采用,被公認(rèn)為是一種合理的結(jié)構(gòu),但最重要的是如何來劃分這些層次,使系統(tǒng)的結(jié)構(gòu)最合理、最清晰。
    在設(shè)計(jì)中采用如下劃分策略:力求層次之間相對(duì)獨(dú)立,對(duì)任一層的改動(dòng)保證它對(duì)上層的接口不變,上層不受下層變化的影響。在這樣的層次結(jié)構(gòu)中,最底層和最高層都可能根據(jù)具體需要發(fā)生改變,因此應(yīng)該為這兩層提供充分的變動(dòng)空間,而中間的層次則應(yīng)是獨(dú)立不變的。
    GUI在嵌入式應(yīng)用環(huán)境中,硬件環(huán)境、操作系統(tǒng)和用戶應(yīng)用程序之間的層次如圖1所示。圖1中,通過驅(qū)動(dòng)程序,GUI組件部分與硬件隔離;通過操作系統(tǒng)抽象層,使核心與具體操作系統(tǒng)隔離。這種層次體系結(jié)構(gòu)使得GUI具有良好的平臺(tái)無關(guān)性,在不同的操作系統(tǒng)和硬件平臺(tái)之間的移植非常方便。按上述設(shè)計(jì)思想,GUI層次模型劃分如圖2所示。圖中,GUI被劃分為3層,每一層義根據(jù)具體功能的不同被劃分為幾個(gè)模塊。

1.1 輸入輸出層
   
這一層的功能是將系統(tǒng)中設(shè)備和操作系統(tǒng)平臺(tái)的具體細(xì)節(jié)屏蔽起來。該設(shè)備層被定義在BSP中,向上提供GUI對(duì)沒備的顯示特性操作。該層分為設(shè)備邏輯和硬件抽象兩個(gè)子層。設(shè)備邏輯子層使用同一類設(shè)備的概念來描述GUI支持的外部設(shè)備及對(duì)該設(shè)備的邏輯操作,向上層提供了統(tǒng)一的設(shè)備操作接口;而硬件抽象子層則利用實(shí)際的設(shè)備控制器操作,根據(jù)硬件在不同平臺(tái)上的驅(qū)動(dòng)來實(shí)現(xiàn)硬件抽象子層中定義的接口。
1.2 窗口核心層
   
窗口核心層實(shí)現(xiàn)GUI的關(guān)鍵功能,根據(jù)功能可劃分為消息管理、緩沖池管理、作圖管理、定時(shí)器、資源管理、對(duì)象管理、子屏管理和內(nèi)存堆管理等幾部分。
    由于GUI采取消息驅(qū)動(dòng)的通信方式,因此消息管理構(gòu)成GUI的靈魂,通過它把系統(tǒng)的各個(gè)部分聯(lián)系起來。在應(yīng)用程序的運(yùn)行過程中,消息承載了系統(tǒng)各部分間的交換信息。
    內(nèi)存堆管理:目的是避免在系統(tǒng)運(yùn)行過程中動(dòng)態(tài)分配和釋放內(nèi)存時(shí)引起存儲(chǔ)碎片。兩個(gè)比較頻繁的動(dòng)態(tài)內(nèi)存分配操作是消息空間的申請(qǐng)/釋放和屏幕對(duì)象剪切域的刷新。
    作圖管理:完成畫點(diǎn)、畫線、畫圓等作圖操作。為了提高GUI的移植性,這層主要完成與硬件無關(guān)的作圖過程。對(duì)具有特殊顯示功能的應(yīng)用平臺(tái)來說,此層也可以大量調(diào)用硬件提供的功能函數(shù)(經(jīng)輸出硬件無關(guān)層包裝后的接口),從而實(shí)現(xiàn)特殊的作圖效果。GUI在結(jié)構(gòu)上提供了這種靈活性。作圖管理層向上以作圖原語集的形式為應(yīng)用提供調(diào)用接口。
    定時(shí)器:根據(jù)系統(tǒng)時(shí)鐘來為應(yīng)用提供計(jì)數(shù)信息。
    資源管理:主要對(duì)字體、圖片和調(diào)色板等進(jìn)行管理,需要實(shí)現(xiàn)資源的存儲(chǔ)以及為應(yīng)用提供適當(dāng)?shù)慕涌趦纱蠊δ堋?BR>    對(duì)象管理:采取合理的機(jī)制來組織在屏幕上顯示的對(duì)象。GUI把所有能在屏幕上顯示的GUI元素稱為“對(duì)象”,并通過對(duì)象樹、Z序和剪切域等機(jī)制來實(shí)現(xiàn)對(duì)象的管理。窗口核心層還為應(yīng)用提供了添加、刪除、隱藏對(duì)象等操作接口函數(shù)。
1.3 應(yīng)用接口層
   
應(yīng)用接口層封裝了GUI為用戶提供的一切接口,應(yīng)用程序看到的GUI就是此層提供的所有接口函數(shù),包括工具箱、作圖原語集和對(duì)象操作集等3部分。
    工具箱:GUI為用戶提供的控件集。這部分的大小是可根據(jù)應(yīng)用的需要調(diào)整的,從而也在較大程度上影響了GUI庫的大小。常用的控件有按鈕、滾動(dòng)條、窗口和編輯框等。
    作圖原語集:作圖管理層提供的繪圖函數(shù)接口。工具箱也是在它的基礎(chǔ)上實(shí)現(xiàn)的。
    對(duì)象操作集:主要實(shí)現(xiàn)GUI對(duì)象的添加和刪除等操作功能。

2 多任務(wù)GUI關(guān)鍵技術(shù)分析
   
本文中提到的“任務(wù)”,在同一個(gè)地址空間執(zhí)行并且可以無約束地直接訪問所有的共享資源。下面對(duì)多任務(wù)GUI設(shè)計(jì)中的關(guān)鍵技術(shù)進(jìn)行分析。
2.1 多任務(wù)調(diào)度策略及管理
    多任務(wù)系統(tǒng)需要一個(gè)合理的任務(wù)調(diào)度策略來管理所有的任務(wù)。啟動(dòng)GUI后,會(huì)默認(rèn)產(chǎn)牛一個(gè)系統(tǒng)任務(wù)、一個(gè)事件任務(wù)和一個(gè)定時(shí)器任務(wù);而應(yīng)用任務(wù)的產(chǎn)生則要根據(jù)具體的用戶需求。
(1)系統(tǒng)任務(wù)
    桌面對(duì)象運(yùn)行的任務(wù)稱為“系統(tǒng)任務(wù)”。系統(tǒng)任務(wù)是整個(gè)圖形用戶系統(tǒng)運(yùn)轉(zhuǎn)的核心。它不斷地從系統(tǒng)的主消息隊(duì)列中取消息,并按消息的目的和用途將其派發(fā)到對(duì)應(yīng)的目的任務(wù);同時(shí)負(fù)責(zé)所有應(yīng)用任務(wù)的管理和維護(hù)以及桌面管理等事務(wù)。一個(gè)系統(tǒng)中僅有一個(gè)系統(tǒng)任務(wù)。
(2)事件任務(wù)
    事件任務(wù)負(fù)責(zé)收集外部事件,并將事件解釋為與之對(duì)應(yīng)的GUI消息,并放入系統(tǒng)的主消息隊(duì)列中。用戶的輸入正是從這里傳人GUI核心進(jìn)行處理。一般情況下,一個(gè)系統(tǒng)中僅有一個(gè)事件任務(wù)。
(3)定時(shí)器任務(wù)
    定時(shí)器任務(wù)是通過操作系統(tǒng)的系統(tǒng)調(diào)用產(chǎn)生GUI定時(shí)器的。
(4)應(yīng)用任務(wù)
    除系統(tǒng)任務(wù)之外,窗口所運(yùn)行的其他任務(wù)稱為“應(yīng)用任務(wù)”。應(yīng)用任務(wù)是用戶程序運(yùn)行的基本單位。應(yīng)用邏輯都在此任務(wù)中運(yùn)行,擁有自己的消息隊(duì)列,接收來自GUI核心的消息,按一定規(guī)則獨(dú)立進(jìn)行消息循環(huán)。應(yīng)用任務(wù)通過消息與系統(tǒng)任務(wù)交互,受系統(tǒng)任務(wù)的管理;通過應(yīng)用接口層使用系統(tǒng)的軟硬件資源。應(yīng)用任務(wù)的上限數(shù)目?jī)H受平臺(tái)的資源數(shù)目限制。
    在嵌入式GUI中,系統(tǒng)任務(wù)被賦予最高的優(yōu)先權(quán),其他任務(wù)可使用低于系統(tǒng)任務(wù)優(yōu)先級(jí)的不同優(yōu)先級(jí);相同優(yōu)先級(jí)應(yīng)采用時(shí)間片輪轉(zhuǎn)方式運(yùn)行??傊绻斜匾瑒t嵌入式GUI系統(tǒng)會(huì)同時(shí)采取時(shí)間片輪轉(zhuǎn)和優(yōu)先級(jí)搶占的任務(wù)調(diào)度策略,如圖3所示。

    在沒有消息到達(dá)或者在等待某個(gè)事件時(shí),任務(wù)需要將自己掛起。一旦有消息進(jìn)入消息隊(duì)列,任務(wù)將會(huì)被喚醒以處理消息。這樣,有限的CPU資源就能夠被充分地利用。
    此外,系統(tǒng)任務(wù)維護(hù)一個(gè)用于跟蹤及管理應(yīng)用任務(wù)的列表。每一個(gè)應(yīng)用任務(wù)對(duì)應(yīng)一個(gè)包含其屬性信息的任務(wù)信息塊。任務(wù)屬性包括消息隊(duì)列指針、任務(wù)句柄和任務(wù)入口等,對(duì)指定任務(wù)進(jìn)行了詳細(xì)的描述。一個(gè)信息塊的創(chuàng)建與銷毀必須與應(yīng)用任務(wù)的創(chuàng)建與銷毀保持同步。系統(tǒng)任務(wù)必須維護(hù)該列表,以保證這些信息塊的正確性。多任務(wù)管理機(jī)制如圖4所示。
    對(duì)用戶來說,只需要簡(jiǎn)單地指定任務(wù)的入口和優(yōu)先級(jí)(如果有必要的話),其他所有的工作都由系統(tǒng)任務(wù)自動(dòng)完成。采用這種調(diào)度和管理方法,能使系統(tǒng)變得更加易用和高效。
2.2 消息驅(qū)動(dòng)機(jī)制
   
消息機(jī)制的提出,最初是為了解決早期程序設(shè)計(jì)中基于硬件中斷的事件處理問題。中斷事件的發(fā)生足不可預(yù)期的、突發(fā)性的,因此當(dāng)有多個(gè)應(yīng)用等待并處理中斷事件時(shí),就會(huì)出現(xiàn)問題。消息機(jī)制可以很好地解決事件驅(qū)動(dòng)的多應(yīng)用設(shè)計(jì)問題,并且可以形成一種處理多個(gè)系統(tǒng)之間、系統(tǒng)內(nèi)部件和部件之問關(guān)系的簡(jiǎn)潔而且可靠的方法。
    在只支持單任務(wù)的GUI系統(tǒng)中只有一個(gè)串行化的消息隊(duì)列,消息嚴(yán)格地按照順序處理,導(dǎo)致響應(yīng)慢、效率低,故有必要采用并行化的消息隊(duì)列。當(dāng)一個(gè)隊(duì)列中的消息忙于處理一個(gè)冗長(zhǎng)工作時(shí),輸入焦點(diǎn)能夠切換到另外一個(gè)隊(duì)列。
    系統(tǒng)維護(hù)一個(gè)系統(tǒng)消息隊(duì)列和多個(gè)指定任務(wù)信息隊(duì)列,每個(gè)指定任務(wù)信息隊(duì)列對(duì)應(yīng)一個(gè)應(yīng)用任務(wù),如圖5所示。事件任務(wù)將輸入轉(zhuǎn)化成消息并將其放入系統(tǒng)消息隊(duì)列中,系統(tǒng)任務(wù)檢索到輸入消息后首先會(huì)對(duì)該消息進(jìn)行檢查,然后將消息郵寄給目標(biāo)應(yīng)用任務(wù)或直接對(duì)消息進(jìn)行處理。每個(gè)應(yīng)用任務(wù)從它的消息隊(duì)列中移出消息,并將其發(fā)送到適當(dāng)?shù)拇翱诔绦蛑羞M(jìn)行處理。一個(gè)應(yīng)用任務(wù)可以將消息郵寄到它自己的消息隊(duì)列,也可以郵寄到其他應(yīng)用任務(wù)的消息隊(duì)列中。

    此外,為了達(dá)到不同的目的,系統(tǒng)提供了同步和異步兩種基本類型的消息。
2.3 桌面及窗口管理
   
屏幕中的窗口通常是相互覆蓋,而且它們的相對(duì)位置也在不斷地變動(dòng)。這些窗口有可能分別屬于不同的任務(wù),但共享一個(gè)相同的屏幕。所以,如何方便并有效地計(jì)算和維護(hù)窗口便顯得很重要。
    首先介紹2個(gè)概念:全局剪切域和窗口剪切域。它們都與應(yīng)用任務(wù)相關(guān),前者指出哪些區(qū)域占據(jù)屏幕,后者給出在相同的應(yīng)用任務(wù)中所有對(duì)象的剪切關(guān)系。
    系統(tǒng)任務(wù)除了要維護(hù)它自己的剪切域外,還要負(fù)責(zé)管理所有應(yīng)用任務(wù)的全局剪切域,如圖6所示。一旦窗口位置發(fā)生變化,系統(tǒng)任務(wù)必須更新信息并且通知應(yīng)用任務(wù)作出相應(yīng)的變動(dòng)。另一方面,在計(jì)算窗口剪切域時(shí),應(yīng)用任務(wù)只須關(guān)心它本身而不受其他任務(wù)的影響,好像整個(gè)屏幕只有它一個(gè)任務(wù)在運(yùn)行。至于最后實(shí)際的剪切結(jié)果,只需將全局剪切和窗口剪切結(jié)果進(jìn)行“與”運(yùn)算。

2.4 Z序和對(duì)象樹
    Z序?qū)嶋H定義了屏幕中對(duì)象集(可顯窗口)之間的層次關(guān)系。GUI用戶可以通過選擇要被置于前端的窗口來改變Z序。很多GUI系統(tǒng)將Z序當(dāng)作一個(gè)帶有指定運(yùn)算集的顯式列表來實(shí)現(xiàn)。然而,在嵌入式GUI系統(tǒng)中不用這種方式,而是通過對(duì)象樹來說明這些GUI對(duì)象之間的層次關(guān)系和Z序。理論上,每一個(gè)GUI對(duì)象都有父親、孩子和兄弟。因此,所有顯示在屏幕上的對(duì)象便構(gòu)成一棵以桌面為根節(jié)點(diǎn)的倒置樹。對(duì)樹進(jìn)行“后根遍歷”就能夠容易地得到Z序。
    圖7描述了對(duì)象樹的建立過程。對(duì)象樹的采用極大地簡(jiǎn)化了桌面管理,能夠在不增加額外工作的情況下方便地組合對(duì)象和實(shí)現(xiàn)Z序管理。

3 小 結(jié)
   
將來的GUI系統(tǒng)將越來越復(fù)雜,要求GUI系統(tǒng)實(shí)現(xiàn)的功能也越來越豐富,這就需要一個(gè)更加開放且伸縮性好的體系結(jié)構(gòu)。本文提出的嵌入式GUI體系結(jié)構(gòu)具有很強(qiáng)的靈活性,且可移植性好,能夠很好地應(yīng)用于嵌入式領(lǐng)域的各種環(huán)境。

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

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

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

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

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

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

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

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

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

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

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

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

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

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

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉