sp;仍在每個(gè)客戶機(jī)上同步運(yùn)行,這意味著一旦發(fā)送了客戶機(jī)請(qǐng)求包,服務(wù)器在為另一個(gè)客戶機(jī)提供服務(wù)之前一直等待,直到整個(gè)包都到達(dá)為止。這使服務(wù)器代碼非常簡(jiǎn)單,而運(yùn)行的速度仍非常快。
占用很小的資源
Nano-X 的缺點(diǎn)包括:
聯(lián)網(wǎng)功能部件至今沒有經(jīng)過適當(dāng)?shù)卣{(diào)整(特別是網(wǎng)絡(luò)透明性)。
還沒有太多現(xiàn)成的應(yīng)用程序可用。
與 X 相比,Nano-X 雖然近來正在加速開發(fā),但仍沒有那么多文檔說明而且沒有很好的支持,但這種情形會(huì)有所改變。
Microwindows 上的 FLTK API
FLTK 是一個(gè)簡(jiǎn)單但靈活的 GUI 工具箱,它在 Linux 世界中贏得越來越多的關(guān)注,它特別適用于占用資源很少的環(huán)境。它提供了您期望從 GUI 工具箱中獲得的大多數(shù)窗口構(gòu)件,如按鈕、對(duì)話框、文本框以及出色的“賦值器”選擇(用于輸入數(shù)值的窗口構(gòu)件)。還包括滑動(dòng)器、滾動(dòng)條、刻度盤和其它一些構(gòu)件。
針對(duì) Microwindows GUI 引擎的 FLTK 的 Linux 版本被稱為 FLNX。FLNX 由兩個(gè)組件構(gòu)成:Fl_Widget 和 FLUID。Fl_Widget 由所有基本窗口構(gòu)件 API 組成。FLUID(快速輕巧的用戶界面設(shè)計(jì)器(Fast Light User Interface Designer, FLUID))是用來產(chǎn)生 FLTK 源代碼的圖形編輯器?偟膩碚f,FLNX 是能用來為嵌入式環(huán)境創(chuàng)建應(yīng)用程序的一個(gè)出色的 UI 構(gòu)建器。
Fl_Widget 占用的資源大約是 40 K 到 48 K,而 FLUID(包括了每個(gè)窗口構(gòu)件)大約占用 380 K。這些非常小的資源占用率使 Fl_Widget 和 FLUID 在嵌入式開發(fā)世界中非常受歡迎。
優(yōu)點(diǎn)包括:
習(xí)慣于在象 Windows 這樣已建立得較好的環(huán)境中開發(fā)基于 GUI 的應(yīng)用程序的任何人都會(huì)非常容易地適應(yīng) FLTK 環(huán)境。
它的文檔包括一本十分完整且編寫良好的手冊(cè)。
它使用 LGPL 進(jìn)行分發(fā),所以開發(fā)人員可以靈活地發(fā)放他們應(yīng)用程序的許可證。
FLTK 是一個(gè) C++ 庫(Perl 和 Python 綁定也可用)。面向?qū)ο竽P偷倪x擇是一個(gè)好的選擇,因?yàn)榇蠖鄶?shù)現(xiàn)代 GUI 環(huán)境都是面向?qū)ο蟮?這也使將編寫的應(yīng)用程序移植到類似的 API 中變得更容易。
Century Software 的環(huán)境提供了幾個(gè)有用的工具,諸如 ScreenToP 和 ViewML 瀏覽器。
它的缺點(diǎn)是:
普通的 FLTK 可以與 X 和 Windows API 一同工作,而 FLNX 不能。它與 X 的不兼容性阻礙了它在許多項(xiàng)目中的使用。
Qt/Embedded
Qt/Embedded 是 Trolltech 新開發(fā)的用于嵌入式 Linux 的圖形用戶界面系統(tǒng)。Trolltech 最初創(chuàng)建 Qt 作為跨平臺(tái)的開發(fā)工具用于 Linux 臺(tái)式機(jī)。它支持各種有 UNIX 特點(diǎn)的系統(tǒng)以及 Microsoft Windows。KDE — 最流行的 Linux 桌面環(huán)境之一,就是用 Qt 編寫的。
Qt/Embedded 以原始 Qt 為基礎(chǔ),并做了許多出色的調(diào)整以適用于嵌入式環(huán)境。Qt Embedded 通過 Qt API 與 Linux I/O 設(shè)施直接交互。那些熟悉并已適應(yīng)了面向?qū)ο缶幊痰娜藛T將發(fā)現(xiàn)它是一個(gè)理想環(huán)境。而且,面向?qū)ο蟮捏w系結(jié)構(gòu)使代碼結(jié)構(gòu)化、可重用并且運(yùn)行快速。與其它 GUI 相比,Qt GUI 非常快,并且它沒有分層,這使得 Qt/Embedded 成為用于運(yùn)行基于 Qt 的程序的最緊湊環(huán)境。
Trolltech 還推出了 Qt 掌上機(jī)環(huán)境(Qt Palmtop Environment,俗稱 Qpe)。Qpe 提供了一個(gè)基本桌面窗口,并且該環(huán)境為開發(fā)提供了一個(gè)易于使用的界面。Qpe 包含全套的個(gè)人信息管理(Personal Information Management (PIM))應(yīng)用程序、因特網(wǎng)客戶機(jī)、實(shí)用程序等等。然而,為了將 Qt/Embedded 或 Qpe 集成到一個(gè)產(chǎn)品中,需要從 Trolltech 獲得商業(yè)許可證。(原始 Qt 自版本 2.2 以后就可以根據(jù) GPL 獲得 。)
它的優(yōu)點(diǎn)包括:
面向?qū)ο蟮捏w系結(jié)構(gòu)有助于更快地執(zhí)行
占用很少的資源,大約 800 K
抗鋸齒文本和混合視頻的象素映射
它的缺點(diǎn)是:
Qt/Embedded 和 Qpe 只能在獲得商業(yè)許可證的情況下才能使用。
結(jié)束語
嵌入式 Linux 開發(fā)正迅速地發(fā)展著。您必須學(xué)習(xí)并從引導(dǎo)裝載程序和分發(fā)版到文件系統(tǒng)和 GUI 中的每一個(gè)事物的各種選項(xiàng)中作出選擇。但是要感謝有這種選擇自由度以及非;钴S的 Linux 社區(qū),Linux 上的嵌入式開發(fā)已經(jīng)達(dá)到了新的境界,并且調(diào)整模塊以適合您的規(guī)范從未比現(xiàn)在更簡(jiǎn)單。這已經(jīng)導(dǎo)致出現(xiàn)了許多時(shí)新的手持和微型設(shè)備作為開放盒,這是件好事 — 因?yàn)槭聦?shí)是您不必成為一個(gè)專家從這些模塊中進(jìn)行選擇來調(diào)整您的設(shè)備以滿足您自己的要求和需要。
我們希望這篇對(duì)嵌入式 Linux 領(lǐng)域的介紹性概述能激起您進(jìn)行試驗(yàn)的欲望,并且希望您將體會(huì)擺弄微型設(shè)備的樂趣以滿足您的愛好。為進(jìn)一步有助于您的項(xiàng)目,請(qǐng)參閱下面的“參考資料”,鏈接到有關(guān)我們這里已經(jīng)概述的技術(shù)的更深入的信息。
參考資料
引導(dǎo):
如需獲得對(duì) vmlinux 和 zimage 之間區(qū)別的極好解釋,請(qǐng)?jiān)?nbsp;Alessandro Rubini 編寫的“Kernel Configuration: dealing with the unexpected(Linux Magazine)的一文中找到“Booting your kernel”一節(jié)。
有關(guān)內(nèi)核、映像和引導(dǎo)過程的更多信息,請(qǐng)閱讀中央昆士蘭大學(xué)(Central Queensland University)的系統(tǒng)管理文本的第 13 章。
要進(jìn)一步了解引導(dǎo)過程的工作原理,請(qǐng)參閱 ROLO: A Developer’s Guide,它討論了在不利用 BIOS 的情況下引導(dǎo) Linux(Embedded Linux Works,2001 年 6 月)。
小型分發(fā)版:
The Embedded Linux Distributions Quick Reference Guide 涵蓋了許多商業(yè)的和開放源碼的分發(fā)版(Linux Devices,2001 年 8 月)。
請(qǐng)查看另一個(gè)詳盡的分發(fā)版和有用的工具的清單(Linux-embedded.com)。
工具鏈:
Wiki 工具鏈頁面包含到本文提到的所有三個(gè)工具鏈的鏈接,還有對(duì)它們的評(píng)論。
設(shè)備驅(qū)動(dòng)程序:
Memory Technology Device (MTD) Subsystem for Linux 的目的是簡(jiǎn)化內(nèi)存設(shè)備(特別是閃存設(shè)備)的驅(qū)動(dòng)程序的創(chuàng)建。
Vipin Malik 編寫的 The Linux MTD, JFFS HOWTO 將幫助您使 MTD 和 JFFS2 一起工作。
Linux for PowerPC Embedded Systems HOWTO 有一個(gè)很好的設(shè)備驅(qū)動(dòng)程序清單。
理解 Linux device drivers 有助于理解本篇介紹性文章(Penguin Magazine)。
要精通 Linux 設(shè)備驅(qū)動(dòng)程序,請(qǐng)閱讀 O’Reilly 的 Linux Device Drivers,第 2 版一書。
有用的工具:
請(qǐng)查看 LART 上的 Jflash-linux。
Binutils、GCC 和 Glibc 都可從 Free Software Foundation 下載獲得。
許多有用的下載都可從 Netwinder.org 獲得,這是一個(gè)致力于 NetWinder 平臺(tái)上開發(fā)工作的志愿者站點(diǎn)。
請(qǐng)?jiān)?nbsp;Mark Nielsen 寫得非常棒的 How to use a Ramdisk for Linux 一文中閱讀有關(guān) Ramdisk 的所有信息。
FLNX 是以 FLTK(快速輕巧的工具箱)為基礎(chǔ)的。
文件系統(tǒng):
第二版擴(kuò)展文件系統(tǒng) Ext2fs 的主頁在 SourceForge。
Red Hat 英國(guó)公司的 David Woodhouse 概述了大量有關(guān) JFFS2:日志閃存文件系統(tǒng),第 2 版的背景知識(shí)。
Vipin Malik 的 JFFS - A practical guide 一文也詳細(xì)討論了 JFFS,包括垃圾收集的問題(Embedded Linux Works,2001 年 5 月)。
您可以在 Linux HeadQuarters 閱讀更多有關(guān) tmpfs 的信息。
Cliff Brake 和 Jeff Sutherland 編寫的 Flash Filesystems for Embedded Linux Systems 一文論述了用于閃存設(shè)備的更多文件系統(tǒng)(Embedded Linux Journal)。
GUI:
Xfree86 是 X 開發(fā)的主頁。
在 Microwindows 站點(diǎn)上可以找到有關(guān) Microwindows 和 Nano-X 的信息。
請(qǐng)查看一篇對(duì) Microwindows 的一些缺點(diǎn)(GNOME gtk 開發(fā)人員的郵遞列表)的討論(時(shí)間比較長(zhǎng)了)。
您將在 Microwindows Project Links 上找到豐富的 Microwindows/Nano-X 鏈接。
在 Trolltech 上查找有關(guān) Qt/Embedded 的更多信息。
The Embedded Linux GUI/Windowing Quick Reference Guide 中有豐富的鏈接(Linux Devices,2002 年 2 月)。
一般參考資料:
General Public License 或 GPL 確保用戶復(fù)制、分發(fā)和修改軟件的權(quán)利。
ARM Linux 是您了解有關(guān) Linux 用于 ARM 處理器的信息的一個(gè)非常好的站點(diǎn)。它由 ARM 的創(chuàng)建者 Russell King 來維護(hù)。
Penguinppc.org 是關(guān)于 Linux 用于 PowerPC 系列處理器的的主頁。該站點(diǎn)上有一個(gè)關(guān)于為基于 PPC 的體系結(jié)構(gòu)建立工具鏈的資料豐富的教程。
Linux Devices 是一個(gè)非常全面的站點(diǎn),它包含有關(guān) Linux 和嵌入式開發(fā)的出版發(fā)行、快速參考、新聞和特色報(bào)告等各種信息。
Silicon Penguin 列表站點(diǎn)上擁有嵌入式 Linux 參考資料的詳盡集合。
ARMLinux - the book 可從 Aleph One 上獲得。您可以定購一本,也可以在線閱讀。
嵌入式 Linux 協(xié)會(huì)(Embedded Linux Consortium)是一個(gè)非贏利的互助協(xié)會(huì),它歡迎致力于嵌入式 Linux 領(lǐng)域的開發(fā)人員成為會(huì)員。
訪問 IBM 關(guān)于嵌入式 Linux 的主頁,獲得新聞、產(chǎn)品和開發(fā)人員參考資料。
IBM 的 Linux wristwatch 是運(yùn)行 Linux 的微型嵌入式設(shè)備的示例;本文的作者之一,Vishal Kulkarni 也參與了它的研發(fā)。請(qǐng)?jiān)?nbsp;IBM’s Linux Watch: The Challenge of Miniaturization(PDF 格式),或本文(FreeOS.com,2001 年 3 月)中閱讀有關(guān)它的信息。
在 developerWorks 上瀏覽更多 Linux 參考資料。
在 developerWorks 上瀏覽更多無線領(lǐng)域的參考資料。





