新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM LINUX的嵌入式GUI的研究和移植

基于ARM LINUX的嵌入式GUI的研究和移植

作者: 時間:2012-04-23 來源:網絡 收藏

摘要:隨著系統(tǒng)的發(fā)展,用戶對系統(tǒng)的要求越來越高,因此用于實現(xiàn)與用戶交流功能的成為嵌入式中的一個重點。該文首先介紹了什么是嵌入式系統(tǒng)和嵌入式系統(tǒng)中的,并闡述了開發(fā)嵌入式Linux平臺的系統(tǒng)的必要性。然后詳細的介紹了三種常見的嵌入式GUI系統(tǒng)(Microwindows、MiniGUI和QT)的設計結構和使用上的優(yōu)缺點等,并列表進行了比較。最后,描述了每個系統(tǒng)Linux平臺的,包括編譯環(huán)境的建立、編譯選項的配置和修改以及運行時參數(shù)的設置等等。

本文引用地址:http://butianyuan.cn/article/171575.htm

引言

什么是嵌入式系統(tǒng)

嵌入式系統(tǒng)一般指以嵌入式微處理器為核心,有別于PC系統(tǒng),有計算機的部分功能但又不稱之為計算機的設備或器材。它主要是以應用為目的,系統(tǒng)軟硬件于一體,通常要求具有代碼小、響應速度快、可靠性高、低功耗、集成度高等特點。嵌入式系統(tǒng)遍布于各個行業(yè)以及人們的日常生活當中,比如掌上PDA、移動計算設備、電視機頂盒、手機、汽車、數(shù)字相機、家庭自動化系統(tǒng)、安全系統(tǒng)、自動售貨機、工業(yè)自動化儀表與醫(yī)療儀器等。

什么是嵌入式系統(tǒng)中的GUI

隨著后PC時代的到來,嵌入式系統(tǒng)的性能有了大幅度的提高,應用范圍也越來越廣,當初的一些簡單的人機交互接口已經無法滿足人們的要求。而與此同時,在臺式PC機上圖形交互界面早已普及并成熟,于是在嵌入式系統(tǒng)中也逐漸出現(xiàn)了圖形用戶界面(GraphicUserInterface,GUI),特別是在一些消費類產品中。嵌入式系統(tǒng)中的GUI就是在嵌入式系統(tǒng)中為特定的硬件設備或環(huán)境而設計的圖形用戶界面系統(tǒng)。由于受到當前嵌入式系統(tǒng)本身特點的影響,并受其發(fā)展限制,所以嵌入式系統(tǒng)中的GUI應該有如下特點:

占用的存儲空間以及運行時占用資源少;運行速度以及響應速度快;可靠性高;便于和定制。

Linux有開放的源碼、高效穩(wěn)定的內核、良好的開發(fā)環(huán)境以及支持多種硬件平臺等特點,而且由于Linux的可配置性和可模塊化,一個Linux內核經過配置和裁減可以只占用幾百K左右的存儲空間,使其在嵌入式系統(tǒng)中也得到廣泛應用。然而,在嵌入式系統(tǒng)中有嚴格的資源限制,臺式機Linux平臺下成熟的GUI無法直接到嵌入式設備上。因此,嵌入式系統(tǒng)中Linux的GUI愈發(fā)成為開發(fā)基于Linux的嵌入式系統(tǒng)所必須面對的問題。目前,隨著嵌入式行業(yè)分工的細化,出現(xiàn)了專門的公司致力開發(fā)Linux下的GUI并給其它公司提供授權,從而縮短了嵌入式系統(tǒng)的開發(fā)周期。本文就旨在于對這樣的幾種嵌入式GUI進行,列出表1進行比較,并介紹這幾種GUI在基于Linux上的移植。

幾種比較成熟的嵌入式GUI的

Microwindows

Microwindows是由美國CenturySoftware公司開發(fā)的開放源碼的嵌入式GUI項目。它不需要其他圖形系統(tǒng)的支持,可以充分利用Linux提供的FrAMEbuffer機制來進行圖形顯示。同時在底層提供了對多種芯片的支持,并基本上用C語言實現(xiàn),因此移植性很強。國內也有人參與了這個項目的開發(fā),并編寫了GB2312等字符集的支持。

Microwindows是基于分層式設計的,它允許不同的層可以被重新設計以滿足系統(tǒng)實現(xiàn)的需要,目前總共分為三層。最底層是屏幕、鼠標或觸摸屏和鍵盤的驅動程序,用于實現(xiàn)系統(tǒng)的顯示功能以及滿足用戶特有的輸入需求。中間層實現(xiàn)了一個可移植的圖形引擎,以提供對畫線、填充、剪切和著色的支持。在最上層,則提供了多種的API給應用程序設計者。Microwindows支持兩種API:ECMAAPIW(類Win32API)和Nano-XAPIs。這些API對Win32和XWindow系統(tǒng)有很好的兼容性,使程序可以很容易地從其它系統(tǒng)上移植過來。其中比較完備的是Nano-XAPI。Nano-X設計成是一個客戶端/服務器的環(huán)境,在此模式下應用程序與一個客戶端的庫相連,而這個庫則通過一個UNIXsocket與Nano-X服務器相連。每個應用程序都通過UNIXsocket來傳遞各種參數(shù),并由服務端來完成客戶端的各種請求。當為了滿足運行速度以及調試的需求時,還可以通過共享的內存空間來完成傳播數(shù)據。

由于Microwindows為了與XWindow的兼容,它采用了傳統(tǒng)的基于UNIXsocket的客戶端/服務器結構。此是,客戶端的畫圖、窗口建立等操作都是通過套接字與服務器通信。在這種情況下,系統(tǒng)就變得非常依賴于UNIXsocket,而UNIXsocket的傳遞都需要通過內核,這樣在一些對實時性要求比較高的系統(tǒng)里就不太有利。而且Microwindows基本上用C語言實現(xiàn)的,雖然增強了可移植性,但也同樣導致了系統(tǒng)的運行效率不高。同時Microwindows的開發(fā)工具FLNX也還不夠成熟,有待進一步提高。

MiniGUI

MiniGUI是我國國內自主開發(fā)、比較成熟的一個圖形用戶界面系統(tǒng),面向基于Linux的實時嵌入式系統(tǒng),使用現(xiàn)有成熟的圖形引擎(SV2GALib/LibGGI),采用類似WinCE的線程機制(目前MiniGUILite版本改用微客戶端/服務器模式來提供對多進程的支持),集成了多字體和多字符集,支持硬件加速能力,充分使用顯示內存。

從整體來看,MiniGUI也是屬于分層結構設計(見圖1)。在最底層,GAL和IAL提供了Linux控制臺和底層圖形接口的支持以及輸入設備比如鼠標、鍵盤等的驅動,PThread則是提供了內核級線程支持的函數(shù)庫;中間層MiniGUIKernel則包括了窗口系統(tǒng)的各個模塊,MiniGUI本身是運行在多線程模式下,它的各個模塊都是以單獨的線程運行,同時它也利用線程來實現(xiàn)多窗口;最上層,則是提供給各種應用程序使用的API函數(shù)。MiniGUI中利用線程之間的同步操作,實現(xiàn)了客戶線程和服務線程之間的微客戶端/服務器結構,因為它的客戶和服務器是同一進程的兩個不同線程。它的核心實現(xiàn)主要體現(xiàn)在消息隊列數(shù)據結構的使用上。

多線程有其一定的好處,但弱點則在于不同的線程共享了同一個地址空間,因此,客戶線程可能會破壞系統(tǒng)服務器線程的數(shù)據,導致系統(tǒng)健壯性不夠健全。雖然目前的MiniGUILite版本拋棄LinuxThread庫而改用微客戶端/服務器模式提供對多進程的支持,但是仍然存在著對多進程支持弱、圖形功能不完善、窗口剪切不完備等問題。

18.jpg

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

linux相關文章:linux教程



上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉