新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 嵌入式設備上的 Linux 系統(tǒng)開發(fā)(三)

嵌入式設備上的 Linux 系統(tǒng)開發(fā)(三)

——
作者: 時間:2006-03-25 來源: 收藏
圖形用戶界面(GUI)選項 
從用戶的觀點來看,圖形用戶界面(GUI)是系統(tǒng)的一個最至關重要的方面:用戶通過 GUI 與系統(tǒng)進行交互。所以 GUI 應該易于使用并且非常可靠。但它還需要是有內存意識的,以便在內存受限的、微型嵌入式設備上可以無縫執(zhí)行。所以,它應該是輕量級的,并且能夠快速裝入。 

另一個要考慮的重要方面涉及許可證問題。一些 GUI 分發(fā)版具有允許免費使用的許可證,甚至在一些商業(yè)產品中也是如此。另一些許可證要求如果想將 GUI 合并入項目中則要支付版稅。 

最后,大多數開發(fā)人員可能會選擇 XFree86,因為 XFree86 為他們提供了一個能使用他們喜歡的工具的熟悉環(huán)境。但是市場上較新的 GUI,象 Century Software 的 Microwindows(Nano-X)和 Trolltech 的 QT/Embedded,與 X 在嵌入式 Linux 的競技舞臺中展開了激烈競爭,這主要是因為它們占用很少的資源、執(zhí)行的速度很快并且具有定制窗口構件的支持。 

讓我們看一看這些選項中的每一個。 

Xfree86 4.X(帶幀緩沖區(qū)支持的 X11R6.4) 
XFree86 Project, Inc. 是一家生產 XFree86 的公司,該產品是一個可以免費重復分發(fā)、開放源碼的 X Window 系統(tǒng)。X Window 系統(tǒng)(X11)為應用程序以圖形方式進行顯示提供了資源,并且它是 UNIX 和類 UNIX 的機器上最常用的窗口系統(tǒng)。它很小但很有效,它運行在為數眾多的硬件上,它對網絡透明并且有良好的文檔說明。X11 為窗口管理、事件處理、同步和客戶機間通信提供強大的功能 — 并且大多數開發(fā)人員已經熟悉了它的 API。它具有對內核幀緩沖區(qū)的內置支持,并占用非常少的資源 — 這非常有助于內存相對較少的設備。X 服務器支持 VGA 和非 VGA 圖形卡,它對顏色深度 1、2、4、8、16 和 32 提供支持,并對渲染提供內置支持。最新的發(fā)行版是 XFree86 4.1.0。 

它的優(yōu)點包括: 

幀緩沖區(qū)體系結構的使用提高了性能。 
占用的資源相對很小 — 大小在 600 K 到 700 K 字節(jié)的范圍內,這使它很容易在小型設備上運行。 
非常好的支持:在線有許多文檔可用,還有許多專用于 XFree86 開發(fā)的郵遞列表。 
X API 非常適合擴展。 



它的缺點包括: 

比最近出現(xiàn)的嵌入式 GUI 工具性能差。 
此外,當與 GUI 中最新的開發(fā) — 象專門為嵌入式環(huán)境設計的 Nano-X 或 QT/Embedded — 相比時,XFree86 似乎需要更多的內存。 



Microwindows 
Microwindows 是 Century Software 的開放源代碼項目,設計用于帶小型顯示單元的微型設備。它有許多針對現(xiàn)代圖形視窗環(huán)境的功能部件。象 X 一樣,有多種平臺支持 Microwindows。 

Microwindows 體系結構是基于客戶機/服務器的并且具有分層設計。最底層是屏幕和輸入設備驅動程序(關于鍵盤或鼠標)來與實際硬件交互。在中間層,可移植的圖形引擎提供對線的繪制、區(qū)域的填充、多邊形、裁剪以及顏色模型的支持。 

在最上層,Microwindows 支持兩種 API:Win32/WinCE API 實現(xiàn),稱為 Microwindows;另一種 API 與 GDK 非常相似,它稱為 Nano-X。Nano-X 用在 Linux 上。它是象 X 的 API,用于占用資源少的應用程序。 

Microwindows 支持 1、2、4 和 8 bpp(每像素的位數)的 palletized 顯示,以及 8、16、24 和 32 bpp 的真彩色顯示。Microwindows 還支持使它速度更快的幀緩沖區(qū)。Nano-X 服務器占用的資源大約在 100 K 到 150 K 字節(jié)。 

原始 Nano-X 應用程序的平均大小在 30 K 到 60 K。由于 Nano-X 是為有內存限制的低端設備設計的,所以它不象 X 那樣支持很多函數,因此它實際上不能作為微型 X(Xfree86 4.1)的替代品。 

可以在 Microwindows 上運行 FLNX,它是針對 Nano-X 而不是 X 進行修改的 FLTK(快速輕巧工具箱(Fast Light Toolkit))應用程序開發(fā)環(huán)境的一個版本。本文中描述 FLTK。 

Nano-X 的優(yōu)點包括: 

與 Xlib 實現(xiàn)不同,Nano-X 仍在每個客戶機上同步運行,這意味著一旦發(fā)送了客戶機請求包,服務器在為另一個客戶機提供服務之前一直等待,直到整個包都到達為止。這使服務器代碼非常簡單,而運行的速度仍非??臁?nbsp;
占用很小的資源 



Nano-X 的缺點包括: 

聯(lián)網功能部件至今沒有經過適當地調整(特別是網絡透明性)。 
還沒有太多現(xiàn)成的應用程序可用。 
與 X 相比,Nano-X 雖然近來正在加速開發(fā),但仍沒有那么多文檔說明而且沒有很好的支持,但這種情形會有所改變。 



Microwindows 上的 FLTK API 
FLTK 是一個簡單但靈活的 GUI 工具箱,它在 Linux 世界中贏得越來越多的關注,它特別適用于占用資源很少的環(huán)境。它提供了您期望從 GUI 工具箱中獲得的大多數窗口構件,如按鈕、對話框、文本框以及出色的“賦值器”選擇(用于輸入數值的窗口構件)。還包括滑動器、滾動條、刻度盤和其它一些構件。 

針對 Microwindows GUI 引擎的 FLTK 的 Linux 版本被稱為 FLNX。FLNX 由兩個組件構成:Fl_Widget 和 FLUID。Fl_Widget 由所有基本窗口構件 API 組成。FLUID(快速輕巧的用戶界面設計器(Fast Light User Interface Designer, FLUID))是用來產生 FLTK 源代碼的圖形編輯器??偟膩碚f,F(xiàn)LNX 是能用來為嵌入式環(huán)境創(chuàng)建應用程序的一個出色的 UI 構建器。 

Fl_Widget 占用的資源大約是 40 K 到 48 K,而 FLUID(包括了每個窗口構件)大約占用 380 K。這些非常小的資源占用率使 Fl_Widget 和 FLUID 在嵌入式開發(fā)世界中非常受歡迎。 

優(yōu)點包括: 

習慣于在象 Windows 這樣已建立得較好的環(huán)境中開發(fā)基于 GUI 的應用程序的任何人都會非常容易地適應 FLTK 環(huán)境。 
它的文檔包括一本十分完整且編寫良好的手冊。 
它使用 LGPL 進行分發(fā),所以開發(fā)人員可以靈活地發(fā)放他們應用程序的許可證。 
FLTK 是一個 C++ 庫(Perl 和 Python 綁定也可用)。面向對象模型的選擇是一個好的選擇,因為大多數現(xiàn)代 GUI 環(huán)境都是面向對象的;這也使將編寫的應用程序移植到類似的 API 中變得更容易。 
Century Software 的環(huán)境提供了幾個有用的工具,諸如 ScreenToP 和 ViewML 瀏覽器。 



它的缺點是: 

普通的 FLTK 可以與 X 和 Windows API 一同工作,而 FLNX 不能。它與 X 的不兼容性阻礙了它在許多項目中的使用。 



Qt/Embedded 
Qt/Embedded 是 Trolltech 新開發(fā)的用于嵌入式 Linux 的圖形用戶界面系統(tǒng)。Trolltech 最初創(chuàng)建 Qt 作為跨平臺的開發(fā)工具用于 Linux 臺式機。它支持各種有 UNIX 特點的系統(tǒng)以及 Microsoft Windows。KDE — 最流行的 Linux 桌面環(huán)境之一,就是用 Qt 編寫的。 

Qt/Embedded 以原始 Qt 為基礎,并做了許多出色的調整以適用于嵌入式環(huán)境。Qt Embedded 通過 Qt API 與 Linux I/O 設施直接交互。那些熟悉并已適應了面向對象編程的人員將發(fā)現(xiàn)它是一個理想環(huán)境。而且,面向對象的體系結構使代碼結構化、可重用并且運行快速。與其它 GUI 相比,Qt GUI 非???,并且它沒有分層,這使得 Qt/Embedded 成為用于運行基于 Qt 的程序的最緊湊環(huán)境。 

Trolltech 還推出了 Qt 掌上機環(huán)境(Qt Palmtop Environment,俗稱 Qpe)。Qpe 提供了一個基本桌面窗口,并且該環(huán)境為開發(fā)提供了一個易于使用的界面。Qpe 包含全套的個人信息管理(Personal Information Management (PIM))應用程序、因特網客戶機、實用程序等等。然而,為了將 Qt/Embedded 或 Qpe 集成到一個產品中,需要從 Trolltech 獲得商業(yè)許可證。(原始 Qt 自版本 2.2 以后就可以根據 GPL 獲得 。) 

它的優(yōu)點包括: 

面向對象的體系結構有助于更快地執(zhí)行 
占用很少的資源,大約 800 K 
抗鋸齒文本和混合視頻的象素映射 



它的缺點是: 

Qt/Embedded 和 Qpe 只能在獲得商業(yè)許可證的情況下才能使用。 



結束語 
嵌入式 Linux 開發(fā)正迅速地發(fā)展著。您必須學習并從引導裝載程序和分發(fā)版到文件系統(tǒng)和 GUI 中的每一個事物的各種選項中作出選擇。但是要感謝有這種選擇自由度以及非?;钴S的 Linux 社區(qū),Linux 上的嵌入式開發(fā)已經達到了新的境界,并且調整模塊以適合您的規(guī)范從未比現(xiàn)在更簡單。這已經導致出現(xiàn)了許多時新的手持和微型設備作為開放盒,這是件好事 — 因為事實是您不必成為一個專家從這些模塊中進行選擇來調整您的設備以滿足您自己的要求和需要。 

我們希望這篇對嵌入式 Linux 領域的介紹性概述能激起您進行試驗的欲望,并且希望您將體會擺弄微型設備的樂趣以滿足您的愛好。為進一步有助于您的項目,請參閱下面的“參考資料”,鏈接到有關我們這里已經概述的技術的更深入的信息。 

參考資料 

引導: 

如需獲得對 vmlinux 和 zimage 之間區(qū)別的極好解釋,請在 Alessandro Rubini 編寫的“Kernel Configuration: dealing with the unexpected(Linux Magazine)的一文中找到“Booting your kernel”一節(jié)。 


有關內核、映像和引導過程的更多信息,請閱讀中央昆士蘭大學(Central Queensland University)的系統(tǒng)管理文本的第 13 章。 


要進一步了解引導過程的工作原理,請參閱 ROLO: A Developer’s Guide,它討論了在不利用 BIOS 的情況下引導 Linux(Embedded Linux Works,2001 年 6 月)。 
小型分發(fā)版: 

The Embedded Linux Distributions Quick Reference Guide 涵蓋了許多商業(yè)的和開放源碼的分發(fā)版(Linux Devices,2001 年 8 月)。 


請查看另一個詳盡的分發(fā)版和有用的工具的清單(Linux-embedded.com)。 


工具鏈: 

Wiki 工具鏈頁面包含到本文提到的所有三個工具鏈的鏈接,還有對它們的評論。 


設備驅動程序: 

Memory Technology Device (MTD) Subsystem for Linux 的目的是簡化內存設備(特別是閃存設備)的驅動程序的創(chuàng)建。 


Vipin Malik 編寫的 The Linux MTD, JFFS HOWTO 將幫助您使 MTD 和 JFFS2 一起工作。 


Linux for PowerPC Embedded Systems HOWTO 有一個很好的設備驅動程序清單。 


理解 Linux device drivers 有助于理解本篇介紹性文章(Penguin Magazine)。 


要精通 Linux 設備驅動程序,請閱讀 O’Reilly 的 Linux Device Drivers,第 2 版一書。 


有用的工具: 

請查看 LART 上的 Jflash-linux。 


Binutils、GCC 和 Glibc 都可從 Free Software Foundation 下載獲得。 


許多有用的下載都可從 Netwinder.org 獲得,這是一個致力于 NetWinder 平臺上開發(fā)工作的志愿者站點。 


請在 Mark Nielsen 寫得非常棒的 How to use a Ramdisk for Linux 一文中閱讀有關 Ramdisk 的所有信息。 


FLNX 是以 FLTK(快速輕巧的工具箱)為基礎的。 


文件系統(tǒng): 

第二版擴展文件系統(tǒng) Ext2fs 的主頁在 SourceForge。 


Red Hat 英國公司的 David Woodhouse 概述了大量有關 JFFS2:日志閃存文件系統(tǒng),第 2 版的背景知識。 


Vipin Malik 的 JFFS - A practical guide 一文也詳細討論了 JFFS,包括垃圾收集的問題(Embedded Linux Works,2001 年 5 月)。 


您可以在 Linux HeadQuarters 閱讀更多有關 tmpfs 的信息。 


Cliff Brake 和 Jeff Sutherland 編寫的 Flash Filesystems for Embedded Linux Systems 一文論述了用于閃存設備的更多文件系統(tǒng)(Embedded Linux Journal)。 


GUI: 

Xfree86 是 X 開發(fā)的主頁。 


在 Microwindows 站點上可以找到有關 Microwindows 和 Nano-X 的信息。 


請查看一篇對 Microwindows 的一些缺點(GNOME gtk 開發(fā)人員的郵遞列表)的討論(時間比較長了)。 


您將在 Microwindows Project Links 上找到豐富的 Microwindows/Nano-X 鏈接。 


在 Trolltech 上查找有關 Qt/Embedded 的更多信息。 


The Embedded Linux GUI/Windowing Quick Reference Guide 中有豐富的鏈接(Linux Devices,2002 年 2 月)。 

一般參考資料: 

General Public License 或 GPL 確保用戶復制、分發(fā)和修改軟件的權利。 


ARM Linux 是您了解有關 Linux 用于 ARM 處理器的信息的一個非常好的站點。它由 ARM 的創(chuàng)建者 Russell King 來維護。 


Penguinppc.org 是關于 Linux 用于 PowerPC 系列處理器的的主頁。該站點上有一個關于為基于 PPC 的體系結構建立工具鏈的資料豐富的教程。 


Linux Devices 是一個非常全面的站點,它包含有關 Linux 和嵌入式開發(fā)的出版發(fā)行、快速參考、新聞和特色報告等各種信息。 


Silicon Penguin 列表站點上擁有嵌入式 Linux 參考資料的詳盡集合。 


ARMLinux - the book 可從 Aleph One 上獲得。您可以定購一本,也可以在線閱讀。 


嵌入式 Linux 協(xié)會(Embedded Linux Consortium)是一個非贏利的互助協(xié)會,它歡迎致力于嵌入式 Linux 領域的開發(fā)人員成為會員。 


訪問 IBM 關于嵌入式 Linux 的主頁,獲得新聞、產品和開發(fā)人員參考資料。 


IBM 的 Linux wristwatch 是運行 Linux 的微型嵌入式設備的示例;本文的作者之一,Vishal Kulkarni 也參與了它的研發(fā)。請在 IBM’s Linux Watch: The Challenge of Miniaturization(PDF 格式),或本文(FreeOS.com,2001 年 3 月)中閱讀有關它的信息。 


在 developerWorks 上瀏覽更多 Linux 參考資料。 


在 developerWorks 上瀏覽更多無線領域的參考資料。 


關鍵詞:

評論


相關推薦

技術專區(qū)

關閉