<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Linux系統下Microwindows的應用

嵌入式Linux系統下Microwindows的應用

作者: 時(shí)間:2004-12-10 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:通過(guò)對GUI軟件進(jìn)行分析并與X window進(jìn)行對比,闡述用于設備上的優(yōu)點(diǎn);簡(jiǎn)要論述的體系結構和圖形程序接口;介紹其設備驅動(dòng)特性、API、客戶(hù)機/服務(wù)器模型、畫(huà)圖機制和FLTK。

關(guān)鍵詞: Microwindows

引言

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

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

1 X Window的不足

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

2 Microwindows分析比較

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

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

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

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

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

3 Microwindows的體系結構

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

圖3 Microwindows體系結構

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

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

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

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

4 Micorowindows上的FLTK API

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

FLTK是一個(gè)C++庫,由于大多數現代GUI環(huán)境都是面向對象的,這命名編寫(xiě)的應用程序移植到類(lèi)似的API中會(huì )更容易。

結語(yǔ)

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>