<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          關(guān)鍵詞: ; iPAQ

          引言
          Linux是一個(gè)成熟又通用的操作系統(tǒng),可運(yùn)行在多種硬件平臺(tái)上(如Intel、Power PC、Sparc、Alpha、ARM等)。它有一個(gè)小巧高效的內(nèi)核,僅包含系統(tǒng)運(yùn)行最必需的功能,而將可選的部分設(shè)計(jì)成內(nèi)核模塊。系統(tǒng)啟動(dòng)時(shí),僅加載一個(gè)小的內(nèi)核(0.5MB左右),當(dāng)需要某些額外功能時(shí),再臨時(shí)將相應(yīng)的功能模塊插入內(nèi)核,不使用時(shí),立刻將其撤出,并釋放占用的資源。它的設(shè)備驅(qū)動(dòng)程序、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議等均被設(shè)計(jì)成了內(nèi)核模塊。
          當(dāng)前PDA產(chǎn)品的硬件配置與普通PC機(jī)相比有很大的不同。在PDA中只有一些小容量的按塊進(jìn)行操作的閃存和小的液晶屏,處理器能力也較弱,沒有鍵盤和鼠標(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)置的揚(yáng)聲器、耳機(jī)和麥克風(fēng)插槽以及USB接口,還可根據(jù)需要購買PCMCIA和CF卡。
          IPAQ有五種Linux配置(Debian、HandHelds.org、Familiar、PocketLinux、Microwindows),雖然這些配置版本表面上不同,但是核心都是由CRL的原始版本發(fā)展而來,圖1說明了這些版本之間的關(guān)系。
          其中HandHelds.org是在Debian版本上發(fā)展而來,其它三個(gè)版本從HandHelds.org上發(fā)展而來。下面對(duì)后四個(gè)版本進(jìn)行詳細(xì)介紹:
          HandHelds.org
          HandHelds.org是經(jīng)Debian/GNU修改而得。它的0.21版本中包含有2.4版本的Linux內(nèi)核以及command shell(bash)等用戶指令,同時(shí)移植了X11-server(Xfree86)和TWM窗口管理器來實(shí)現(xiàn)圖形的顯示,由于使用了Linux的幀緩存,因而可使用Xfebdev(X-server)來描述服務(wù)器。該版本中還含有觸屏的驅(qū)動(dòng)程序以及一些示例性的軟件,如屏幕校準(zhǔn)和適用于X的虛擬鍵盤,以及MP3播放器和簡單的瀏覽器。
          HandHelds.org中的用戶界面是基于TWM窗口管理器的,它不適于小屏幕顯示,它的優(yōu)勢是網(wǎng)絡(luò)功能,該版本中提供了針對(duì)于朗訊公司的WLAN卡(Lucent Orinoco 802.11b)的內(nèi)核模塊,可向用戶提供telnet、ftp和網(wǎng)絡(luò)文件系統(tǒng)等功能,同時(shí)還包括PCMCIA卡的軟件服務(wù)并支持熱拔插(需驅(qū)動(dòng)程序),其不足之處在于它里面沒有如記事本、電話簿、日歷等相應(yīng)軟件。從整體上看,HandHelds.org提供的版本比較適合于程序員用來開發(fā)自己在iPAQ上的軟件或是構(gòu)建新版本。
          該版本提供GCC工具,還免費(fèi)向用戶提供帶有共享文件系統(tǒng)的StrongARM組件(由6塊芯片組成)。iPAQ的內(nèi)核開發(fā)是完全公開的,任何人都可從網(wǎng)上下載到升級(jí)的內(nèi)核代碼,目前代碼升級(jí)集中在電源管理的優(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è)計(jì),其中包括Agenda Applications等應(yīng)用程序用來實(shí)現(xiàn)記事本、日歷等相應(yīng)功能。Familiar版本中還實(shí)現(xiàn)了手寫識(shí)別功能,用戶可以在屏幕的任意位置上書寫。此外Familiar還有一個(gè)非官方版本可支持JFFS2文件系統(tǒng)。
          PocketLinux
          PocketLinux是由Transvirtual Technologies開發(fā)的基于HandHelds的版本,它實(shí)現(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)存和功耗來實(shí)現(xiàn)圖形用戶界面。
          MicroWindows采用分層結(jié)構(gòu)設(shè)計(jì)方法,允許改變不同的層來適應(yīng)實(shí)際應(yīng)用,在底層提供對(duì)屏幕、鼠標(biāo)觸摸屏和鍵盤的驅(qū)動(dòng),使程序能訪問實(shí)際的硬件設(shè)備和其它用戶定制設(shè)備;在中間層有一個(gè)可移植圖形引擎,提供繪制線條、區(qū)域填充、繪制多邊形、裁剪和使用顏色模式的方法;在頂層實(shí)現(xiàn)多種API以適應(yīng)不同的應(yīng)用環(huán)境。Microwindows可移植性非常好,可用 C 語言實(shí)現(xiàn),只有某些關(guān)鍵部分要求用匯編語言以提高執(zhí)行速度,實(shí)現(xiàn)了兩個(gè)API函數(shù),同時(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上運(yùn)行時(shí)需占用1MB的內(nèi)存空間,而HandHelds使用的X-server(Xfbdev)大小約為870KB,運(yùn)行時(shí)需占用3.5MB的RAM,相比之下Nano-X更為高效。但是Microwindows沒有X11結(jié)構(gòu)中的窗口管理器,每個(gè)應(yīng)用程序都需要自己來管理窗口。
          Microwindows中還實(shí)現(xiàn)了有名的射擊游戲-Doom。此外在Microwindows中還包括一個(gè)瀏覽器-View-ML,可顯示標(biāo)準(zhǔn)的HTML頁面(3.2版本),但是不能運(yùn)行Java-applets。

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

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

          PDA配置版本的編譯
          目前臺(tái)式機(jī)上的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芯片同步進(jìn)行,而iPAQ等PDA在閃存中存儲(chǔ)操作系統(tǒng),直接寫入新的操作系統(tǒng)就可更改原系統(tǒng)。
          iPAQ主板上的閃存為16MB,在配置版本時(shí)一定要考慮其大小不要超過閃存的容量,否則需加插PCMCIA/CF卡擴(kuò)展內(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)編譯后才可使用,否則需通過程序編譯庫來實(shí)現(xiàn)。
          圖形用戶界面可有兩種實(shí)現(xiàn)方式,一般使用“Xfbdev”X11-server來實(shí)現(xiàn),這樣可保證與X環(huán)境下應(yīng)用程序兼容。X-server和窗口管理器組合在一起的缺點(diǎn)是使PDA負(fù)擔(dān)太重,因此可選擇Microwindows,缺點(diǎn)是與X不兼容。
          從用戶角度,應(yīng)用程序相當(dāng)重要。如果采用X-server實(shí)現(xiàn)GUI,F(xiàn)amiliar的Agenda對(duì)于PDA應(yīng)用是極佳選擇;如果采用Microwindows實(shí)現(xiàn)GUI,則使用Century Software的PIM;此外還可選擇PocketLinux,它構(gòu)建于java之上,適用于java程序的開發(fā)。
          對(duì)于閃存文件系統(tǒng),CRAMFS如果沒有RAMFS的支持只具有只讀屬性,而JFFS2則可以直接在閃存中讀寫和刪除數(shù)據(jù)。采用JFFS2文件系統(tǒng)時(shí),更新PDA的Linux配置版本是通過程序包管理來實(shí)現(xiàn)的;采用CRAMFS文件系統(tǒng)時(shí),更新系統(tǒng)則需要在閃存中重新寫入全部新的CRAMFS文件系統(tǒng),這樣做不僅需要大量時(shí)間,而且對(duì)于用戶太難實(shí)現(xiàn),從長遠(yuǎn)角度來看,JFFS2比CRAMFS具有更強(qiáng)的競爭力。

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

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

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


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

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();