![linux嵌入式系統(tǒng)與硬件平臺(tái)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/41ec9497-d882-4bf8-8139-870c9ce46543/41ec9497-d882-4bf8-8139-870c9ce465431.gif)
![linux嵌入式系統(tǒng)與硬件平臺(tái)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/41ec9497-d882-4bf8-8139-870c9ce46543/41ec9497-d882-4bf8-8139-870c9ce465432.gif)
![linux嵌入式系統(tǒng)與硬件平臺(tái)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/41ec9497-d882-4bf8-8139-870c9ce46543/41ec9497-d882-4bf8-8139-870c9ce465433.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、linux嵌入式系統(tǒng)與硬件平臺(tái)王錚、劉渝萍完整的電器設(shè)備一般要包括軟件和硬件兩大部分。本文試圖從linux軟件系統(tǒng)、硬件平臺(tái)以及開發(fā)流程來探討linux嵌入式系統(tǒng)與硬件平臺(tái)的關(guān)系。一、linux嵌入式系統(tǒng)操作系統(tǒng)是一種在計(jì)算機(jī)上運(yùn)行的軟件,它的主要任務(wù)是管理計(jì)算機(jī)上的系統(tǒng)資源,為用戶提供使用計(jì)算機(jī)及其外部設(shè)備的接口。它存在的目的是為了管理所有硬件資源,并且為應(yīng)用軟件提供一個(gè)合適的操作環(huán)境。嵌入式系統(tǒng)由于硬件的先天限制,經(jīng)常只具有極稀少的硬件資源,如頻率較低的cpu、較少的內(nèi)存、常不具有磁盤而用小容量的diskonchip或diskonmodule。在使用電池的系統(tǒng)中,它還要實(shí)現(xiàn)節(jié)省電池消耗、延
2、長電池使用時(shí)間的功能。linux 作為嵌入式操作系統(tǒng)是完全可行的,因?yàn)閘inux提供了完全嵌入功能的基本內(nèi)核及所有用戶界面。linux可以說是一個(gè)能提供從內(nèi)存管理到網(wǎng)絡(luò)服務(wù)等各種功能的連續(xù)統(tǒng)一體。linux作為嵌入式系統(tǒng),是一個(gè)帶有很多優(yōu)勢(shì)的新成員。它對(duì)許多cpu和硬件平臺(tái)都是易移植的、穩(wěn)定的和易于開發(fā)的。嵌入式linux系統(tǒng)需要三個(gè)基本元素:引導(dǎo)工具;linux微內(nèi)核、內(nèi)存管理、 程序管理;初始化進(jìn)程。如果要它成為完整的操作系統(tǒng)且繼續(xù)保持小型化,還得加上硬件驅(qū)動(dòng)程序、硬件接口程序、應(yīng)用程序組。談操作系統(tǒng)就一定要說一說它的開發(fā)環(huán)境。linux是基于gnu的c編譯器,作為gnu工具鏈的一部分,與
3、gdb源調(diào)試器一起工作。它提供了開發(fā)嵌入式linux系統(tǒng)的所有軟件工具。以下是一個(gè)典型開發(fā)工具的使用流程:1. 寫入或植入引導(dǎo)程序;2. 向串口打印字符串的編碼;3. 將gdb目標(biāo)碼移植工作串口,這可與另一臺(tái)運(yùn)行g(shù)db程序的linux主機(jī)系統(tǒng)對(duì)話;4.利用gdb讓硬件和軟件初始化碼在linux內(nèi)核啟動(dòng)時(shí)工作;5. linux內(nèi)核啟動(dòng),串口成為linux控制口并可用于后續(xù)開發(fā);6.如果在你的目標(biāo)硬件上運(yùn)行了完整的linux內(nèi)核,你可以調(diào)試你的應(yīng)用進(jìn)程。更詳細(xì)的內(nèi)容可參見網(wǎng)站。二、硬件平臺(tái)研發(fā)人員在選擇最好的硬件時(shí),往往由于缺乏完整或精確的信息,而使之成為復(fù)雜且困難的工作。硬件成本經(jīng)常是關(guān)鍵的議題
4、。當(dāng)考慮成本時(shí),我們需要考慮產(chǎn)品的整個(gè)成本,而不僅是cpu的成本。因?yàn)楹玫腸pu一旦加上總線邏輯和延時(shí)電路,并使之與外設(shè)一起工作,那么這個(gè)硬件系統(tǒng)可能會(huì)變成非常昂貴的產(chǎn)品。如果你正在尋找嵌入式軟件系統(tǒng),那么應(yīng)首先確定硬件平臺(tái),即確定微處理器cpu的型號(hào)?,F(xiàn)在比較流行的硬件平臺(tái)有intel公司的strong arm 系列、motorola公司的dragonball系列、nec公司的vr系列、hitachi公司sh3、sh4系列等等,它們都可選為硬件平臺(tái)。在選定前先要確定所做系統(tǒng)的應(yīng)用功能和所需速度,并且制定好外接設(shè)備和接口標(biāo)準(zhǔn)。這樣可準(zhǔn)確地定位所需要的硬件方案,得到性價(jià)比最高的系統(tǒng)。圖1是以in
5、tel公司的strongarm為例來說明硬件平臺(tái)。 圖1 intel公司sa1110微處理器結(jié)構(gòu)示意圖三、linux嵌入式系統(tǒng)與硬件的關(guān)系我們可以將內(nèi)核與任務(wù)分開來講解linux嵌入式系統(tǒng)在硬件上的工作流程。標(biāo)準(zhǔn)的linux內(nèi)核通常駐留在內(nèi)存中,每一個(gè)應(yīng)用程序都是從磁盤傳輸?shù)絻?nèi)存上執(zhí)行。當(dāng)程序結(jié)束后,它所占用的內(nèi)存就被釋放,程序也就被下載了。在一個(gè)嵌入式系統(tǒng)里,可能沒有磁盤。有兩種途徑可以消除對(duì)磁盤的依賴,這要看系統(tǒng)的復(fù)雜性和硬件的設(shè)計(jì)。在一個(gè)簡單的系統(tǒng)里,當(dāng)系統(tǒng)啟動(dòng)后,內(nèi)核和所有的應(yīng)用程序都在內(nèi)存里。這就是大多數(shù)傳統(tǒng)嵌入式系統(tǒng)的工作模式。它同樣可以被linux支持。有了linux,就有了第二
6、種可能性。因?yàn)閘inux已經(jīng)有能力“加載”和“卸載”程序。一個(gè)嵌入式系統(tǒng)就可以利用它來節(jié)省內(nèi)存。假設(shè)我們已構(gòu)造一個(gè)系統(tǒng),它包括一個(gè)大概8mb到16mb flash memory和8mb內(nèi)存。在這里,flash memory就可以作為一個(gè)文件系統(tǒng)。flash memory驅(qū)動(dòng)程序用來連接flash memory和文件系統(tǒng)。作為替代,也可使用flash disk,用工具軟件可把flash memory仿真為磁盤。有一個(gè)例子就是intel 公司可提供flash memory 管理軟件ipsm -intel persistent storage manager, 詳情見 flbldr/swb/swb.
7、htm。所有的程序都以文件形式存儲(chǔ)在flash文件中,需要時(shí)可以裝入內(nèi)存。這種動(dòng)態(tài)的、“根據(jù)需要加載”的能力是支持其它一系列功能的重要特征:1.它使初始化代碼在系統(tǒng)引導(dǎo)后被釋放。linux同樣有很多內(nèi)核外運(yùn)行的公用程序。這些公用程序在初始化時(shí)運(yùn)行一次,以后就不再運(yùn)行。而且,這些公用程序可以用它們相互共有的方式,一個(gè)接一個(gè),按順序運(yùn)行。這樣,相同內(nèi)存空間可以被反復(fù)使用以“調(diào)入”每一個(gè)程序,就像系統(tǒng)引導(dǎo)一樣。這的確可以節(jié)省內(nèi)存,特別是在那些配置一次以后就不再更改的網(wǎng)絡(luò)堆棧中。如果linux可加載模塊的功能包括在內(nèi)核里,驅(qū)動(dòng)程序和應(yīng)用程序就都可以被加載。它可以檢查硬件環(huán)境并且為硬件裝上相應(yīng)的軟件。這
8、就消除了用一個(gè)程序占用許多flash memory來處理多種硬件的復(fù)雜性。2.軟件的升級(jí)更模塊化。你可以在系統(tǒng)運(yùn)行的時(shí)候,在flash上升級(jí)應(yīng)用程序和可加載驅(qū)動(dòng)程序。3.配置信息和運(yùn)行時(shí)間參數(shù)可以作為數(shù)據(jù)文件儲(chǔ)存在flash上。 虛擬內(nèi)存標(biāo)準(zhǔn)linux的另一個(gè)特征是虛擬內(nèi)存的能力。正是這種神奇的特征使應(yīng)用程序員可以狂熱地編寫代碼而不計(jì)后果,不管程序有多大。在嵌入式系統(tǒng)里不需要這種強(qiáng)大的功能。實(shí)際上,因?yàn)樗鼤?huì)帶來無法控制的時(shí)間因素,所以每人會(huì)希望它在實(shí)時(shí)的系統(tǒng)里存在。這個(gè)軟件必須設(shè)計(jì)得更加精悍,以適合硬件平臺(tái)上的物理內(nèi)存,就像其它嵌入式系統(tǒng)一樣。注意:由于cpu的原因,通常在linux中保存虛擬
9、內(nèi)存代碼是明智的。因?yàn)閷⑺宄苜M(fèi)事,而且還有另外一個(gè)原因它支持共享文本,這樣就可以使許多程序共享一個(gè)軟件。虛擬內(nèi)存的調(diào)入功能可以被關(guān)掉,只要將交換空間的大小設(shè)置為零。如果你寫的程序比實(shí)際的內(nèi)存大,系統(tǒng)就會(huì)用盡交換空間來執(zhí)行你的程序,那么這個(gè)程序?qū)⒉粫?huì)運(yùn)行,或者malloc將會(huì)失靈。在許多cpu上,虛擬內(nèi)存提供的內(nèi)存管理可以將不同程序分開,防止它們寫到其它地址的空間上。這在嵌入式系統(tǒng)上通常是不可能的,因?yàn)樗恢С忠粋€(gè)簡單、扁平的地址空間。linux的這種功能有助于其發(fā)展。它減少了胡亂地編寫程序造成系統(tǒng)崩潰的可能性。許多嵌入式系統(tǒng)基于效率方面的原因,有意識(shí)使用程序間可以共享的“全局”數(shù)據(jù)。這也可
10、以通過linux共享內(nèi)存功能來支持,但共享的只是指定的內(nèi)存部分。文件系統(tǒng)許多嵌入式系統(tǒng)沒有磁盤或者文件系統(tǒng)。linux不需要它們也能運(yùn)行。實(shí)際上,許多商業(yè)性嵌入式系統(tǒng)提供文件系統(tǒng)作為選項(xiàng)。linux提供ms-dos-compatible文件系統(tǒng),同時(shí)還有其它多種選擇。之所以提供其它選擇是因?yàn)樗鼈兏訌?qiáng)大而且具有容錯(cuò)功能。linux還具有檢查和維護(hù)的功能,商業(yè)性供應(yīng)商往往不提供這些。這對(duì)于flash系統(tǒng)來說尤其重要,因?yàn)樗峭ㄟ^網(wǎng)絡(luò)更新的。如果系統(tǒng)在升級(jí)過程中失去了能力,那它就沒有用了。維護(hù)的功能通??梢越鉀Q這類問題。文件系統(tǒng)可以被放在傳統(tǒng)的磁盤驅(qū)動(dòng)器、flash memory或其它這類的介質(zhì)上
11、。而且,用于暫時(shí)保存文件,一個(gè)小ram盤就足夠了。flash memories被分割成塊,這些塊中也許包括一個(gè)含有當(dāng)cpu啟動(dòng)時(shí)最初運(yùn)行的軟件的引導(dǎo)模塊。這其中也可能包括linux 引導(dǎo)代碼。剩余的flash可以用作文件系統(tǒng)。linux的內(nèi)核可以通過引導(dǎo)代碼從flash復(fù)制到ram,或者還有一個(gè)選擇,內(nèi)核可以被存儲(chǔ)在flash的一個(gè)獨(dú)立部分,并且直接從那里執(zhí)行。另外,對(duì)于一些系統(tǒng)來說,還有一個(gè)有趣的選擇,那就是將一個(gè)便宜的cd-rom包含在內(nèi)。這比flash memory 便宜,而且通過交換cd-rom支持簡單的升級(jí)。有了這個(gè),linux 只要從 cd-rom上引導(dǎo),類似從硬盤上一樣從cd-r
12、om上獲得所有的程序。最后,對(duì)于聯(lián)網(wǎng)的嵌入式系統(tǒng)來說,linux 支持nfs(network file system)。這為實(shí)現(xiàn)聯(lián)網(wǎng)系統(tǒng)的許多增值功能打開了大門。它允許通過網(wǎng)絡(luò)加載應(yīng)用程序。這是控制軟件修改的基礎(chǔ)。它在運(yùn)行的時(shí)候也可以用來輸入或輸出大量的數(shù)據(jù)、配置和狀態(tài)信息。這對(duì)用戶監(jiān)督和控制來說是一個(gè)非常強(qiáng)大的功能。舉例來說,嵌入式系統(tǒng)可以建立一個(gè)小的ram磁盤,包含的文件中有與當(dāng)前狀態(tài)信息同步的內(nèi)容。其它系統(tǒng)可以簡單地把這個(gè)ram磁盤設(shè)置為基于網(wǎng)絡(luò)的遠(yuǎn)程磁盤,并且空中存取狀態(tài)文件。這就允許另一個(gè)機(jī)器上的web服務(wù)器通過簡單的cgi script存取狀態(tài)信息。在其它電腦上運(yùn)行的其它應(yīng)用程序包
13、可以很容易地存取數(shù)據(jù)。引導(dǎo)-lilo和bios在哪里當(dāng)一個(gè)微處理器第一次啟動(dòng)的時(shí)候,它開始在預(yù)先設(shè)置的地址上執(zhí)行指令。通常在那里有一些只讀內(nèi)存,包括初始化或引導(dǎo)代碼。類似于在pc上的bios。它執(zhí)行了一些低水平的cpu初始化和其它硬件的配置文件。bios繼續(xù)辨認(rèn)哪個(gè)磁盤里有操作系統(tǒng),把操作系統(tǒng)復(fù)制到ram并且轉(zhuǎn)向它。實(shí)際上,這非常復(fù)雜,但對(duì)我們的目標(biāo)來說也非常重要。在pc上運(yùn)行的linux依靠pc的bios來提供這些配置和os加載功能。在一個(gè)嵌入式系統(tǒng)里經(jīng)常沒有這種bios。這樣你就要提供同等的啟動(dòng)代碼。嵌入式系統(tǒng)并不需要像pc機(jī)上的 bios引導(dǎo)程序那樣的靈活性,因?yàn)樗ǔV恍枰幚硪粋€(gè)硬件
14、的配置。它只是個(gè)指令清單,將固定的數(shù)字塞到硬件寄存器中去。然而,這是關(guān)鍵的代碼,因?yàn)檫@些數(shù)值要與你的硬件相符而且要按照特定的順序進(jìn)行。這些啟動(dòng)代碼完全根據(jù)硬件決定,不可隨意移動(dòng)。但是,在少數(shù)情況下,啟動(dòng)代碼需要重新編寫。為了測(cè)試這些代碼,你可以使用一個(gè)包含“模擬內(nèi)存”的電路內(nèi)置模擬器,它可以代替目標(biāo)內(nèi)存。你把代碼裝到模擬器上并通過模擬器調(diào)試。如果這樣不行,你可以跳過這一步,但這樣就要一個(gè)更長的調(diào)試周期。這個(gè)代碼最終要在較為穩(wěn)定的內(nèi)存上運(yùn)行,通常是flash或eprom芯片。你需要使用一些方法將代碼放在芯片上。怎么做,要根據(jù)“目標(biāo)”硬件和工具來定。一種流行的方法是把flash或eprom芯片插入
15、eprom或flash燒制器。這將把你的程序“燒”(存)入芯片。然后,把芯片插入你的目標(biāo)板的插座,打開電源。這個(gè)方法需要板上配有插座,但有些設(shè)備是不能配插座的。另一個(gè)方法是通過一個(gè)jtag界面。一些芯片有jtag界面可以用來對(duì)芯片進(jìn)行編程,這是最方便的方法。穩(wěn)定性對(duì)大多數(shù)微處理器來說,linux非常好。移植到新微處理器家族的linux內(nèi)核運(yùn)行起來與原來的微處理器一樣穩(wěn)定。它經(jīng)常被移植到一個(gè)或多個(gè)特定的主板上。許多代碼是與處理器的特性不相關(guān)的,所以移植集中在處理器的差異上,其中大多數(shù)是在內(nèi)存管理和中斷控制領(lǐng)域。一旦成功移植,它們就非常穩(wěn)定。引導(dǎo)策略廣泛依賴于硬件要求,而且你必須有計(jì)劃地做一些定制
16、的工作。設(shè)備驅(qū)動(dòng)程序更加混亂:有些穩(wěn)定有些不穩(wěn)定,而且選擇很有限。一旦你離開了通用的pc平臺(tái),你需要自己編寫。有幸的是,周圍有許多驅(qū)動(dòng)程序,你可以找到一個(gè)與你的需求相近的驅(qū)動(dòng)程序修改一下。許多類似的驅(qū)動(dòng)程序都非常相近,所以把磁盤、網(wǎng)絡(luò)或一系列的端口驅(qū)動(dòng)程序從一個(gè)設(shè)備移植到另一個(gè)設(shè)備上通常并不難。你可能發(fā)現(xiàn)許多驅(qū)動(dòng)程序都寫得很好、很容易理解,但你還是要準(zhǔn)備一本關(guān)于內(nèi)核結(jié)構(gòu)的書在手頭??傊?,這些操作系統(tǒng)和linux的問題在于對(duì)工作過程微小之處的誤解,而不在于代碼的難度或基本的設(shè)計(jì)錯(cuò)誤。任何操作系統(tǒng)都有很多爭論不休的故事,這里不需要重復(fù)。linux的優(yōu)勢(shì)在于源代碼是公開、注釋清晰和文檔齊全。這樣,你就可以控制和處理所出現(xiàn)的任何問題。四、如何發(fā)展嵌入式linux操作系統(tǒng)嵌入式linux的確有它的缺陷。比如,雖然它并不比某些
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人貸款委托合同書
- 個(gè)人工程承攬基礎(chǔ)合同書
- 個(gè)人房屋租賃合同簡易模板
- 上海市建設(shè)工程合同示范文本:汽車4S店建設(shè)
- 專利研發(fā)合同
- 專業(yè)家教服務(wù)合同(五)
- 個(gè)人和單位的購貨合同
- 二手房買賣委托代理合同示例
- 中小企業(yè)融資借款合同
- 個(gè)人汽車股權(quán)合作合同
- 餐飲行業(yè)優(yōu)化食品供應(yīng)鏈管理計(jì)劃
- cnc加工崗前培訓(xùn)
- 2024年海南省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 2025年中國汽車車燈行業(yè)市場(chǎng)現(xiàn)狀、前景分析研究報(bào)告(智研咨詢發(fā)布)
- 2024夏季廣東廣州期貨交易所招聘高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 浙江省2024年高考化學(xué)模擬試題(含答案)2
- 2024新人教七年級(jí)英語上冊(cè) Unit 2 Were Family!(大單元教學(xué)設(shè)計(jì))
- (部編版)統(tǒng)編版小學(xué)語文教材目錄(一至六年級(jí)上冊(cè)下冊(cè)齊全)
- 材料力學(xué)之材料疲勞分析算法:S-N曲線法:疲勞分析案例研究與項(xiàng)目實(shí)踐.Tex.header
- 2024(新高考2卷)英語試題詳解解析 課件
- 天津2024年天津市規(guī)劃和自然資源局所屬事業(yè)單位招聘筆試歷年典型考題及考點(diǎn)附答案解析
評(píng)論
0/150
提交評(píng)論