歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

面向實時嵌入式系統的圖形界面支持系統

  嵌入式 Linux 系統的 GUI 發展概況    1.1 GUI 在嵌入式或實時系統中的地位    在常見的 PDA 等小型手持式設備上,由於硬件條件等的限制,我們看到的用戶界面都非常簡單,幾乎看不到我們在 PC 機看到的華麗美觀的 GUI 支持。但最近出現的 Palm 等手持式電腦或者在 Windows CE 等面向嵌入式系統的操作系統上,我們已經看到了完整的圖形用戶界面支持。隨著手持式設備的硬件條件的提高,我們估計嵌入式系統對輕量級 GUI 的需求會越來越迫切。    近來的市場需求顯示,越來越多的嵌入式系統,包括 PDA、機頂盒、DVD/VCD 播放機、WAP 手機等等系統均要求提供全功能的 Web 浏覽器。這包括 Html 4.0 的支持、javascript 的支持,甚至包括 Java 虛擬機的支持。而這一切均要求有一個高性能、高可靠的 GUI 的支持。    另外一個迫切需要輕量級 GUI 的系統是工業實時控制系統。這些系統一般建立在標准 PC 平台上,硬件條件相對嵌入式系統要好,但對實時性的要求非常高,並且比起嵌入式系統來說,對 GUI 的要求也更高。這些系統一般不希望建立在龐大累贅的、非常消耗系統資源的操作系統和 GUI 之上,比如 Windows 或 X Window。目前許多這類系統都建立在 DOS 等系統上,並且采用比較簡單的手法實現 GUI。但是,在出現 Linux 系統之後,尤其在 RT-Linux 系統出現之後,許多工業控制系統開始采用 RT-Linux 作為操作系統,但 GUI 仍然是一個問題。關鍵是 X Window 太過龐大和臃腫。這樣,這些系統對輕型 GUI 的需求更加突出。    但是,我們必須清楚的是,嵌入式系統往往是一種定制設備,它們對 GUI 的需求也各不相同。舉個簡單的例子,有的系統只要求一些圖形功能,而有些系統要求完備的 GUI 支持。因此,GUI 也必須是可定制的。    綜上所述,GUI 在嵌入式系統或者實時系統中的地位將越來越重要,這些系統對 GUI 的基本要求包括:  1.輕型、占用資源少。  2.高性能。  3.高可靠性。  4.可配置。    1.2 目前實時嵌入式系統 GUI 的實現方法    盡管實時嵌入式系統對 GUI 的需求越來越明顯,但目前 GUI 的實現方法各有不同:    1.某些大型廠商有能力自己開發滿足自身需要的 GUI 系統。  2.某些廠商沒有將 GUI 作為一個軟件層從應用程序中剝離,GUI 的支持邏輯由應用程序自己負責。  3.采用某些比較成熟的 GUI 系統,比如 MiniGUI 或者其他 GUI 系統。    在上述手段中,第 2 種方法是一種臨時解決方案。利用這種手段編寫的程序,無法將顯示邏輯和數據處理邏輯劃分開來,從而導致程序結構不好,不便於調試,並導致大量的代碼重復。我們認為 GUI 是一種類似於操作系統的基礎軟件,這種軟件系統應該遵循一定的標准,並且應該是開放源碼的自由軟件,從而可以讓開放商集中精力開發自己的應用程序。目前看來,在 Linux 之上進行(實時)嵌入式系統開發的廠商,一般選擇如下幾種 GUI 系統:緊縮的 X Window 系統、MiniGUI、MicroWindows、OpenGUI、QT/Embedded 等,下面首先對這些系統進行簡單介紹,並對它們的優缺點進行比較。    1.2.1 緊縮的 X Window 系統    眾所周知,X Window 是 Linux 以及其他類 UNIX 系統的標准 GUI。X Window 系統采用標准的客戶/服務器體系結構,具有可擴展性好、可移植性好等優點。但該系統的龐大、累贅和低效率也是大家所共知的。為了獲得應用程序的可移植性,許多廠家都試圖通過對 X Window 系統的緊縮開發,使之能夠在嵌入式系統上運行。國外已經開發出了大小約為 800K 的 X 服務器。這對西方國家來說基本能夠滿足嵌入式系統的需求了。但該系統的源代碼尚不開放,從而很難進行本地化開發。    1.2.2 MicroWindows    MicroWindows 是一個開放源碼的項目,目前由美國一家公司在主持開發。該項目的開發非常活躍,國內也有人參與了其中的開發,並編寫了 GB2312 等字符集的支持。該項目的主要特色在於提供了比較完善的圖形功能,包括一些高級的功能,比如 Alpha 混合,三維支持,TrueType 字體支持等。但作為一個窗口系統,該項目提供的窗口處理功能還需要進一步完善,比如控件或構件的實現還很不完備,鍵盤和鼠標等的驅動還很不完善。值得一提的是,該項目的許多控件是從 MiniGUI 中移植過去的,掃雷游戲也是從 MiniGUI 中移植過去的。    該項目已經啟動了一個開放源碼的浏覽器項目,該浏覽器在 KDE kfm 提供的 HTML 解釋器的基礎上開發,目前能夠解釋一些簡單的 HTML 頁面。    1.2.3 OpenGUI    OpenGUI 在 Linux 系統上存在已經很長時間了。最初的名字叫 FastGL,只支持 256 的線性顯存模式。但目前也支持其他顯示模式。這個庫是用 C++ 編寫的,只提供 C++ 接口。    1.2.4 Qt/ Embedded    QT/Embedded 是著名的 QT 庫開放商正在進行的面向嵌入式系統的 QT 版本。這個版本的主要特點是可移植性較好,許多基於 QT 的 X Window 程序可以非常方便地移植到嵌入式版本。但是該系統不是開放源碼的,如果你要使用這個庫,可能需要支付昂貴的授權費用。目前,已經有了 QT/Embedded 的演示版,預計明年初將出現 QT/Embedded 的正式發行版。    1.3 MiniGUI 簡介    MiniGUI 是一種面向嵌入式系統或者實時系統的圖形用戶界面支持系統。它主要運行於 Linux 控制台,實際可以運行在任何一種具有 POSIX 線程支持的 POSIX 兼容系統上。MiniGUI 同時也是國內最早出現的幾個自由軟件項目之一。    MiniGUI 的主要特色有:    遵循 LGPL 條款的純自由軟件。  提供了完備的多窗口機制。這包括:  多個單獨線程中運行的多窗口。  單個線程中主窗口的附屬。  對話框和預定義的控件類(按鈕、單行和多行編輯框、列表框、進度條、工具欄等)。  消息傳遞機制。  多字符集和多字體支持,目前支持 ISO8859-1、GB2312、Big5 等字符集,並且支持各種光柵字體和 TrueType、Type 1 等矢量字體。  全拼、五筆等漢字輸入法支持。  BMP、GIF、JPEG、PCX、TGA 等常見圖像文件的支持。  Windows 的資源文件支持,如位圖、圖標、光標等。  插入符、定時器、加速鍵等。  其他(Beep、ETC/INI 文件操作等)。  小巧。包含全部功能的庫文件大小為 300 K左右。  可配置。可根據項目需求進行定制配置和編譯。  高穩定性和高性能。MiniGUI 已經在Linux 發行版安裝程序、CNC 系統、藍點嵌入式系統等關鍵應用程序中得到了實際的應用。  可移植性好。目前,MiniGUI 可以在 X Window 和 Linux 控制台上運行。中科院 EEOS 開發組已經成功地將 MiniGUI 移植到了他們的 POSIX 兼容系統上。藍點軟件(北京)研發中心也已經成功地將 MiniGUI 移植到了兩款基於 StrongARM 的嵌入式系統上。    1.4 各種面向實時嵌入式系統的 GUI 之比較    比較上述幾個面向嵌入式系統的 GUI,我們認為目前比較成熟,同時得到最多開發人員認可的有緊縮的 X Window 系統、MiniGUI、MicroWindows 等系統。盡管緊縮的 X Window 系統其 X 服務器可以降低到 800K 的大小,但因為 X Window 系統的運行還需要其他程序和庫的支持,包括 X 窗口管理器、XLib、建立在 XLib 之上的 GTK 和 QT 等函數庫,因此,緊縮的X Window 系統在運行期間所占用的系統資源很多,加上中文顯示和中文輸入等本地化代碼之後,系統的整體尺寸和運行時的資源消耗將進一步變大。因此,嵌入式系統的開發商往往將緊縮的 X Window 系統定位在機頂盒等對資源要求並不苛刻的嵌入式系統上。    MiniGUI 和 MicroWindows 均為自由軟件,只是前者遵循 LGPL 條款,後者遵循 MPL 條款。這兩個系統的技術路線也有所不同。MiniGUI 的策略是首先建立在比較成熟的圖形引擎之上,比如 SVGALib 和 LibGGI,開發的重點在於窗口系統、圖形接口之上;MicroWindows 目前的開發重點則在底層的圖形引擎之上,窗口系統和圖形接口方面的功能還比較欠缺。舉個例子來說,MiniGUI 有一套用來支持多字符集和多編碼的函數接口,可以支持各種常見的字符集,包括 GB、BIG5、UNICODE 等,而 MicroWindows 在多字符集的支持上尚沒有統一接口。    MiniGUI 的重要特色    2.1 設計目標:小巧和可配置    MiniGUI 最初是為了滿足一個工業控制系統(計算機數控系統)的需求而設計和開發的。這個工業控制系統是清華大學為一台數控機床設計的計算機數控系統(CNC)。在比較 DOS、Windows 98、Windows NT、Linux 等系統之後,該項目組決定選擇 RT-Linux 作為實時操作系統,以便滿足 2ms 甚至更高的實時性。但是圖形用戶界面是一個問題,因為 X Window 不適合於實時控制系統,並且當時 X Window 系統的本地化也不盡人意。因此,決定自己開發一套圖形用戶界面支持系統。這就是 MiniGUI 產生的背景。顯然,MiniGUI 一開始就針對實時系統而設計,因此,在設計之初就考慮到了小巧、高性能和高效率。目前,這個數控系統的開發已近尾聲,MiniGUI 在其中擔當了非常重要的角色。    在考慮到其他不同於數控系統的嵌入式系統時,為了滿足千變萬化的需求,必須要求 GUI 系統是可配置的。在 CNC 系統中得到成功應用之後,我們立即著手於 MiniGUI 可配置的設計。我們通過 Linux 下的 automake 和 autoconf 接口,實現了大量的編譯配置選項,通過這些選項可指定 MiniGUI 庫中包括哪些功能而同時不包括哪些功能。    因此,MiniGUI 是一個非常適合於工業控制實時系統以及嵌入式系統的可定制的、小巧的圖形用戶界面支持系統。




Copyright © Linux教程網 All Rights Reserved