<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

PDA設備的Linux配置及其編譯

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

關(guān)鍵詞: ;; iPAQ

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

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

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

圖2 PocketLinux分層結構圖

圖3 Microwindows層次結構圖

Familiar

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

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

圖4 文件系統層次結構圖

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

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

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

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


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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>