當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式Linux系統(tǒng)下Microwindows的應(yīng)用

摘要:通過對(duì)嵌入式GUI軟件Microwindows進(jìn)行分析并與X window進(jìn)行對(duì)比,闡述Microwindows用于嵌入式設(shè)備上的優(yōu)點(diǎn);簡要論述Microwindows的體系結(jié)構(gòu)和圖形應(yīng)用程序接口;介紹其設(shè)備驅(qū)動(dòng)特性、API、客戶機(jī)/服務(wù)器模型、畫圖機(jī)制和FLTK。

    關(guān)鍵詞:嵌入式系統(tǒng) Microwindows Linux

引言

在進(jìn)入后PC時(shí)代以后,嵌入式設(shè)備以一種無法抑制的迅猛速度普及和發(fā)展到日常生活及工作當(dāng)中,眾多知名開發(fā)商為了搶占市場和爭奪利潤,競相推出各種性能優(yōu)異的軟硬件及內(nèi)核芯片。鑒于以視窗為代表的桌面操作模式取得巨大成功,該模式目前已成為國內(nèi)外開發(fā)者們?cè)谇度胧皆O(shè)備中的首選方案。

近幾年,隨著Linux技術(shù)的興起,越來越多的企業(yè)和科研機(jī)構(gòu)把目光轉(zhuǎn)向嵌入式Linux的開發(fā)和研究。Linux不僅具有桌面電腦的全部功能和特性,允許修改和根據(jù)用戶的要求進(jìn)行定制,而且作為一種免費(fèi)的開放式源碼,還支持目前在嵌入式設(shè)計(jì)領(lǐng)域中常用的新型微處理器,如StrongARM、MIPS以及PowerPC等,具有穩(wěn)定、高效、易定制、易裁減、硬件支持廣泛等特點(diǎn)。Microwindows是一個(gè)著名的開放式源碼的嵌入式GUI軟件,目的是把圖形視窗環(huán)境引入到運(yùn)行Linux的小型設(shè)備和平臺(tái)上。作為X Window系統(tǒng)的替代品,Microwindows可用更少的RAM和文件存儲(chǔ)空間(100K~600KB)提供相似的功能,允許設(shè)計(jì)者輕松加入各種顯示設(shè)備、鼠標(biāo)、觸摸屏和鍵盤等;可移植性非常好,可用C語言和少部分匯編語言實(shí)現(xiàn),支持Intel 16位、32位CPU,MIPS R4000以及基于ARM內(nèi)核的處理器芯片,有多種平臺(tái)支持Microwindows。

1 X Window的不足

由于使用了帶有TCP/IP結(jié)構(gòu)的自由式開放源碼操作系統(tǒng),使嵌入式設(shè)備進(jìn)入了一個(gè)創(chuàng)新應(yīng)用時(shí)代,不過這些新的應(yīng)用需要考慮其資源環(huán)境,這是因?yàn)槎鄶?shù)的嵌入式設(shè)備缺少硬件驅(qū)動(dòng)和大的RAM。目前,在Linux系統(tǒng)中普遍使用X Window系統(tǒng),如圖1所示。X Window是在20世界80年代早期由MIT、DEC等提出來的,是一個(gè)基于Client/Server結(jié)構(gòu)的視窗系統(tǒng);允許在任一臺(tái)UNIX主機(jī)(Clients——客戶端)上運(yùn)行程序,而在基于X的終端(Server——服務(wù)器)上顯示出來。在這個(gè)過程中,相當(dāng)一部分代碼用于確認(rèn)主機(jī)和服務(wù)器上運(yùn)行的Client/Server程序是否正常。目前,大多數(shù)X的客戶端和服務(wù)器是在同一臺(tái)機(jī)器上運(yùn)行,X Window服務(wù)器經(jīng)編譯后一般用于自動(dòng)檢測硬件。服務(wù)器中還包含有眾多的畫圖函數(shù),它們的位置根據(jù)執(zhí)行速度被位置在裁減層之上或之下。這些便利X Window過于臃腫和復(fù)雜,運(yùn)行時(shí)需要至少8MB的內(nèi)存空間。

2 Microwindows分析比較

對(duì)于大多數(shù)嵌入式設(shè)計(jì),尤其是在運(yùn)行專用圖形程序的場合,X Window不是一種恰當(dāng)?shù)倪x擇。由此而發(fā)展起來的Microwindows是專門設(shè)計(jì)用于在小型設(shè)備上開發(fā)具有高品質(zhì)圖形功能的開放式源碼桌面系統(tǒng),有許多針對(duì)現(xiàn)代圖形視窗環(huán)境的功能部件。它的結(jié)構(gòu)設(shè)計(jì)使其可方便地加入不同的顯示、鼠標(biāo)、觸屏以及鍵盤等設(shè)備。Microwindows基于2.2.0版本的Linux系統(tǒng)如圖2所示。其內(nèi)核所包含的代碼允許用戶程序?qū)D形顯示的內(nèi)存空間作為framebuffer進(jìn)行存取操作,這樣在用戶程序空間中可作為內(nèi)存映射區(qū)域來直接控制圖形顯示,可使得用戶在編寫圖形程序的時(shí)候不再需要去了解底層硬件,這是目前Microwindows在嵌入式系統(tǒng)中被很多人使用的原因。

設(shè)計(jì)得在設(shè)計(jì)Microwindows時(shí)沿用了已有的兩個(gè)圖形應(yīng)用程序接口(API):一是Microsoft Windows中Win32/WinCE的圖形設(shè)備接口(GDI),它適用于所有Windows CE和Win32的應(yīng)用程序;另外就Nano-X(Xlib-like界面),它與GDK非常相似,用在Linux上,是像X的API,用于占用資源少的應(yīng)用程序。這使得熟悉Windows或者是Linux X11的用戶可在熟悉的環(huán)境下開發(fā)圖形應(yīng)用程序。

Microwindows在運(yùn)行過程中僅需要50~250KB的內(nèi)存空間,遠(yuǎn)小于X Windows系統(tǒng)所需空間。這主要是因?yàn)镸icrowindows對(duì)于在驅(qū)動(dòng)層的每一個(gè)繪圖函數(shù)采用的是單進(jìn)程的方式,由驅(qū)動(dòng)層核驗(yàn)是否裁減并調(diào)用驅(qū)動(dòng)程序來繪制未被裁減的像素點(diǎn)或線;而在X Window系統(tǒng)中,則是出于對(duì)速度的考慮,包含所有像素點(diǎn)的繪制程序并分別有裁減和未裁減的版本。Microwindows完全支持新的Linux內(nèi)核的幀緩沖區(qū)結(jié)構(gòu),同時(shí)支持1、2、4、8、16、24、32位像素點(diǎn)顯示,支持調(diào)色板、真彩色、灰度等顏色模式,并對(duì)渲染提供內(nèi)置支持。在其API函數(shù)的支持下,還可以以RGB的格式描述上述的顏色模式,系統(tǒng)中包含顏色轉(zhuǎn)換的程序,可將像素點(diǎn)轉(zhuǎn)換成相近的可顯示顏色或相應(yīng)單色系統(tǒng)中的灰度級(jí)。雖然Microwindows支持Linux系統(tǒng),但它是基于相對(duì)簡單的屏幕驅(qū)動(dòng)界面結(jié)構(gòu),因此,可在許多不同的實(shí)時(shí)操作系統(tǒng)(RTOS)上運(yùn)行,甚至于那些無硬件的實(shí)時(shí)操作系統(tǒng)也可運(yùn)行Microwindows。這樣,可使得客戶的圖形應(yīng)用程序在不的工程中共享使用,也可在不同的RTOS上運(yùn)行不同的目標(biāo)程序而不需要重新編寫圖形應(yīng)用程序,大大提高了編程效率。

Microwindows支持圖形目標(biāo)平臺(tái)的主機(jī)平臺(tái)競爭,也就是說應(yīng)用于Linux的Microwindows應(yīng)用程序不需要跨平臺(tái)編譯,就可在桌面上直接運(yùn)行和測試,同時(shí)仍可在目標(biāo)平臺(tái)上運(yùn)行。這一點(diǎn)需通過使用Micorwindows的X11屏幕驅(qū)動(dòng)器實(shí)現(xiàn),同時(shí)驅(qū)動(dòng)器可以根據(jù)像素點(diǎn)和顏色值來模擬目標(biāo)平臺(tái)的顯示。因此,即使桌面系統(tǒng)是24位的顏色模式,它也可以以2色模式顯示目標(biāo)系統(tǒng)中的應(yīng)用程序。

對(duì)于那些熟悉使用Microsoft Windows或Linux X Windows的程序員頁言,經(jīng)編寫應(yīng)用程序時(shí)是有一定區(qū)別的。Microsoft Windows的編程員一般使用MS-Visual C++的類庫(MFC)中的C++應(yīng)用程序框架或者是更新的ATL框架,在繪制圖形時(shí)使用Win32圖形設(shè)備接口(GDI)。Windows中還包括有許多Win32 GDI中的應(yīng)用界面控件,如按鈕、列表等。而X Windows系統(tǒng)提供了一個(gè)低級(jí)接口——Xlib,僅用于實(shí)現(xiàn)最低級(jí)簡單的繪圖功能,并將其封裝成程序包在需顯示時(shí)在顯示設(shè)備上運(yùn)行。在用戶界面中,大多數(shù)的解決利用插件,在Xlib的上層加入插件集來實(shí)現(xiàn)更高級(jí)的函數(shù)。目前,對(duì)Microwindows的應(yīng)用正在逐步地加入GTK+/GDK以及FLTK插件,以實(shí)現(xiàn)更多的用戶界面控件。

3 Microwindows的體系結(jié)構(gòu)

由于Microwindows在設(shè)計(jì)上有著明顯的分層結(jié)構(gòu),如圖3所示,其設(shè)備與平臺(tái)相關(guān)層、設(shè)備與平臺(tái)無關(guān)層和應(yīng)用層之間層次清晰、結(jié)構(gòu)明顯,因此勿需改動(dòng)其整體結(jié)構(gòu),只需在其相應(yīng)的部分添加代碼即可實(shí)現(xiàn)一些更為復(fù)雜的功能。

圖3 Microwindows體系結(jié)構(gòu)

    在Microwindows的最底層(設(shè)備與平臺(tái)相關(guān)層),系統(tǒng)針對(duì)顯示屏、鼠標(biāo)、觸屏以及鍵盤等各定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)結(jié)構(gòu)和頂層結(jié)構(gòu)一樣,供圖形引擎使用,包含了針對(duì)指定設(shè)置和硬件驅(qū)動(dòng)代碼。Microwindows中還包含了諸多設(shè)備和操作系統(tǒng)的各種版本的驅(qū)動(dòng)程序。屏幕驅(qū)動(dòng)可支持系統(tǒng)1的、2、4、8、16、24、32位顯示和調(diào)色板、真彩色、灰度等顏色模式。屏幕驅(qū)動(dòng)中還包括一些入口指針,這些指針分別用讀寫像素、繪制水平或垂直線,在屏幕和內(nèi)存之間相互映射內(nèi)存空間。在實(shí)現(xiàn)這些基本指針的過程中需運(yùn)行包括TrueType或Adobe Type1的字體支持、RGB顏色支持、JPEG以及BMP圖形處理等Microwindows上層函數(shù)。如果屏幕驅(qū)動(dòng)中還包括有硬件加速的話,僅需更改驅(qū)動(dòng)程序即可;也可在系統(tǒng)中添加觸屏、鍵盤、按鍵等的輸入。

Microwindows的中間層是圖形引擎層(也稱為設(shè)備與平臺(tái)無關(guān)層),因?yàn)樗械睦L圖函數(shù)都通過調(diào)用屏幕驅(qū)動(dòng)來實(shí)現(xiàn),該層與硬件無關(guān)。圖形引擎層為應(yīng)用層提供了一系列相應(yīng)的入口指針調(diào)用繪圖函數(shù),還為所有的顏色指定了RGB的顏色模型;同樣,該層也與顯示設(shè)備無關(guān),可以由RGB值為判斷硬件中的像素值。除此之外,Microwindows還在中間層實(shí)現(xiàn)裁減功能,它采用多矩形算法,可在任意復(fù)雜的區(qū)域中實(shí)現(xiàn)繪圖功能。中間層還要控制所有字體的顯示,支持FreeType以及使用T1Lib的Adobe Type 1字體、支持比例字體,同時(shí)還支持ASCII、Unicode-16、Unicode-32、UTF-8編碼規(guī)則。

Microwindows的最高層(應(yīng)用層)實(shí)現(xiàn)了窗口交互系統(tǒng),這使得程序員既可在全屏幕顯示,也可在層疊的窗口中顯示。一層還包括事件處理,可將觸摸屏、按鍵等激發(fā)的事件傳送給應(yīng)用程序。

Nano-X API允許程序可以根據(jù)Client/Server協(xié)議通過網(wǎng)絡(luò)或是本地的UNIX主機(jī)進(jìn)行編譯,以同時(shí)顯示幾個(gè)運(yùn)行在已連接到Microwindows服務(wù)器的嵌入式設(shè)備或遠(yuǎn)程主機(jī)上的程序。除此之外,Client/Server協(xié)議還可以利用共享的內(nèi)存空間客戶端和服務(wù)器之間傳播數(shù)據(jù)。Nano-X可在每個(gè)客戶機(jī)上步運(yùn)行,這意味著一旦發(fā)送了客戶機(jī)請(qǐng)求包,服務(wù)器在另一個(gè)客戶機(jī)提供服務(wù)之前一直等待,直到整個(gè)包到達(dá)為止。這使得服務(wù)器代碼非常簡單,而運(yùn)行速度仍非???。

4 Micorowindows上的FLTK API

FLTK是一個(gè)簡單靈活的GUI工具箱,特別適用于占用資源很少的環(huán)境。它提供大多數(shù)窗口構(gòu)件一一按鈕、對(duì)話框、文本框以及出色的“賦值器”選擇(用于輸入數(shù)值的窗口構(gòu)件),還包括滑動(dòng)器、滾動(dòng)條、刻度盤等其它構(gòu)件。針對(duì)Microwindows GUI引擎的FLTK的Linux版本被稱為FLNX,它能用來為嵌入式環(huán)境創(chuàng)建一個(gè)出色的UI構(gòu)建器,由兩個(gè)構(gòu)件組成:FI_Widget和FLUID。FI_Widget由所有基本窗口構(gòu)件API組成,占用40~48KB的資源。FLUID(Fast Light User Interface Desigher,快速輕巧的用戶界面設(shè)計(jì)器)是用來產(chǎn)生FLTK源代碼的圖形編輯器,占用大約380KB資源(包括每個(gè)窗口構(gòu)件)。

FLTK是一個(gè)C++庫,由于大多數(shù)現(xiàn)代GUI環(huán)境都是面向?qū)ο蟮?,這命名編寫的應(yīng)用程序移植到類似的API中會(huì)更容易。

結(jié)語

Microwindows正在嵌入式開發(fā)領(lǐng)域穩(wěn)步發(fā)展,是完全免費(fèi)的開放式源代碼,為嵌入式設(shè)備提供了更多的解決方案;任何對(duì)將Linux定制于PDA、掌上機(jī)或者可移動(dòng)設(shè)備感興趣的人都可從因特網(wǎng)免費(fèi)下載,并將其移值或開發(fā)。熟悉圖形應(yīng)用程序的用戶可以很快就在該系統(tǒng)上編寫自己的圖形應(yīng)用程序,在未來的嵌入式系統(tǒng)設(shè)計(jì)中,它的作用是無可限量的。

本站聲明: 本文章由作者或相關(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日 /美通社/ -- 英國汽車技術(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ì)日本游戲市場的投資。

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

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

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

8月28日消息,在2024中國國際大數(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è)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

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

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

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

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

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