环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產品分類

當前位置: 首頁 > 傳感測量產品 > 數據采集產品 > 工控機

類型分類:
科普知識
數據分類:
工控機

嵌入式多任務GUI的通用解決方案

發布日期:2022-04-18 點擊率:43

摘要: 針對嵌入式多任務GUI系統需要非常強的靈活性、可移植性和可伸縮性的特點.提出一種通用解決方案;采用層次化、模塊化和面向對象的設計思想,給出了GUI 的體系結構,并對多任務GUI設計中的多任務調度策略及管理、消息驅動機制、桌面廈窗口管理和對象樹等關鍵技術進行了研究。該解決方案的原型已經成功應用于我國自主產權的實時操作系統DeltaOS中。
關鍵詞:嵌入式系統  嵌入式GUI  圖形用戶界面  多任務 

    嵌入式GUI(Graphic Uset Interface)系統就是在嵌入式系統中為特定的硬件設備或環境而設汁的圖形用戶界面系統。調查顯示,越來越多具有靈活性、高效性和可移植性的嵌入式GUI系統被廣泛應用于辦公自動化、消費電子、通信設備、智能儀器等許多領域;而且隨著硬件技術的發展,要求GUI實現的功能越來越豐富,GUI系統也變得比以往更加復雜、多樣。

    大多數的嵌入式GUI系統都只能簡單地支持單任務。單任務GUI的效率較低,無法滿足未來GUI的發展需求,故多任務GUI是嵌入式GUI的發展方向。

    目前,在嵌入式應用領域比較成功的嵌入式多任務GUI系統主要有:MiniGUI、MicroWindows和Qt/Em-bedded。它們主要是針對嵌入式Linux而設計的,通過PThrred庫來實現對多線程的支持;而PThred本身就比較復雜,很難將這些GUI系統移植到平臺接口不符合POSIX標準的目標平臺上。所以,上述幾種GUI系統有一個共同的缺點,就是過分地依賴于某種特定的平臺,導致可移植性差。

    為了有效地兼容嵌入式領域的各種環境,下面提出一種通用、有效并且可移植性好的嵌入式GUI體系結構,并對多任務GUI設汁中的關鍵技術進行研究。

1 體系結構

    針對GUI需要非常強的靈活性,可移植性和可伸縮性的特點,在其體系結構的設計中,采用層次化、模塊化和面向對象的設計思想。層次式的體系結構在許多軟件系統中被采用,被公認為是一種合理的結構,但最重要的是如何來劃分這些層次,使系統的結構最合理、最清晰。

    在設計中采用如下劃分策略:力求層次之間相對獨立,對任一層的改動保證它對上層的接口不變,上層不受下層變化的影響。在這樣的層次結構中,最底層和最高層都可能根據具體需要發生改變,因此應該為這兩層提供充分的變動空間,而中間的層次則應是獨立不變的。

    GUI在嵌入式應用環境中,硬件環境、操作系統和用戶應用程序之間的層次如圖1所示。圖1中,通過驅動程序,GUI組件部分與硬件隔離;通過操作系統抽象層,使核心與具體操作系統隔離。這種層次體系結構使得GUI具有良好的平臺無關性,在不同的操作系統和硬件平臺之間的移植非常方便。按上述設計思想,GUI層次模型劃分如圖2所示。圖中,GUI被劃分為3層,每一層義根據具體功能的不同被劃分為幾個模塊。


 


    1.1 輸入輸出層

    這一層的功能是將系統中設備和操作系統平臺的具體細節屏蔽起來。該設備層被定義在BSP中,向上提供GUI對沒備的顯示特性操作。該層分為設備邏輯和硬件抽象兩個子層。設備邏輯子層使用同一類設備的概念來描述GUI支持的外部設備及對該設備的邏輯操作,向上層提供了統一的設備操作接口;而硬件抽象子層則利用實際的設備控制器操作,根據硬件在不同平臺上的驅動來實現硬件抽象子層中定義的接口。

    1.2 窗口核心層

    窗口核心層實現GUI的關鍵功能,根據功能可劃分為消息管理、緩沖池管理、作圖管理、定時器、資源管理、對象管理、子屏管理和內存堆管理等幾部分。

    由于GUI采取消息驅動的通信方式,因此消息管理構成GUI的靈魂,通過它把系統的各個部分聯系起來。在應用程序的運行過程中,消息承載了系統各部分間的交換信息。

    內存堆管理:目的是避免在系統運行過程中動態分配和釋放內存時引起存儲碎片。兩個比較頻繁的動態內存分配操作是消息空間的申請/釋放和屏幕對象剪切域的刷新。

    作圖管理:完成畫點、畫線、畫圓等作圖操作。為了提高GUI的移植性,這層主要完成與硬件無關的作圖過程。對具有特殊顯示功能的應用平臺來說,此層也可以大量調用硬件提供的功能函數(經輸出硬件無關層包裝后的接口),從而實現特殊的作圖效果。GUI在結構上提供了這種靈活性。作圖管理層向上以作圖原語集的形式為應用提供調用接口。

    定時器:根據系統時鐘來為應用提供計數信息。
    資源管理:主要對字體、圖片和調色板等進行管理,需要實現資源的存儲以及為應用提供適當的接口兩大功能。
    對象管理:采取合理的機制來組織在屏幕上顯示的對象。GUI把所有能在屏幕上顯示的GUI元素稱為“對象”,并通過對象樹、Z序和剪切域等機制來實現對象的管理。窗口核心層還為應用提供了添加、刪除、隱藏對象等操作接口函數。

    1.3 應用接口層

    應用接口層封裝了GUI為用戶提供的一切接口,應用程序看到的GUI就是此層提供的所有接口函數,包括工具箱、作圖原語集和對象操作集等3部分。

    工具箱:GUI為用戶提供的控件集。這部分的大小是可根據應用的需要調整的,從而也在較大程度上影響了GUI庫的大小。常用的控件有按鈕、滾動條、窗口和編輯框等。
    作圖原語集:作圖管理層提供的繪圖函數接口。工具箱也是在它的基礎上實現的。
    對象操作集:主要實現GUI對象的添加和刪除等操作功能。


2 多任務GUI關鍵技術分析

    本文中提到的“任務”,在同一個地址空間執行并且可以無約束地直接訪問所有的共享資源。下面對多任務GUI設計中的關鍵技術進行分析。

    2.1 多任務調度策略及管理

    多任務系統需要一個合理的任務調度策略來管理所有的任務。啟動GUI后,會默認產牛一個系統任務、一個事件任務和一個定時器任務;而應用任務的產生則要根據具體的用戶需求。

    (1)系統任務

    桌面對象運行的任務稱為“系統任務”。系統任務是整個圖形用戶系統運轉的核心。它不斷地從系統的主消息隊列中取消息,并按消息的目的和用途將其派發到對應的目的任務;同時負責所有應用任務的管理和維護以及桌面管理等事務。一個系統中僅有一個系統任務。

    (2)事件任務

    事件任務負責收集外部事件,并將事件解釋為與之對應的GUI消息,并放入系統的主消息隊列中。用戶的輸入正是從這里傳人GUI核心進行處理。一般情況下,一個系統中僅有一個事件任務。

    (3)定時器任務

    定時器任務是通過操作系統的系統調用產生GUI定時器的。

    (4)應用任務

    除系統任務之外,窗口所運行的其他任務稱為“應用任務”。應用任務是用戶程序運行的基本單位。應用邏輯都在此任務中運行,擁有自己的消息隊列,接收來自GUI核心的消息,按一定規則獨立進行消息循環。應用任務通過消息與系統任務交互,受系統任務的管理;通過應用接口層使用系統的軟硬件資源。應用任務的上限數目僅受平臺的資源數目限制。

    在嵌入式GUI中,系統任務被賦予最高的優先權,其他任務可使用低于系統任務優先級的不同優先級;相同優先級應采用時間片輪轉方式運行。總之,如果有必要,則嵌入式GUI系統會同時采取時間片輪轉和優先級搶占的任務調度策略,如圖3所示。


    在沒有消息到達或者在等待某個事件時,任務需要將自己掛起。一旦有消息進入消息隊列,任務將會被喚醒以處理消息。這樣,有限的CPU資源就能夠被充分地利用。

    此外,系統任務維護一個用于跟蹤及管理應用任務的列表。每一個應用任務對應一個包含其屬性信息的任務信息塊。任務屬性包括消息隊列指針、任務句柄和任務入口等,對指定任務進行了詳細的描述。一個信息塊的創建與銷毀必須與應用任務的創建與銷毀保持同步。系統任務必須維護該列表,以保證這些信息塊的正確性。多任務管理機制如圖4所示。

    對用戶來說,只需要簡單地指定任務的入口和優先級(如果有必要的話),其他所有的工作都由系統任務自動完成。采用這種調度和管理方法,能使系統變得更加易用和高效。

    2.2 消息驅動機制

    消息機制的提出,最初是為了解決早期程序設計中基于硬件中斷的事件處理問題。中斷事件的發生足不可預期的、突發性的,因此當有多個應用等待并處理中斷事件時,就會出現問題。消息機制可以很好地解決事件驅動的多應用設計問題,并且可以形成一種處理多個系統之間、系統內部件和部件之問關系的簡潔而且可靠的方法。

    在只支持單任務的GUI系統中只有一個串行化的消息隊列,消息嚴格地按照順序處理,導致響應慢、效率低,故有必要采用并行化的消息隊列。當一個隊列中的消息忙于處理一個冗長工作時,輸入焦點能夠切換到另外一個隊列。

    系統維護一個系統消息隊列和多個指定任務信息隊列,每個指定任務信息隊列對應一個應用任務,如圖5所示。事件任務將輸入轉化成消息并將其放入系統消息隊列中,系統任務檢索到輸入消息后首先會對該消息進行檢查,然后將消息郵寄給目標應用任務或直接對消息進行處理。每個應用任務從它的消息隊列中移出消息,并將其發送到適當的窗口程序中進行處理。一個應用任務可以將消息郵寄到它自己的消息隊列,也可以郵寄到其他應用任務的消息隊列中。


    此外,為了達到不同的目的,系統提供了同步和異步兩種基本類型的消息。

    2.3 桌面及窗口管理

    屏幕中的窗口通常是相互覆蓋,而且它們的相對位置也在不斷地變動。這些窗口有可能分別屬于不同的任務,但共享一個相同的屏幕。所以,如何方便并有效地計算和維護窗口便顯得很重要。

    首先介紹2個概念:全局剪切域和窗口剪切域。它們都與應用任務相關,前者指出哪些區域占據屏幕,后者給出在相同的應用任務中所有對象的剪切關系。

    系統任務除了要維護它自己的剪切域外,還要負責管理所有應用任務的全局剪切域,如圖6所示。一旦窗口位置發生變化,系統任務必須更新信息并且通知應用任務作出相應的變動。另一方面,在計算窗口剪切域時,應用任務只須關心它本身而不受其他任務的影響,好像整個屏幕只有它一個任務在運行。至于最后實際的剪切結果,只需將全局剪切和窗口剪切結果進行“與”運算。

    2.4 Z序和對象樹

    Z序實際定義了屏幕中對象集(可顯窗口)之間的層次關系。GUI用戶可以通過選擇要被置于前端的窗口來改變Z序。很多GUI系統將Z序當作一個帶有指定運算集的顯式列表來實現。然而,在嵌入式GUI系統中不用這種方式,而是通過對象樹來說明這些GUI對象之間的層次關系和Z序。理論上,每一個 GUI對象都有父親、孩子和兄弟。因此,所有顯示在屏幕上的對象便構成一棵以桌面為根節點的倒置樹。對樹進行“后根遍歷”就能夠容易地得到Z序。

    圖7描述了對象樹的建立過程。對象樹的采用極大地簡化了桌面管理,能夠在不增加額外工作的情況下方便地組合對象和實現Z序管理。


3 小 結

    將來的GUI系統將越來越復雜,要求GUI系統實現的功能也越來越豐富,這就需要一個更加開放且伸縮性好的體系結構。本文提出的嵌入式GUI體系結構具有很強的靈活性,且可移植性好,能夠很好地應用于嵌入式領域的各種環境。

下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

主站蜘蛛池模板: 北京网站建设-企业网站建设-建站公司-做网站-北京良言多米网络公司 | PCB接线端子_栅板式端子_线路板连接器_端子排生产厂家-置恒电气 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 东莞猎头公司_深圳猎头公司_广州猎头公司-广东万诚猎头提供企业中高端人才招聘服务 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 模具ERP_模具管理系统_模具mes_模具进度管理_东莞市精纬软件有限公司 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 软文推广发布平台_新闻稿件自助发布_媒体邀约-澜媒宝 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 西装定制/做厂家/公司_西装订做/制价格/费用-北京圣达信西装 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 活性炭-蜂窝-椰壳-柱状-粉状活性炭-河南唐达净水材料有限公司 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 广州云仓代发-昊哥云仓专业电商仓储托管外包代发货服务 | 卧涛科技有限公司科技项目申报公司|高新技术企业申报|专利申请 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 液氮罐_液氮容器_自增压液氮罐_杜瓦瓶_班德液氮罐厂家 |