新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PDA設(shè)備的Linux配置及其編譯

PDA設(shè)備的Linux配置及其編譯

作者:吳升艷,趙新田,胡冰 時間:2003-06-12 來源:電子設(shè)計應(yīng)用 收藏
摘要:本文通過引出在上使用的優(yōu)勢,著重介紹在 iPAQ高端上使用的幾款配置版本,以及安裝配置和編譯的過程。另外,對其圖形用戶界面的實現(xiàn)和文件系統(tǒng)的選擇也進行了論述。

關(guān)鍵詞: ; iPAQ

引言
Linux是一個成熟又通用的操作系統(tǒng),可運行在多種硬件平臺上(如Intel、Power PC、Sparc、Alpha、ARM等)。它有一個小巧高效的內(nèi)核,僅包含系統(tǒng)運行最必需的功能,而將可選的部分設(shè)計成內(nèi)核模塊。系統(tǒng)啟動時,僅加載一個小的內(nèi)核(0.5MB左右),當(dāng)需要某些額外功能時,再臨時將相應(yīng)的功能模塊插入內(nèi)核,不使用時,立刻將其撤出,并釋放占用的資源。它的設(shè)備驅(qū)動程序、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議等均被設(shè)計成了內(nèi)核模塊。
當(dāng)前PDA產(chǎn)品的硬件配置與普通PC機相比有很大的不同。在PDA中只有一些小容量的按塊進行操作的閃存和小的液晶屏,處理器能力也較弱,沒有鍵盤和鼠標(biāo),導(dǎo)致其文件系統(tǒng)和應(yīng)用程序的圖形用戶界面受到了很大限制。因此在PDA上選用小而高效內(nèi)核的Linux作為其操作系統(tǒng)成為發(fā)展趨勢。

圖1 iPAQ中不同配置版本的關(guān)系圖

Linux在PAD上的版本及其配置
在大多數(shù)PDA中使用的是標(biāo)準(zhǔn)的Linux內(nèi)核,本文將以 iPAQ 36XX系列中所采用的Linux版本為例,說明iPAQ中Linux的配置,它是由Compaq Research Laboratories(CRL)開發(fā)的一種高端PDA設(shè)備,采用206MHz的Intel StrongARM RISC處理器和32MB的RAM,還有16MB的非易失性閃存,其顯示屏為320*240的液晶顯示屏,輸入設(shè)備為觸屏和一些按鍵,iPAQ還包括內(nèi)置的揚聲器、耳機和麥克風(fēng)插槽以及USB接口,還可根據(jù)需要購買PCMCIA和CF卡。
IPAQ有五種Linux配置(Debian、HandHelds.org、Familiar、PocketLinux、Microwindows),雖然這些配置版本表面上不同,但是核心都是由CRL的原始版本發(fā)展而來,圖1說明了這些版本之間的關(guān)系。
其中HandHelds.org是在Debian版本上發(fā)展而來,其它三個版本從HandHelds.org上發(fā)展而來。下面對后四個版本進行詳細介紹:
HandHelds.org
HandHelds.org是經(jīng)Debian/GNU修改而得。它的0.21版本中包含有2.4版本的Linux內(nèi)核以及command shell(bash)等用戶指令,同時移植了X11-server(Xfree86)和TWM窗口管理器來實現(xiàn)圖形的顯示,由于使用了Linux的幀緩存,因而可使用Xfebdev(X-server)來描述服務(wù)器。該版本中還含有觸屏的驅(qū)動程序以及一些示例性的軟件,如屏幕校準(zhǔn)和適用于X的虛擬鍵盤,以及MP3播放器和簡單的瀏覽器。
HandHelds.org中的用戶界面是基于TWM窗口管理器的,它不適于小屏幕顯示,它的優(yōu)勢是網(wǎng)絡(luò)功能,該版本中提供了針對于朗訊公司的WLAN卡(Lucent Orinoco 802.11b)的內(nèi)核模塊,可向用戶提供telnet、ftp和網(wǎng)絡(luò)文件系統(tǒng)等功能,同時還包括PCMCIA卡的軟件服務(wù)并支持熱拔插(需驅(qū)動程序),其不足之處在于它里面沒有如記事本、電話簿、日歷等相應(yīng)軟件。從整體上看,HandHelds.org提供的版本比較適合于程序員用來開發(fā)自己在iPAQ上的軟件或是構(gòu)建新版本。
該版本提供GCC工具,還免費向用戶提供帶有共享文件系統(tǒng)的StrongARM組件(由6塊芯片組成)。iPAQ的內(nèi)核開發(fā)是完全公開的,任何人都可從網(wǎng)上下載到升級的內(nèi)核代碼,目前代碼升級集中在電源管理的優(yōu)化和JFFS2(Jounaling Falsh Filesystem)的開發(fā)。

圖2 PocketLinux分層結(jié)構(gòu)圖

圖3 Microwindows層次結(jié)構(gòu)圖

Familiar

Familiar是基于HandHelds的版本,它的內(nèi)核和X-server完全一樣,但是窗口管理器有所不同。Familiar的窗口管理器是為小型設(shè)備所設(shè)計,其中包括Agenda Applications等應(yīng)用程序用來實現(xiàn)記事本、日歷等相應(yīng)功能。Familiar版本中還實現(xiàn)了手寫識別功能,用戶可以在屏幕的任意位置上書寫。此外Familiar還有一個非官方版本可支持JFFS2文件系統(tǒng)。
PocketLinux
PocketLinux是由Transvirtual Technologies開發(fā)的基于HandHelds的版本,它實現(xiàn)了Java的編譯環(huán)境(Kaffe),該版本具有和X-server一樣的內(nèi)核,但用戶界面是基于Kaffe上的Java編譯產(chǎn)生的。PocketLinux的分層結(jié)構(gòu)圖如圖2所示。
PocketLinux中含有基于XML的模塊,可以快速創(chuàng)建UI和在PocketLinux程序之間交換信息。但是XML不太穩(wěn)定,而且速度很慢。
Microwindows
Microwindows是由Century Software開發(fā)的,含有Microwindows GUI環(huán)境和PIM(Personal Information Management)的版本。Century Software在開發(fā)中采用了自己的圖形工具集Microwindows來取代X-server,其目的在于使用更小的內(nèi)存和功耗來實現(xiàn)圖形用戶界面。
MicroWindows采用分層結(jié)構(gòu)設(shè)計方法,允許改變不同的層來適應(yīng)實際應(yīng)用,在底層提供對屏幕、鼠標(biāo)觸摸屏和鍵盤的驅(qū)動,使程序能訪問實際的硬件設(shè)備和其它用戶定制設(shè)備;在中間層有一個可移植圖形引擎,提供繪制線條、區(qū)域填充、繪制多邊形、裁剪和使用顏色模式的方法;在頂層實現(xiàn)多種API以適應(yīng)不同的應(yīng)用環(huán)境。Microwindows可移植性非常好,可用 C 語言實現(xiàn),只有某些關(guān)鍵部分要求用匯編語言以提高執(zhí)行速度,實現(xiàn)了兩個API函數(shù),同時支持Win32和X11,可以方便的移植Windows或Unix/X11中的代碼。目前它使用兩種流行的圖形編程接口:Win32/WinCE圖形顯示接口(GDI)和Xlib-like接口。圖3所示為Microwindows的層次結(jié)構(gòu)圖。
Nano-X組件可以為應(yīng)用程序提供GUI服務(wù),從某種意義上來說,它近似于X-server。Nano-X服務(wù)器大小約為210KB,在iPAQ上運行時需占用1MB的內(nèi)存空間,而HandHelds使用的X-server(Xfbdev)大小約為870KB,運行時需占用3.5MB的RAM,相比之下Nano-X更為高效。但是Microwindows沒有X11結(jié)構(gòu)中的窗口管理器,每個應(yīng)用程序都需要自己來管理窗口。
Microwindows中還實現(xiàn)了有名的射擊游戲-Doom。此外在Microwindows中還包括一個瀏覽器-View-ML,可顯示標(biāo)準(zhǔn)的HTML頁面(3.2版本),但是不能運行Java-applets。

系統(tǒng)安裝
上述各種版本的安裝幾乎一樣。由于iPAQ的閃存中預(yù)裝了微軟的PocketPC,因此在安裝Linux之前要對其保存。首先將iPAQ連接到PC機,然后將PocketPC備份到PC機;第二步把Bootloader裝到閃存的開始頭,Bootloader和x86上的Lilo(Linux Loader)很類似,它可把閃存中的內(nèi)核裝載到RAM中去,解壓后自動跳到內(nèi)核源代碼頭,Bootloader還提供了寫閃存終端,這樣就可以更新內(nèi)核及其配置版本的剩余部分;第三步使用Bootloader加載內(nèi)核,加載后,其配置版本的剩余部分也被加載到閃存中;最后設(shè)置引導(dǎo)參數(shù),整個系統(tǒng)就可被引導(dǎo)來裝載Linux。這里注意,配置版本的源碼是以CRAMFS文件的格式編寫的,該文件系統(tǒng)要被JFFS2所取代。
適于閃存的文件系統(tǒng)
PDA閃存通常使用以下三種文件系統(tǒng):CRAMFS、RAMFS、JFFS2,有時也用EXT2,不過其效果欠佳。
CRAMFS中的數(shù)據(jù)已被壓縮,屬于只讀性文件系統(tǒng),不能在閃存中修改。用戶想獲取數(shù)據(jù)時,CRAMFS先把數(shù)據(jù)送到RAM中,用戶從RAM中讀取。一般CRAMFS的上層為RAMFS文件系統(tǒng),經(jīng)修改過的文件都保存在RAM中。圖4為文件系統(tǒng)的層次結(jié)構(gòu)圖。
RAMFS和CRAMFS結(jié)合的缺陷在于,一旦出現(xiàn)掉電等特殊情況,保存在RAMFS中的修改數(shù)據(jù)將全部丟失。為此Linux采用了新的文件系統(tǒng)-JFFS2,它允許在閃存中直接進行修改,在掉電時會自動保存數(shù)據(jù)。JFFS2的數(shù)據(jù)壓縮方式和CRAMFS一樣,其數(shù)據(jù)可存放在全部的閃存區(qū)域中,數(shù)據(jù)的寫入和刪除分布在很大一片區(qū)域中以防止同樣的塊會被重復(fù)使用。
引導(dǎo)順序
iPAQ的引導(dǎo)順序和普通PC機有所不同。首先在iPAQ電源接通后,BIOS從閃存的某個特定位置載入啟動代碼,將Bootloader存入該區(qū)域并裝載。Bootloader將內(nèi)核裝載到RAM中并解壓,然后跳至內(nèi)核代碼的開頭,內(nèi)核被初始化后將運行名為“l(fā)inuxrc” 的文件,根據(jù)這個文件中的內(nèi)容運行其它初始化程序。

圖4 文件系統(tǒng)層次結(jié)構(gòu)圖

PDA配置版本的編譯
目前臺式機上的Linux版本雖有數(shù)百種,但它們提供標(biāo)準(zhǔn)的Linux內(nèi)核和操作系統(tǒng)的基本功能,不同之處一般表現(xiàn)在系統(tǒng)的安裝、管理和使用上,特別是文檔和用戶支持方面。但各品牌PDA之間卻差異很大,處理器通常采用ARM、MIPS、DragonBall等,處理器周圍還有許多互不兼容的設(shè)備。目前大多數(shù)PDA都是將操作系統(tǒng)存放在ROM中,更新操作系統(tǒng)與更新ROM芯片同步進行,而iPAQ等PDA在閃存中存儲操作系統(tǒng),直接寫入新的操作系統(tǒng)就可更改原系統(tǒng)。
iPAQ主板上的閃存為16MB,在配置版本時一定要考慮其大小不要超過閃存的容量,否則需加插PCMCIA/CF卡擴展內(nèi)存。iPAQ使用的是經(jīng)CRL修改過的Linux 2.4內(nèi)核,大約0.5MB,除內(nèi)核外,還有shell、文件系統(tǒng)、網(wǎng)絡(luò)等程序,這些內(nèi)核模塊經(jīng)靜態(tài)編譯后才可使用,否則需通過程序編譯庫來實現(xiàn)。
圖形用戶界面可有兩種實現(xiàn)方式,一般使用“Xfbdev”X11-server來實現(xiàn),這樣可保證與X環(huán)境下應(yīng)用程序兼容。X-server和窗口管理器組合在一起的缺點是使PDA負擔(dān)太重,因此可選擇Microwindows,缺點是與X不兼容。
從用戶角度,應(yīng)用程序相當(dāng)重要。如果采用X-server實現(xiàn)GUI,F(xiàn)amiliar的Agenda對于PDA應(yīng)用是極佳選擇;如果采用Microwindows實現(xiàn)GUI,則使用Century Software的PIM;此外還可選擇PocketLinux,它構(gòu)建于java之上,適用于java程序的開發(fā)。
對于閃存文件系統(tǒng),CRAMFS如果沒有RAMFS的支持只具有只讀屬性,而JFFS2則可以直接在閃存中讀寫和刪除數(shù)據(jù)。采用JFFS2文件系統(tǒng)時,更新PDA的Linux配置版本是通過程序包管理來實現(xiàn)的;采用CRAMFS文件系統(tǒng)時,更新系統(tǒng)則需要在閃存中重新寫入全部新的CRAMFS文件系統(tǒng),這樣做不僅需要大量時間,而且對于用戶太難實現(xiàn),從長遠角度來看,JFFS2比CRAMFS具有更強的競爭力。

結(jié)語
隨著PDA性能價格比的逐步提高和技術(shù)進步,其可適用范圍越來越廣泛,選擇一種適用它的操作系統(tǒng)極為必要。嵌入式Linux系統(tǒng)是嵌入式系統(tǒng)的寵兒,人們可通過網(wǎng)上免費下載到不同的內(nèi)核版本和升級補丁,同時可免受源代碼知識產(chǎn)權(quán)的困擾,能夠在現(xiàn)有基礎(chǔ)上進行二次開發(fā),伴隨著嵌入式設(shè)備在人們工作和生活中的普及和發(fā)展,選擇嵌入式Linux系統(tǒng)也是一種必然趨勢。

參考文獻
1 Compaq,iPAQ Homepage
2 Flash Memory,Technical Design
3 Greg Haerr,Microwindows Architecture 1999
4 陳莉君.Linux 操作系統(tǒng)內(nèi)核分析.人民郵電出版社
5 胡皓.X Window實物應(yīng)用.人民郵電出版社

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


關(guān)鍵詞: Compaq Linux PDA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉