www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]一種基于嵌入式Linux圖形用戶接口的實(shí)現(xiàn)

 隨著Internet與網(wǎng)絡(luò)的迅速發(fā)展 并向家庭領(lǐng)域不斷擴(kuò)展,使消費(fèi)電子、計(jì)算機(jī)、通信(3C)一體化趨勢日趨明顯,嵌入式系統(tǒng)再度成為研究與應(yīng)用的熱點(diǎn)。嵌入式實(shí)時(shí)Linux操作系統(tǒng)以價(jià)格低廉、功能強(qiáng)大又易于移植而正在被廣泛采用,成為新興的力量,如今隨著WAP手機(jī)、PDA、機(jī)頂盒、及DVD/VCD播放機(jī)已經(jīng)迅速普及,用戶對這些手持式設(shè)備的GUI提出了更高的要求,希望能看到像PC機(jī)才擁有的華麗美觀的GUI。GUI已經(jīng)成為了人與機(jī)器溝通的橋梁,嵌入式系統(tǒng)對GUI的需求越來越高,而這一切均要求有一個(gè)輕型、占用資源少、高性能、高可靠、可配置及美觀的GUI支持。

  1 Java的圖形界面工具

  Java技術(shù)對于服務(wù)器,個(gè)人電腦和嵌入式系統(tǒng)來說是一項(xiàng)偉大的技術(shù)。由于其具有跨平臺等特性。Java在服務(wù)器和桌面電腦方面的應(yīng)用是非常成功的。然而在GUI方面,Java只用非常有限的一些特征去構(gòu)建圖形用戶界面。其思想就是采用平臺無關(guān)的Java應(yīng)用程序接口打包到不同的操作系統(tǒng)來開發(fā)本地圖形用戶界面,被稱之為抽象的窗口工具(AWT)。僅有普通的部件如文件域、文本區(qū)、選擇框、單選按鈕、列表框和按鈕被AWT支持,圖形和圖像的特性支持非常有限,也就是說,只足夠構(gòu)建簡單的applet程序。認(rèn)識到需要更高級的圖形用戶界面組件和圖形能力,Sun公司開發(fā)了Swing,Java 2D,Java3D,圖像的輸入/輸出,以及Java高級圖像(JAI)。Swing是用來構(gòu)建Java圖形界面的標(biāo)準(zhǔn)API(應(yīng)用程序接口),一些AWT類由Swing基礎(chǔ)而來。它有一套完全的組件從按鈕到文件域、表格、樹型和文件編輯器。這些組件不依賴于操作系統(tǒng)本地的部件,而是用原始的圖形像直線、矩形、文字畫出。這種畫代表感觀插件,它能夠模仿本地的感觀。SWT是基于Java開發(fā)的,它的設(shè)計(jì)理念是最大化了操作系統(tǒng)的圖形構(gòu)件的API,就是說只要操作系統(tǒng)提供了相應(yīng)圖形的構(gòu)件,那么SWT只是簡單應(yīng)用JNI技術(shù)調(diào)用它們,只有那些操作系統(tǒng)中不提供的構(gòu)件,SWT才自己去做一個(gè)模擬的實(shí)現(xiàn)。另外SWT還提供對操作系統(tǒng)本地圖形用戶界面的直接訪問,因此,基于SWT的Java應(yīng)用程序擁有本地的圖形用戶界面并且可以和本地別的應(yīng)用程序和部件集成在一起。使用SWT開發(fā)包,簡單、跨平臺、可靠等這些Jaya語言本身所具有的優(yōu)點(diǎn)正漸漸融合到圖形界面的應(yīng)用程序開發(fā)中去。Java語言的另一扇成功之門正在逐漸打開。

  2 SWT+GtkFB圖形系統(tǒng)的體系結(jié)構(gòu)

  2.1 SWT+GtkFB圖形系統(tǒng)的體系結(jié)構(gòu)

  2.1.1 SWT

  SWT處于體系機(jī)構(gòu)的最上層,它與Java內(nèi)的AwT和Swing同屬于設(shè)計(jì)圖形界面所需的高級函數(shù)庫。而且SWT針對AWT 以及Swing的一些問題作了改善,如今它已發(fā)展成一套與作業(yè)系統(tǒng)無關(guān)的圖形元件函數(shù)庫。在元件的產(chǎn)生方面采用了適當(dāng)?shù)哪M,在基本的元件方面是采用原有作業(yè)系統(tǒng)的,對于較復(fù)雜的元件才用仿真的技術(shù)?;赟WT的Java應(yīng)用程序擁有本地的圖形用戶界面,并且可以和本地別的應(yīng)用程序,以及部件集成在一起。

  SWT是基于Java語言開發(fā)出來的高級圖形元件庫,如圖2所示SWT在Java端通過JNI(Java Native InteRFace)技術(shù)直接調(diào)用native端的GtkFB來使用操作系統(tǒng)的資源,JNI技術(shù)使得SWT程序可以與其他語言編寫的Native端的代碼互相協(xié)作,將它們整合在一起;另一方面可使運(yùn)行在JVM(JAava虛擬機(jī))中的SWT代碼調(diào)用GtkFB庫函數(shù)或其他程序;此外利用Invocation API,可將Java虛擬機(jī)嵌入到native端的應(yīng)用中。JNI這個(gè)接口是雙向的,相當(dāng)于橋梁和紐帶,它將SWT代碼和native端的GtkFB代碼連接起來。

  2.1.2 Gtk庫

  如圖1所示,GTK會用到幾個(gè)連接庫,如基本數(shù)據(jù)類型用的Glib庫,它是由基礎(chǔ)類、核心應(yīng)用支持類、實(shí)用功能類、數(shù)據(jù)類和對象系統(tǒng)類五個(gè)部分組成的。

  Pango是用于國際化文本的布局和顯示的全功能框架。Pango可以處理以非從左到右方向排列的文本,并且可以容易地管理復(fù)雜語言,甚至還可以處理根據(jù)使用環(huán)境而采用不同形式的信函。例如它支持雙向文本,用戶可以將從左到右的文本和從右到左的文本混合編排;還可有用于確定各種復(fù)雜文本(如阿拉伯語和泰米爾語)形狀的插件。Pango不僅僅是國際化,而且Pango庫在Xft和XRender的支持下能很好地處理抗鋸齒字體文本的顯示。

  Pango還支持各種圖形格式如libpng,libjpeg,libtiff和Framebuffer port用的FreeType等。實(shí)際上GTK提供gdk-pixbuf,gdk和gtk三個(gè)連接庫,其中Gdk-pixbuf讓我們可做相關(guān)的圖像工作,gdk是窗口繪圖系統(tǒng)的抽象層,framebuffer相關(guān)的工作大部分在此完成,而gtk則是高層的應(yīng)用程序接口。


  Atk(Accessibility Toolkit)可訪問性工具箱。GTK充分利用ATK使殘障人士(如視力低下或行動不便)與GTK應(yīng)用程序交互成為可能。[!--empirenews.page--]

2.1.3 GtkFB的工作原理

  DirectFB訪問圖形硬件設(shè)備依賴于操作系統(tǒng)提供的內(nèi)核接口,即幀緩沖設(shè)備(FrameBuffer)。FrameBuffer實(shí)際上是用一塊硬件來做顯卡和軟件之間的橋梁,Linux的內(nèi)核將其開放出來,使用戶的程序可以通過塊內(nèi)存來存取顯卡。例如設(shè)定顯示分辨率和色彩數(shù)、存取顯示內(nèi)存區(qū)等。不同的Linux需要提供針對不同顯示硬件FrameBuffer的驅(qū)動程序,這就是說DirectFB需要運(yùn)行于FramBuffer之上,然而Linux內(nèi)核提供了常見芯片的FrameBuffer驅(qū)動。

  當(dāng)一個(gè)應(yīng)用程序連接到GtkFB時(shí)會調(diào)用gtk_init(),如圖3所示,此時(shí)GtkFB 啟動Linux的Framebiffer,設(shè)定分辨率和色彩數(shù),接下來打開鍵盤和鼠標(biāo)等外設(shè)(PDA打開按鍵和觸控屏幕).然后到特定目錄去讀取字型,最后對窗口和事件管理作初始化操作。GtkFB可以支持8、16、24、32bpp的framebuffer。

  為了執(zhí)行一個(gè)特定的圖形操作,DirectFB芯片驅(qū)動程序?qū)⒃L問圖形設(shè)備內(nèi)存映射的I/O端口,并且把命令傳遞到圖形設(shè)備卡的加速引擎。實(shí)際的硬件加速是完全在用戶空間內(nèi)完成的。

  2.2 SWT+GtkFB圖形系統(tǒng)的優(yōu)點(diǎn)

  2.2.1 內(nèi)存消耗小、運(yùn)行速度快特別適合嵌入式產(chǎn)品

  由于GtkFB直接運(yùn)行在FrameBufer之上,跳過X系統(tǒng),這樣省下了X Server這一部分資源,這使得在內(nèi)存消耗、運(yùn)行速度上得到顯著提高。另外采用的JNI技術(shù)使得程序運(yùn)行速度、事件的響應(yīng)有較高的提高,能滿足時(shí)間要求較為嚴(yán)格的實(shí)時(shí)應(yīng)用場合。

  2.2.2 系統(tǒng)穩(wěn)定性好

  SWT 的穩(wěn)定性,關(guān)鍵是源于SWT 的設(shè)計(jì)理念。SWT最大化了操作系統(tǒng)的圖形構(gòu)件API,就是說只要操作系統(tǒng)提供了相應(yīng)圖形的構(gòu)件,那么SWT只是應(yīng)用JNI技術(shù)調(diào)用它們,只有那些操作系統(tǒng)中不提供的構(gòu)件,SWT才自己去做一個(gè)模擬的實(shí)現(xiàn)??梢钥闯鯯WT性能上的穩(wěn)定很大程度上取決于相應(yīng)操作系統(tǒng)圖形構(gòu)件的穩(wěn)定性。

  2.2.3 易于移植和共享

  SWT的API和桌面版完全相同,因而代碼可以很容易地在桌面和嵌入式設(shè)備之間移植與共享。

  2.2.4 小巧可配置

  SWT采用了LGPL授權(quán)方式,用戶可以自由地甚至是鼓勵修改源代碼使其更加滿足用戶的需求,很容易根據(jù)用戶的需求來裁減特定的SWT+GtkFB,依據(jù)LGPL許可證,用戶需要公布修改的源代碼,但用戶不必公布自給應(yīng)用程序的源代碼。

  2.2.5 易于開發(fā)

  SWT是基于Java語言開發(fā)的,具有平臺獨(dú)立性、面向?qū)ο?、可移植、安全等Java語言所擁有特點(diǎn)。用戶可以很容易的基于SWT提供的Widget(構(gòu)件)開發(fā)出滿足自己需要的Widget,而且很容易地使用這些Widget去構(gòu)建應(yīng)用程序

  3 SWT+GtkFB圖形系統(tǒng)的實(shí)現(xiàn) [!--empirenews.page--]

  3.1 前期準(zhǔn)備

  在Linux編譯和安裝SWT+GtkFB,首先到http://www.gtk.org/download下載如下的包:pkg-config、glib2.x;atk、pango、DirectFB、gtk+2.x。其次到http://www.eclipse.org/download下載swt.tgr.gz。

  下一步就是在/home/XXX/目錄下創(chuàng)建SWT 和GTK兩個(gè)目錄并且設(shè)置環(huán)境變量。如下:

  export SWT_HOME=/home/XXX/SWT

  export SWT_HOME=/home/XXX/GTK

  export PKG_CONFIG_PATH=$GTK_HOME /lib/pkgconfig

  export LD_LIBRARY_PATH=$GTK_HOME/lib;$LD_LIBRARY_PATH

  此外增加“/home/XXX/GTK/bin”到系統(tǒng)的環(huán)境變量PATH下。

  3.2 編譯和安裝Gtk+2.0

  3.2.1 編譯和安裝pkg-config

  tar zxvf glib-2.0.6.tar.gz -C $GTK_HOME/src

  cd $GTK HOME/src/glib-2.0.6

  ./configure --prefix=$GTK_HOME

  make


  make install

  3.2.2 編譯和安裝atk

  tar zxvf atk-1.0.1.tar.gz -C $GTK_HOME/src

  cd $GTK_HOME/src/atk-1.0.1

  ./configure --prefix=$GTK_HOME

  make

  make install

  3.2.3 編譯和安裝pango、Direct FB、gtk+2.0 、swt-forgtk2.2

  步驟類似atk的安裝。

  4 嵌入式Linux GUI的應(yīng)用前景展望

  嵌入式Linux GUI的應(yīng)用領(lǐng)域很多,既可以用于家電市場,還可以用于商業(yè)市場、工業(yè)及自動化市場、國防市場、通訊市場等。例如,在通訊市場,手機(jī)、可視電話、機(jī)頂盒等可能成為嵌入式Linu.x的運(yùn)行平臺,一個(gè)人性化的用戶界面是贏得消費(fèi)者關(guān)鍵因素。因此嵌入式Linux圖形系統(tǒng)將擔(dān)任著更加重要的角色。

  未來幾年,嵌入式Linux GUI將朝以下方向發(fā)展:第一,輕型、占用資源少,不希望建立在龐大累贅的、非常消耗系統(tǒng)資源的操作系統(tǒng)和GUI之上。第二,高性能、高可靠性,特別是工業(yè)實(shí)時(shí)控制系統(tǒng),對實(shí)時(shí)性的要求非常高,并且比起嵌入式系統(tǒng)來說,對GUI的要求也更高。第三,可配置,我們必須清楚的意識到,嵌入式系統(tǒng)是一種定制設(shè)備,它們對GUI的需求各不相同,有的系統(tǒng)只要求一些圖形功能,而有些系統(tǒng)要求完備的GUI支持,因此,GUI也必須是可定制的。

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

一星期中最糟糕的一天,這居然也成功拿下了吉尼斯記錄。10月17日,吉尼斯世界紀(jì)錄官微發(fā)文稱,正式認(rèn)證星期一為一個(gè)周里最糟糕的一天,周五是最偉大的一天??雌饋碛悬c(diǎn)官微小編搞怪的意思,畢竟尚未見到正式的證書。當(dāng)然,一些打工人...

關(guān)鍵字: MIDDOT MDASH GUI WORLD

隨著13代酷睿處理器的上市,銘瑄本次同步發(fā)布了四款Z790主板,包括兩款A(yù)TX、一款mATX,以及一款I(lǐng)TX迷你小板。其中,包括新款MS-終結(jié)者Z790M D5主板,售價(jià)僅1499元。將在10月20日21點(diǎn)隨13代酷睿處...

關(guān)鍵字: 酷睿 ATX 接口 DDR

憑借其全新的功能豐富的移動交易應(yīng)用程序,屢獲殊榮的經(jīng)紀(jì)商HFM讓客戶實(shí)現(xiàn)觸手可及的全方位交易體驗(yàn)。 毛里求斯路易港2022年10月14日 /美通社/ -- 全球多資產(chǎn)經(jīng)紀(jì)商...

關(guān)鍵字: 應(yīng)用程序 FM 移動應(yīng)用 ADI

倫敦2022年10月13日 /美通社/ -- Ubuntu Pro是擴(kuò)展式安全維護(hù)和合規(guī)訂閱服務(wù),目前針對數(shù)據(jù)中心和工作站已推出公開測試Beta版本。Canonical將按照...

關(guān)鍵字: UBUNTU CANONICAL BSP 應(yīng)用程序

加拿大政府9月26日表示,從2022年10月1日起,加拿大將取消所有疫情下的旅行限制,包括對乘坐航班和火車乘客的疫苗接種和口罩要求。所有旅行者(無論國籍)從10月1日開始將不必通過ArriveCAN應(yīng)用程序提交健康信息或...

關(guān)鍵字: ECAN 應(yīng)用程序 飛機(jī) ARRI

SIXT管理委員會批準(zhǔn)整體可持續(xù)發(fā)展計(jì)劃,以進(jìn)一步加快二氧化碳減排和智能新能源出行需求 到2030年, SIXT在歐洲車隊(duì)中的新能源車將達(dá)到70%至90% 投資5000萬歐元:公司將大...

關(guān)鍵字: 可持續(xù)發(fā)展 新能源汽車 應(yīng)用程序 移動平臺

(全球TMT2022年9月22日訊)建筑項(xiàng)目管理軟件領(lǐng)域企業(yè)InEight Inc.宣布了最新的軟件創(chuàng)新,包括范圍、設(shè)計(jì)和資源管理方面的新流程標(biāo)準(zhǔn)化,以及新的進(jìn)展跟蹤功能和創(chuàng)建基準(zhǔn)驗(yàn)證型進(jìn)程預(yù)估和時(shí)間表的能力。該更新還...

關(guān)鍵字: 軟件 進(jìn)程 應(yīng)用程序 模板

InEight專注于軟件創(chuàng)新的標(biāo)準(zhǔn)化和基準(zhǔn)更新,從而提高了效率,增加了項(xiàng)目信心 InEight建筑項(xiàng)目管理平臺的最新發(fā)展引入了新的設(shè)計(jì)管理和基準(zhǔn)實(shí)踐,提高了各個(gè)項(xiàng)目之間的一...

關(guān)鍵字: 軟件 應(yīng)用程序 進(jìn)程 移動應(yīng)用

腦機(jī)接口(Brain Computer Interface,BCI [4] ),指在人或動物大腦與外部設(shè)備之間創(chuàng)建的直接連接,實(shí)現(xiàn)腦與設(shè)備的信息交換。這一概念其實(shí)早已有之,但直到上世紀(jì)九十年代以后,才開始有階段性成果出現(xiàn)...

關(guān)鍵字: 腦機(jī) 接口 設(shè)備

Sumo Logic可靠性管理為企業(yè)領(lǐng)導(dǎo)者提供關(guān)鍵數(shù)據(jù),以平衡創(chuàng)新速度和服務(wù)可靠性

關(guān)鍵字: LOGIC 應(yīng)用程序 PEN COM

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉