久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

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

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

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

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

本文引用地址:http://www.cqxgywz.com/article/171575.htm

引言

什么是嵌入式系統

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

什么是嵌入式系統中的GUI

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

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

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

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

Microwindows

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

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

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

MiniGUI

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

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

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

18.jpg

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

linux相關文章:linux教程



上一頁 1 2 3 下一頁

評論


相關推薦

技術專區

關閉