嵌入式Linux技術(轉)

ba發表於2007-08-12
嵌入式Linux技術(轉)[@more@]作業系統是管理計算機上的資源,為使用者使用計算機及其外部裝置提供最基本介面的程式。

自從計算機誕生以來,隨著計算機、網路技術的快速發展,作業系統一直處於不斷髮展和改進之中,人們將越來越多的功能加入到作業系統中,導致作業系統越來越大。但是,隨著應用領域的擴大,為了適應不同的應用場合,考慮到系統的靈活性、可伸縮性以及可裁減性,一種以應用為中心、以計算機技術為基礎、軟體硬體可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗要求嚴格的專用計算機系統---嵌入式作業系統便隨之延生。

嵌入式Linux是按照上面所說的嵌入式作業系統的要求設計的一種小型作業系統。由一個kernel(核心)及一些根據需要進行定製的系統模組組成。其Kernel很小,一般只有幾百K左右,即使加上其它必要的模組和應用程式,所需的儲存空間也很小,多工多程式的系統特徵,有些還有具有實時性。

一個小型的嵌入式Linux系統只需要下面三個基本元素:

載入程式
Linux微核心(由記憶體管理、程式管理和事務處理構成)
初始化程式
如果要讓它有更多的功能且繼續保持小型化,可以加上:

檔案系統(可以在ROM,RAM,FLASH或Disk Onchip中)
TCP/IP網路支援
儲存更多資料用的磁碟。
提供設計精簡的應用程式。
由於嵌入式Linux作業系統的高度靈活性,開發者可以很容易地對它進行定製或作適當開發,來滿足實際應用需要。

Linux在嵌入式系統中的優勢

嵌入式作業系統主要有 Palm OS,Windows CE,EPOC,LinuxCE,QNX,ECOS,LYNX,高階嵌入式系統要求許多高階的功能,如圖形使用者介面和網路支援 。很多高階RTOS供應商已經提供了這些功能,但其價格也很高階,一般人難以接受。微軟的Windows CE也有此類功能,卻不具備大多數嵌入式系統要求的實時效能,而且難以移植,也曾經有人想以DOS為基礎用單獨的第三方工具拼湊一個系統,但這種努力將是白費。眾所周知,Micro$oft的東西向來都是以昂貴和不穩定出名,而現在需要的是一個便宜、成熟並且提供高階嵌入式系統所必須特性的作業系統,嵌入式Linux作業系統以價格低廉、功能強大又易於移植而正在被廣泛採用,成為新興的力量,所以,眾多商家紛紛轉向了嵌入式linux。

Linux為嵌入作業系統提供了一個極有吸引力的選擇,她是個和Unix相似、以核心為基礎的、完全記憶體保護、多工多程式的作業系統。支援廣泛的計算機硬體,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC,MOTOROLA等現有的大部分蕊片。程式原始碼全部公開,任何人可以修改並在GNU通用公共許可證(GNU General Public License)下發行,這樣,開發人員可以對作業系統進行定製,再也不必擔心像M$ windows作業系統中“後門”的威脅(後門不是我們常說的走後門,是指嵌入到軟體中的一個特殊程式,它有一些不道德的額外功能,例如可以把使用者的資料送到指定的地址)。同時由於有GPL的控制,大家開發的東西大都相互相容,不會走向分裂之路。Linux使用者遇到問題時可以透過Internet向網上成千上萬的Linux開發者請教,這使最困難的問題也有辦法解決。

Linux帶有Unix使用者熟悉的完善的開發工具,幾乎所有的Unix系統的應用軟體都已移植到了Linux上。Linux還提供了強大的網路功能,有多種可選擇視窗管理器(X windows)。其強大的語言編譯器gcc、g++等也可以很容易得到。不但成熟完善、而且使用方便。

嵌入式linux作業系統與硬體裝置的關係

執行嵌入式Linux的CPU可以是 X86,Alpha,Sparc,MIPS,PPC,MOTOROLA,NEC,ARM。與這些蕊片搭配的主機板都很小,與一張PCI卡大小相當,有的甚至更小!

嵌入式linux所需的儲存器不是軟磁碟、硬碟、ZIP盤、CD-ROM、DVD這些眾所周知的常規儲存器,它使用Rom,CompactFlash,M-Systems的DiskOnChip,SONY的MemoryStick,IBM 的MicroDrive等體積極小---與主機板上的Bios大小相近,儲存容量不太大的儲存器。它的“記憶體”可以使用普通的記憶體也可以使用專用的RAM。

PC平臺上通常有鍵盤、滑鼠、顯示卡、顯示器等輸入輸出裝置及各種儲存裝置,有ISA、PCI、AGP、USB等介面。在嵌入式系統中,往往不面要上述裝置和介面的支援,而使用嵌入式系統特有的介面和裝置,如PCMCIA介面、LCD螢幕、觸控式螢幕,DOC(DiskOnChip)等。

在一個簡單的系統裡,當系統啟動後,核心和所有的應用程式都在記憶體裡。這就是大多數傳統的嵌入式系統工作模式,它可以被Linux支援。因此嵌入式系統可以沒有磁碟。許多嵌入式系統沒有磁碟或者檔案系統。Linux不需要它們也能執行。有多種途徑可以消除對磁碟的依賴,這要看系統的複雜性和硬體的設計。

在PC機上都需要Bios ,當CPU啟動的時候,它開始在預先設定的地址上讀取指令,執行了一些低水平的CPU初始化和其它硬體的配置。再由BIOS繼續引導作業系統,由作業系統引導其它應用程式。實際上,這非常複雜,但對我們的目標來說也非常重要。在PC上執行的Linux也要依靠PC上的BIOS來啟動。

與PC機不同的是,嵌入式系統裡經常沒有這種BIOS。這樣你就要提供同等的啟動程式碼,這看起來使系統的引導啟動變得更加複雜。幸好,嵌入式系統並不需要PC 機Bios載入程式那樣大的靈活性,因為嵌入式裝置的硬體配置通常是不變的,嵌入式載入程式只需要處理一種硬體的配置。這使程式碼更簡單也更枯燥。它只是一指令清單,將固定的數字塞到硬體暫存器中去。然而,這是關鍵的程式碼,因為這些數值要與你的硬體相符而且要按照特定的順序進行。所以在大多數情況下,一個最小的通電自檢模組,可以檢查記憶體的正常執行、讓LED閃爍,並且驅動其它必須的硬體以使主Linux OS啟動和執行。這些啟動程式碼完全根據硬體決定,不可隨意改變。

要選擇與嵌入式Linux系統相結合的硬體產品是一個複雜的工作,不但要考慮到硬體的成本,體積,可靠性,還受到其他非技術因素的影響,如政治、偏見、傳統等等。這一工作必須嚴肅對待,因為它也是開發的重點。

嵌入式linux 的技術發展

嵌入式系統的商品化作業系統在70年代後期才出現,許多是用匯編語言寫成的,並且只能用於特定的處理器,更換新處理器,它的作業系統就必須更新以適應新的系統。當C語言出現時,作業系統編寫的效率、穩定性、可移植性都有了很大的提高。這一點在管理上立刻表現出來,它為微處理器被淘汰時保護軟體投資帶來了希望。對於市場來說這是一個好訊息。用C語言寫成的作業系統今天越來越普遍。一般來說,可重複使用的軟體已經佔了主導地位並越做越好。

許多嵌入式系統根本沒有作業系統,只有迴圈控制。對於一些簡單裝置這是足夠的,但是隨著系統越來越複雜,更多嵌入式系統需要與各類網路聯接,因此需要網路功能。增加網路功能將導致系統複雜程度提高以致要求作業系統。

傳統的嵌入式系統是基於微控制器的,而新一代的嵌入式系統將以如下為特點:以IP核模組(Intellectual Property Kernel智慧財產權核模組)為核心,用混合ASIC/CPLD/FPGA生成的矽片直接構成整塊的單片嵌入式產品(SOC)。

隨著嵌入式作業系統的快速發展,應用的範圍不斷擴大,使用者日益增加,一個非常關鍵,必須解決的重大問題出現了。

很久以前, 一般的程式語言,編譯,開發只能支援英文的,不能支援它國語言,比如拿一個只支援英文的瀏覽器去訪問中文的網站,顯示出來的東西將是混亂不可閱讀,嵌入式Linux也同樣不能避免這種問題,它直接影響到系統開發的路線。

為了使Linux支援中文,國人做了許多的努力,基本上解決了中文支援的問題。1999年是中國Linux發展和普及過程中最重要的一年,其中湧現了許多製作中文 Linux釋出版本的公司,加速 Linux的中文化過程並推動Linux在中國的普及。如今這些公司又紛紛轉向了中文嵌入式Linux作業系統的開發,如Turbo,紅旗,還有一些一開始就開發嵌入式Linux公司,如網虎,博利思等,其中,博利思於5月份最先推出其中文嵌入式Linux作業系統。

為了適應更廣的語言和文化習俗,軟體有必要在設計結構和機制上支援多語言的擴充套件特性,這一過程稱為國際化,。越來越多的軟體開發者瞭解到, 如果他們設計的產品一開始就考慮到多語環境的使用, 這些產品將用更少的花費, 更快達到全球市場, 比那些照 "糟糕的老方法" 設計的產品更成功。有了國際化,你不需要一個日文版的 Netscape 去瀏覽日本的網頁. 你能使用英文的, 法文的或者任何版本的Netscape 來瀏覽日本的網頁, 反之亦然,而實現這些的唯一條件只要有適當的字型檔支援。

Linxu的國際中最主要的是X windows 的國際化,早期的X11R4版本中,僅僅含有支援單位元組和雙位元組字型的函式,所以它不能算是國際化的函式庫. 此後,一個叫做"mltalk"的X協會成立並著手研究X視窗系統的國際化問題. 眾多的X視窗系統供應商也 參與了該組織。

按國際化的級別來分,下列幾種情況都屬於國際化:

語言可以切換. 在系統啟動時可以設定某種語言
使用不同語言的軟體可以同時使用,在應用軟體啟動時可以設定某種語言
使用不同語言的軟體可以同時使用,而且應用軟體的語言可以動態切換
使用不同語言的軟體可以同時使用,而且在應用軟體中可以同時使用不同語言
最新的X11R6 解決了X11R4中存在的問題,主要的變化有,

定義了標準的輸入協議、Locale資料格式定義
只採用了一種國際化工具的樣本應用模組 在輸出上,X11R6增加了從由到左的的書寫方式,以支援阿拉伯語和希伯來語等,增加了從上到下的書寫方式,以支援中文和日文等的書寫方向
支援國際化的高層庫 OSF/Motif Qt/kdelib gtk+/gnome-lib Perl Java
支援多語言的典型軟體 瀏覽器 Netscape 編輯器 XEmacs 編輯器 Mule 編輯器 vim 終端 rxvt 排版軟體 LaTeX/lyx PostScript/PDF: gs/acroread 影像處理: gimp 幻燈片製作 mgp 即將完成: StarOffice, Koffice
支援Unicode的軟體 高階圖形庫函式 Qt 2.x Java 語言開發工具 JDK 編輯器 yudit 專用的支援Unicode的 X 終端 基於GTK+的文字處理器 Gscript
因為對國際化的研究開始不久,所以mltalk (X國際化協會)提出的了 一個基本問題: 什麼是X視窗系統的國際化? 對它的解釋也各不相同。 實際上,即使是現在,人們對國際化的定義仍然存在分歧,分歧的焦點主要集中於對軟體或系統怎樣程度的國際化才算是真正的國際化。但不管怎樣,國際化的問題已經有了巨大的進展,這必將促進嵌入式Linux的不斷成長,成熟。

在Linux日益流行的同時,嵌入式Linux也漸漸得到許多程式設計師的關注。由於其用途之廣達到了前所未有的地步:從移動計算平臺、 資訊家電(機頂盒,數字電視)、媒體手機、到工業、商業控制(智慧工控裝置,POS/ATM機)、 電子商務平臺、甚至軍事應用!由此可見,嵌入式Linux的吸引力是巨大的。 同時嵌入式板的生產商得來了越來越多的引起全世界注意的標準,許多廠商都注意到了嵌入式Linux的適用性之廣,有不少公司正在開發嵌入式Linux,想信不久,嵌入式Linux在嵌入式板的生產商中將大受歡迎。

在國外,發展成熟並且已經商品化的嵌入式作業系統可供選擇的有VxWorks, pSOS, Neculeus、QNX、LYNX和Windows CE。目前,國內只有博利思,網虎,Turbo這有數的幾家公司推出了嵌入式Linux作業系統,但相信不久,中國的嵌入式Linux產品將會如雨後春筍般出現!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-949853/,如需轉載,請註明出處,否則將追究法律責任。

相關文章