linux嵌入式系統(tǒng)與硬件平臺_第1頁
linux嵌入式系統(tǒng)與硬件平臺_第2頁
linux嵌入式系統(tǒng)與硬件平臺_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、linux嵌入式系統(tǒng)與硬件平臺王錚、劉渝萍完整的電器設(shè)備一般要包括軟件和硬件兩大部分。本文試圖從linux軟件系統(tǒng)、硬件平臺以及開發(fā)流程來探討linux嵌入式系統(tǒng)與硬件平臺的關(guān)系。一、linux嵌入式系統(tǒng)操作系統(tǒng)是一種在計算機上運行的軟件,它的主要任務(wù)是管理計算機上的系統(tǒng)資源,為用戶提供使用計算機及其外部設(shè)備的接口。它存在的目的是為了管理所有硬件資源,并且為應(yīng)用軟件提供一個合適的操作環(huán)境。嵌入式系統(tǒng)由于硬件的先天限制,經(jīng)常只具有極稀少的硬件資源,如頻率較低的cpu、較少的內(nèi)存、常不具有磁盤而用小容量的diskonchip或diskonmodule。在使用電池的系統(tǒng)中,它還要實現(xiàn)節(jié)省電池消耗、延

2、長電池使用時間的功能。linux 作為嵌入式操作系統(tǒng)是完全可行的,因為linux提供了完全嵌入功能的基本內(nèi)核及所有用戶界面。linux可以說是一個能提供從內(nèi)存管理到網(wǎng)絡(luò)服務(wù)等各種功能的連續(xù)統(tǒng)一體。linux作為嵌入式系統(tǒng),是一個帶有很多優(yōu)勢的新成員。它對許多cpu和硬件平臺都是易移植的、穩(wěn)定的和易于開發(fā)的。嵌入式linux系統(tǒng)需要三個基本元素:引導(dǎo)工具;linux微內(nèi)核、內(nèi)存管理、 程序管理;初始化進程。如果要它成為完整的操作系統(tǒng)且繼續(xù)保持小型化,還得加上硬件驅(qū)動程序、硬件接口程序、應(yīng)用程序組。談操作系統(tǒng)就一定要說一說它的開發(fā)環(huán)境。linux是基于gnu的c編譯器,作為gnu工具鏈的一部分,與

3、gdb源調(diào)試器一起工作。它提供了開發(fā)嵌入式linux系統(tǒng)的所有軟件工具。以下是一個典型開發(fā)工具的使用流程:1. 寫入或植入引導(dǎo)程序;2. 向串口打印字符串的編碼;3. 將gdb目標碼移植工作串口,這可與另一臺運行g(shù)db程序的linux主機系統(tǒng)對話;4.利用gdb讓硬件和軟件初始化碼在linux內(nèi)核啟動時工作;5. linux內(nèi)核啟動,串口成為linux控制口并可用于后續(xù)開發(fā);6.如果在你的目標硬件上運行了完整的linux內(nèi)核,你可以調(diào)試你的應(yīng)用進程。更詳細的內(nèi)容可參見網(wǎng)站。二、硬件平臺研發(fā)人員在選擇最好的硬件時,往往由于缺乏完整或精確的信息,而使之成為復(fù)雜且困難的工作。硬件成本經(jīng)常是關(guān)鍵的議題

4、。當考慮成本時,我們需要考慮產(chǎn)品的整個成本,而不僅是cpu的成本。因為好的cpu一旦加上總線邏輯和延時電路,并使之與外設(shè)一起工作,那么這個硬件系統(tǒng)可能會變成非常昂貴的產(chǎn)品。如果你正在尋找嵌入式軟件系統(tǒng),那么應(yīng)首先確定硬件平臺,即確定微處理器cpu的型號?,F(xiàn)在比較流行的硬件平臺有intel公司的strong arm 系列、motorola公司的dragonball系列、nec公司的vr系列、hitachi公司sh3、sh4系列等等,它們都可選為硬件平臺。在選定前先要確定所做系統(tǒng)的應(yīng)用功能和所需速度,并且制定好外接設(shè)備和接口標準。這樣可準確地定位所需要的硬件方案,得到性價比最高的系統(tǒng)。圖1是以in

5、tel公司的strongarm為例來說明硬件平臺。 圖1 intel公司sa1110微處理器結(jié)構(gòu)示意圖三、linux嵌入式系統(tǒng)與硬件的關(guān)系我們可以將內(nèi)核與任務(wù)分開來講解linux嵌入式系統(tǒng)在硬件上的工作流程。標準的linux內(nèi)核通常駐留在內(nèi)存中,每一個應(yīng)用程序都是從磁盤傳輸?shù)絻?nèi)存上執(zhí)行。當程序結(jié)束后,它所占用的內(nèi)存就被釋放,程序也就被下載了。在一個嵌入式系統(tǒng)里,可能沒有磁盤。有兩種途徑可以消除對磁盤的依賴,這要看系統(tǒng)的復(fù)雜性和硬件的設(shè)計。在一個簡單的系統(tǒng)里,當系統(tǒng)啟動后,內(nèi)核和所有的應(yīng)用程序都在內(nèi)存里。這就是大多數(shù)傳統(tǒng)嵌入式系統(tǒng)的工作模式。它同樣可以被linux支持。有了linux,就有了第二

6、種可能性。因為linux已經(jīng)有能力“加載”和“卸載”程序。一個嵌入式系統(tǒng)就可以利用它來節(jié)省內(nèi)存。假設(shè)我們已構(gòu)造一個系統(tǒng),它包括一個大概8mb到16mb flash memory和8mb內(nèi)存。在這里,flash memory就可以作為一個文件系統(tǒng)。flash memory驅(qū)動程序用來連接flash memory和文件系統(tǒng)。作為替代,也可使用flash disk,用工具軟件可把flash memory仿真為磁盤。有一個例子就是intel 公司可提供flash memory 管理軟件ipsm -intel persistent storage manager, 詳情見 flbldr/swb/swb.

7、htm。所有的程序都以文件形式存儲在flash文件中,需要時可以裝入內(nèi)存。這種動態(tài)的、“根據(jù)需要加載”的能力是支持其它一系列功能的重要特征:1.它使初始化代碼在系統(tǒng)引導(dǎo)后被釋放。linux同樣有很多內(nèi)核外運行的公用程序。這些公用程序在初始化時運行一次,以后就不再運行。而且,這些公用程序可以用它們相互共有的方式,一個接一個,按順序運行。這樣,相同內(nèi)存空間可以被反復(fù)使用以“調(diào)入”每一個程序,就像系統(tǒng)引導(dǎo)一樣。這的確可以節(jié)省內(nèi)存,特別是在那些配置一次以后就不再更改的網(wǎng)絡(luò)堆棧中。如果linux可加載模塊的功能包括在內(nèi)核里,驅(qū)動程序和應(yīng)用程序就都可以被加載。它可以檢查硬件環(huán)境并且為硬件裝上相應(yīng)的軟件。這

8、就消除了用一個程序占用許多flash memory來處理多種硬件的復(fù)雜性。2.軟件的升級更模塊化。你可以在系統(tǒng)運行的時候,在flash上升級應(yīng)用程序和可加載驅(qū)動程序。3.配置信息和運行時間參數(shù)可以作為數(shù)據(jù)文件儲存在flash上。 虛擬內(nèi)存標準linux的另一個特征是虛擬內(nèi)存的能力。正是這種神奇的特征使應(yīng)用程序員可以狂熱地編寫代碼而不計后果,不管程序有多大。在嵌入式系統(tǒng)里不需要這種強大的功能。實際上,因為它會帶來無法控制的時間因素,所以每人會希望它在實時的系統(tǒng)里存在。這個軟件必須設(shè)計得更加精悍,以適合硬件平臺上的物理內(nèi)存,就像其它嵌入式系統(tǒng)一樣。注意:由于cpu的原因,通常在linux中保存虛擬

9、內(nèi)存代碼是明智的。因為將它清除很費事,而且還有另外一個原因它支持共享文本,這樣就可以使許多程序共享一個軟件。虛擬內(nèi)存的調(diào)入功能可以被關(guān)掉,只要將交換空間的大小設(shè)置為零。如果你寫的程序比實際的內(nèi)存大,系統(tǒng)就會用盡交換空間來執(zhí)行你的程序,那么這個程序?qū)⒉粫\行,或者malloc將會失靈。在許多cpu上,虛擬內(nèi)存提供的內(nèi)存管理可以將不同程序分開,防止它們寫到其它地址的空間上。這在嵌入式系統(tǒng)上通常是不可能的,因為它只支持一個簡單、扁平的地址空間。linux的這種功能有助于其發(fā)展。它減少了胡亂地編寫程序造成系統(tǒng)崩潰的可能性。許多嵌入式系統(tǒng)基于效率方面的原因,有意識使用程序間可以共享的“全局”數(shù)據(jù)。這也可

10、以通過linux共享內(nèi)存功能來支持,但共享的只是指定的內(nèi)存部分。文件系統(tǒng)許多嵌入式系統(tǒng)沒有磁盤或者文件系統(tǒng)。linux不需要它們也能運行。實際上,許多商業(yè)性嵌入式系統(tǒng)提供文件系統(tǒng)作為選項。linux提供ms-dos-compatible文件系統(tǒng),同時還有其它多種選擇。之所以提供其它選擇是因為它們更加強大而且具有容錯功能。linux還具有檢查和維護的功能,商業(yè)性供應(yīng)商往往不提供這些。這對于flash系統(tǒng)來說尤其重要,因為它是通過網(wǎng)絡(luò)更新的。如果系統(tǒng)在升級過程中失去了能力,那它就沒有用了。維護的功能通??梢越鉀Q這類問題。文件系統(tǒng)可以被放在傳統(tǒng)的磁盤驅(qū)動器、flash memory或其它這類的介質(zhì)上

11、。而且,用于暫時保存文件,一個小ram盤就足夠了。flash memories被分割成塊,這些塊中也許包括一個含有當cpu啟動時最初運行的軟件的引導(dǎo)模塊。這其中也可能包括linux 引導(dǎo)代碼。剩余的flash可以用作文件系統(tǒng)。linux的內(nèi)核可以通過引導(dǎo)代碼從flash復(fù)制到ram,或者還有一個選擇,內(nèi)核可以被存儲在flash的一個獨立部分,并且直接從那里執(zhí)行。另外,對于一些系統(tǒng)來說,還有一個有趣的選擇,那就是將一個便宜的cd-rom包含在內(nèi)。這比flash memory 便宜,而且通過交換cd-rom支持簡單的升級。有了這個,linux 只要從 cd-rom上引導(dǎo),類似從硬盤上一樣從cd-r

12、om上獲得所有的程序。最后,對于聯(lián)網(wǎng)的嵌入式系統(tǒng)來說,linux 支持nfs(network file system)。這為實現(xiàn)聯(lián)網(wǎng)系統(tǒng)的許多增值功能打開了大門。它允許通過網(wǎng)絡(luò)加載應(yīng)用程序。這是控制軟件修改的基礎(chǔ)。它在運行的時候也可以用來輸入或輸出大量的數(shù)據(jù)、配置和狀態(tài)信息。這對用戶監(jiān)督和控制來說是一個非常強大的功能。舉例來說,嵌入式系統(tǒng)可以建立一個小的ram磁盤,包含的文件中有與當前狀態(tài)信息同步的內(nèi)容。其它系統(tǒng)可以簡單地把這個ram磁盤設(shè)置為基于網(wǎng)絡(luò)的遠程磁盤,并且空中存取狀態(tài)文件。這就允許另一個機器上的web服務(wù)器通過簡單的cgi script存取狀態(tài)信息。在其它電腦上運行的其它應(yīng)用程序包

13、可以很容易地存取數(shù)據(jù)。引導(dǎo)-lilo和bios在哪里當一個微處理器第一次啟動的時候,它開始在預(yù)先設(shè)置的地址上執(zhí)行指令。通常在那里有一些只讀內(nèi)存,包括初始化或引導(dǎo)代碼。類似于在pc上的bios。它執(zhí)行了一些低水平的cpu初始化和其它硬件的配置文件。bios繼續(xù)辨認哪個磁盤里有操作系統(tǒng),把操作系統(tǒng)復(fù)制到ram并且轉(zhuǎn)向它。實際上,這非常復(fù)雜,但對我們的目標來說也非常重要。在pc上運行的linux依靠pc的bios來提供這些配置和os加載功能。在一個嵌入式系統(tǒng)里經(jīng)常沒有這種bios。這樣你就要提供同等的啟動代碼。嵌入式系統(tǒng)并不需要像pc機上的 bios引導(dǎo)程序那樣的靈活性,因為它通常只需要處理一個硬件

14、的配置。它只是個指令清單,將固定的數(shù)字塞到硬件寄存器中去。然而,這是關(guān)鍵的代碼,因為這些數(shù)值要與你的硬件相符而且要按照特定的順序進行。這些啟動代碼完全根據(jù)硬件決定,不可隨意移動。但是,在少數(shù)情況下,啟動代碼需要重新編寫。為了測試這些代碼,你可以使用一個包含“模擬內(nèi)存”的電路內(nèi)置模擬器,它可以代替目標內(nèi)存。你把代碼裝到模擬器上并通過模擬器調(diào)試。如果這樣不行,你可以跳過這一步,但這樣就要一個更長的調(diào)試周期。這個代碼最終要在較為穩(wěn)定的內(nèi)存上運行,通常是flash或eprom芯片。你需要使用一些方法將代碼放在芯片上。怎么做,要根據(jù)“目標”硬件和工具來定。一種流行的方法是把flash或eprom芯片插入

15、eprom或flash燒制器。這將把你的程序“燒”(存)入芯片。然后,把芯片插入你的目標板的插座,打開電源。這個方法需要板上配有插座,但有些設(shè)備是不能配插座的。另一個方法是通過一個jtag界面。一些芯片有jtag界面可以用來對芯片進行編程,這是最方便的方法。穩(wěn)定性對大多數(shù)微處理器來說,linux非常好。移植到新微處理器家族的linux內(nèi)核運行起來與原來的微處理器一樣穩(wěn)定。它經(jīng)常被移植到一個或多個特定的主板上。許多代碼是與處理器的特性不相關(guān)的,所以移植集中在處理器的差異上,其中大多數(shù)是在內(nèi)存管理和中斷控制領(lǐng)域。一旦成功移植,它們就非常穩(wěn)定。引導(dǎo)策略廣泛依賴于硬件要求,而且你必須有計劃地做一些定制

16、的工作。設(shè)備驅(qū)動程序更加混亂:有些穩(wěn)定有些不穩(wěn)定,而且選擇很有限。一旦你離開了通用的pc平臺,你需要自己編寫。有幸的是,周圍有許多驅(qū)動程序,你可以找到一個與你的需求相近的驅(qū)動程序修改一下。許多類似的驅(qū)動程序都非常相近,所以把磁盤、網(wǎng)絡(luò)或一系列的端口驅(qū)動程序從一個設(shè)備移植到另一個設(shè)備上通常并不難。你可能發(fā)現(xiàn)許多驅(qū)動程序都寫得很好、很容易理解,但你還是要準備一本關(guān)于內(nèi)核結(jié)構(gòu)的書在手頭??傊?,這些操作系統(tǒng)和linux的問題在于對工作過程微小之處的誤解,而不在于代碼的難度或基本的設(shè)計錯誤。任何操作系統(tǒng)都有很多爭論不休的故事,這里不需要重復(fù)。linux的優(yōu)勢在于源代碼是公開、注釋清晰和文檔齊全。這樣,你就可以控制和處理所出現(xiàn)的任何問題。四、如何發(fā)展嵌入式linux操作系統(tǒng)嵌入式linux的確有它的缺陷。比如,雖然它并不比某些

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論