基于ARM的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)研究_第1頁
基于ARM的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)研究_第2頁
基于ARM的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)研究_第3頁
基于ARM的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)研究_第4頁
基于ARM的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)研究_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGEPAGEII摘要基于ARM處理器的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)結(jié)合了嵌入式設(shè)備工作穩(wěn)定,實(shí)時(shí)性好,集成度高,環(huán)境適應(yīng)能力強(qiáng),成本低等優(yōu)點(diǎn)與網(wǎng)絡(luò)覆蓋廣泛及接口具有良好通用性的優(yōu)點(diǎn),在各種數(shù)據(jù)傳輸現(xiàn)場(chǎng)中具有越來越廣泛的應(yīng)用前景。本文是基于RAM處理器的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)的研究,網(wǎng)絡(luò)數(shù)據(jù)以圖像數(shù)據(jù)的傳輸為例,并且研究對(duì)象采用了通過網(wǎng)絡(luò)傳輸圖像數(shù)據(jù)的應(yīng)用系統(tǒng),所以本文提出在單芯片上實(shí)現(xiàn)全局控制+輕量級(jí)RTOS內(nèi)核+精簡(jiǎn)TCP/IP協(xié)議棧的系統(tǒng)架構(gòu)方式,設(shè)計(jì)一個(gè)基于S3C2440開發(fā)板的網(wǎng)絡(luò)圖像數(shù)據(jù)實(shí)時(shí)傳輸?shù)那度胧较到y(tǒng)。關(guān)鍵詞:網(wǎng)絡(luò)數(shù)據(jù)傳輸嵌入式LinuxTCP/IP協(xié)議AbstractUnifiedtheembeddedequipmentworkbasedontheARMprocessornetworkdatatransmissiontechnologytobestable,timelinesswasgood,theintegrationratewashigh,environmentadaptiveness,thecostlowstatusmeritandthenetworkcoverwidespreadandtheconnectionhadthegoodversatilemerit,hadthemoreandmorewidespreadapplicationprospectineachkindofdatatransmissionscene.ThisarticleisbasedontheRAMprocessornetworkdatatransmissiontechnologyresearch,thenetworkdatataketheimagedatatransmissionasanexample,andtheobjectofstudyhasusedthroughthenetworktransmissionimagedataapplicationsystem,thereforethisarticleproposedrealizestheoverallsituationcontrol+lightweightRTOSessenceonthesinglechip+tosimplifytheTCP/IPagreementstackthesystemconstructionway,designsonebasedontheS3C2440developmentboardnetworkimagedatareal-timetransmissionembeddedsystem.Keywords:DataTransmissionNetworkEmbeddedLinuxTCP/IPAgreement目錄第一章緒論 11.課題的背景及其意義 12.本文所做工作 1第二章嵌入式系統(tǒng)及圖像的網(wǎng)絡(luò)傳輸 32.1嵌入式系統(tǒng)概述 32.1.1嵌入式系統(tǒng)的定義 32.1.2嵌入式系統(tǒng)的特點(diǎn) 32.1.3嵌入式系統(tǒng)的組成 42.1.4嵌入式Linux 52.1.5嵌入式系統(tǒng)開發(fā)與調(diào)試 52.2基于嵌入式系統(tǒng)的圖像的網(wǎng)絡(luò)傳輸 62.3嵌入式網(wǎng)絡(luò)傳輸?shù)膱D像壓縮算法 6本章小結(jié) 7第三章基于嵌入式系統(tǒng)的圖像網(wǎng)絡(luò)傳輸?shù)南到y(tǒng)設(shè)計(jì) 83.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 83.2硬件平臺(tái)設(shè)計(jì) 93.2.1S3C2440體系結(jié)構(gòu)及特點(diǎn) 93.3軟件設(shè)計(jì) 13本章小結(jié) 13第四章TCP/IP協(xié)議概述 144.1網(wǎng)絡(luò)分層結(jié)構(gòu) 144.1.1OSI七層參考模型 144.1.2TCP/IP參考模型 154.2TCP/IP網(wǎng)絡(luò)協(xié)議 164.2.1嵌入式TCP/IP協(xié)議 164.2.2IP協(xié)議 164.2.3UDP/TCP協(xié)議 174.2.4ARP協(xié)議 17本章小結(jié) 17第五章基于嵌入式系統(tǒng)的圖像網(wǎng)絡(luò)傳輸?shù)能浖O(shè)計(jì) 195.1LINUX在ARM硬件平臺(tái)上的移植 195.1.1移植環(huán)境 195.1.2建立交叉編譯環(huán)境 195.1.3BOOTLOADER 205.2燒寫和啟動(dòng)LINUX以及LINUX內(nèi)核編譯 225.2.1燒寫Linux內(nèi)核 225.2.2燒寫根文件系統(tǒng) 225.2.3啟動(dòng)Linux 235.2.4安裝編譯工具 235.2.5編譯內(nèi)核 245.2.6cramfs根文件系統(tǒng)的創(chuàng)建 245.3嵌入式TCP/IP協(xié)議棧的設(shè)計(jì) 255.3.1ARP協(xié)議的實(shí)現(xiàn) 265.3.2IP協(xié)議與ICMP協(xié)議的實(shí)現(xiàn) 275.3.3TCP與UDP協(xié)議的實(shí)現(xiàn) 29本章小結(jié) 32第六章總結(jié)與展望 336.1全文總結(jié) 336.2不足與展望 33參考文獻(xiàn) 35致謝 37附錄 38第一章緒論1.課題的背景及其意義數(shù)據(jù)信號(hào)獲取以及轉(zhuǎn)移可以采用直接存儲(chǔ)在采集現(xiàn)場(chǎng)本地,收集一段時(shí)間的數(shù)據(jù)后由工作人員到采集現(xiàn)場(chǎng)將數(shù)據(jù)取回,或者通過某種途徑實(shí)時(shí)傳輸?shù)胶蠖?,前者?duì)實(shí)時(shí)性要求比較高的場(chǎng)合以及某些較為危險(xiǎn)的工業(yè)現(xiàn)場(chǎng)缺乏實(shí)用價(jià)值,后者能實(shí)時(shí)將采集的數(shù)據(jù)信號(hào)傳輸?shù)娇刂贫?,較為及時(shí)地反映出采集現(xiàn)場(chǎng)的實(shí)際情況,無疑具有更多的靈活性與實(shí)用價(jià)值,同時(shí)由于Internet的廣泛的覆蓋以及接口的通用性,傳輸?shù)姆绞酵ㄟ^網(wǎng)絡(luò)來進(jìn)行,將會(huì)使成本降低并且讓系統(tǒng)規(guī)劃的難度減小的優(yōu)勢(shì)。采用通過網(wǎng)絡(luò)實(shí)時(shí)傳輸數(shù)據(jù)的方式可以采用傳統(tǒng)的PC+數(shù)據(jù)采集卡的方式或者基于具備網(wǎng)絡(luò)功能的嵌入式設(shè)備的方式,前者雖然具備實(shí)現(xiàn)簡(jiǎn)單,功能多樣化的優(yōu)點(diǎn),但也存在體積龐大,穩(wěn)定性低,在惡劣環(huán)境中難以工作,成本較高,功能不可裁減等劣勢(shì),相比較而言,嵌入式設(shè)備具備工作穩(wěn)定,易于攜帶和安裝,操作靈活的特點(diǎn),同時(shí)還具有實(shí)時(shí)性好,集成度高,環(huán)境適應(yīng)能力強(qiáng),系統(tǒng)成本低,同時(shí)也易于根據(jù)實(shí)際需要進(jìn)行功能的添加與裁減等優(yōu)點(diǎn),在各種數(shù)據(jù)信號(hào)獲取的各種應(yīng)用場(chǎng)合,將得到越來越廣泛的應(yīng)用,是今后的一個(gè)發(fā)展趨勢(shì)。在網(wǎng)絡(luò)中傳輸圖像數(shù)據(jù),由于網(wǎng)絡(luò)的傳輸速率有限,為了實(shí)現(xiàn)圖像數(shù)據(jù)的穩(wěn)定傳輸,必須對(duì)圖像進(jìn)行壓縮,無損壓縮的壓縮比比較低,對(duì)降低碼率的貢獻(xiàn)有限,所以在對(duì)圖像質(zhì)量沒有精確要求的情況下通常采用有損壓縮算法。由于嵌入式系統(tǒng)具有計(jì)算能力有限的特性,而這是設(shè)計(jì)面向一般PC或者工作站的圖像壓縮算法所不需要考慮的,其壓縮算法有其固有的特點(diǎn),需要單獨(dú)對(duì)其進(jìn)行研究。目前針對(duì)嵌入式系統(tǒng)進(jìn)行圖像壓縮的工作,主要集中在對(duì)動(dòng)態(tài)圖像實(shí)時(shí)壓縮算法實(shí)現(xiàn)的研究和基于專用圖像壓縮芯片構(gòu)架實(shí)用系統(tǒng)上,對(duì)于對(duì)成本敏感,每秒需要傳輸?shù)膱D像的幀數(shù)只要求在若干幀以內(nèi)的場(chǎng)合下適用的壓縮算法的研究還鮮有所聞,隨著工業(yè)以太網(wǎng)技術(shù)和Internet的迅速發(fā)展,越來越多圖像獲取設(shè)備將接入網(wǎng)絡(luò),這種較為低端的網(wǎng)絡(luò)圖像傳輸設(shè)備的應(yīng)用將越來越廣泛,對(duì)于其上的圖像壓縮算法的進(jìn)行一定的探討,實(shí)現(xiàn)一個(gè)同時(shí)具備網(wǎng)絡(luò)功能和圖像壓縮功能的嵌入式設(shè)備,對(duì)該領(lǐng)域進(jìn)行一次有益的探索與嘗試,是一項(xiàng)很有意義的工作。2.本文所做工作本文第二章介紹了相關(guān)的背景知識(shí),包括嵌入式系統(tǒng),圖像的網(wǎng)絡(luò)傳輸,以及兩者相結(jié)合的討論。第三章從系統(tǒng)架構(gòu)的角度對(duì)實(shí)現(xiàn)的系統(tǒng)進(jìn)行描述,介紹了系統(tǒng)總體方案,芯片選型的考慮和系統(tǒng)集成的具體工作。第四章重點(diǎn)介紹了TCP/IP協(xié)議以及相關(guān)協(xié)議,為下一章的的網(wǎng)絡(luò)傳輸TCP/IP協(xié)議的設(shè)計(jì)做好理論鋪墊。第五章全面地介紹了系統(tǒng)的軟件設(shè)計(jì)工作,包括操作系統(tǒng)的移植過程,嵌入式TCP/IP協(xié)議的設(shè)計(jì),以及在應(yīng)用層實(shí)現(xiàn)網(wǎng)絡(luò)圖像數(shù)據(jù)傳輸。第六章對(duì)全文進(jìn)行簡(jiǎn)明的總結(jié),并對(duì)該領(lǐng)域的研究進(jìn)行展望。第二章嵌入式系統(tǒng)及圖像的網(wǎng)絡(luò)傳輸2.1嵌入式系統(tǒng)概述2.1.1嵌入式系統(tǒng)的定義根據(jù)IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))的定義,嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置(devicesusedtocontrol,monitor,orassisttheoperationofequipment,maehineryorplants)。嵌入式系統(tǒng)定義:是現(xiàn)代科學(xué)的多學(xué)科互相融合的以應(yīng)用技術(shù)產(chǎn)品為核心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),以通信技術(shù)為載體,以消費(fèi)類產(chǎn)品為對(duì)象,引入各類傳感器,進(jìn)入Internet網(wǎng)絡(luò)連接,適應(yīng)應(yīng)用環(huán)境的產(chǎn)品。2.1.2嵌入式系統(tǒng)的特點(diǎn)(1)嵌入式系統(tǒng)通常是面向特定應(yīng)用的。嵌入式系統(tǒng)的專用性很強(qiáng),其中的軟件系統(tǒng)和硬件的結(jié)合非常緊密,一般需要針對(duì)硬件進(jìn)行系統(tǒng)的移植,同時(shí)針對(duì)不同的任務(wù),往往需要對(duì)系統(tǒng)進(jìn)行較大更改,程序的編譯下載要和系統(tǒng)相結(jié)合,這種修改和通用軟件的“升級(jí)”是完全不同的概念。(2)系統(tǒng)精簡(jiǎn)。嵌入式系統(tǒng)一般沒有系統(tǒng)軟件和應(yīng)用軟件的明顯區(qū)分,不要求其功能設(shè)計(jì)及實(shí)現(xiàn)上過于復(fù)雜,這樣一方面利于控制系統(tǒng)成本,同時(shí)也利于實(shí)現(xiàn)系統(tǒng)安全。(3)高實(shí)時(shí)性嵌入式操作系統(tǒng)。這是嵌入式軟件的基本要求,而且軟件要求固態(tài)存儲(chǔ),以提高速度。軟件代碼要求高質(zhì)量和高可靠性、實(shí)時(shí)性。(4)為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身中,而不是存貯于磁盤等載體中。(5)嵌入式軟件開發(fā)走向標(biāo)準(zhǔn)化。為了合理地調(diào)度多任務(wù)、利用系統(tǒng)資源、系統(tǒng)函數(shù)以及和專家?guī)旌瘮?shù)接口,用戶必須自行選配RTOS(RealTimeOperatingSystem)開發(fā)平臺(tái),這樣才能保證程序執(zhí)行的實(shí)時(shí)性、可靠性,并減少開發(fā)時(shí)間,保障軟件質(zhì)量。(6)嵌入式系統(tǒng)本身不具備自主開發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也是不能對(duì)其中的程序功能進(jìn)行修改的,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。開發(fā)時(shí)往往有主機(jī)和目標(biāo)機(jī)的概念,主機(jī)用于程序的開發(fā),目標(biāo)機(jī)作為最后的執(zhí)行機(jī),開發(fā)時(shí)需要交替結(jié)合進(jìn)行。2.1.3嵌入式系統(tǒng)的組成嵌入式系統(tǒng)包括硬件和軟件兩部分。圖2.1嵌入式系統(tǒng)的組成框圖1.專用硬件包括嵌入式處理器、存儲(chǔ)器和I/O端口及外圍設(shè)備等。其核心是嵌入式處理器。嵌入式處理器一般具備以下4個(gè)特點(diǎn):①對(duì)實(shí)時(shí)多任務(wù)有很強(qiáng)的支持能力,能完成多任務(wù)并且有較短的中斷響應(yīng)時(shí)間,從而使內(nèi)部的代碼和實(shí)時(shí)內(nèi)核的執(zhí)行時(shí)間減少到最低限度;②具有功能很強(qiáng)的存儲(chǔ)區(qū)保護(hù)功能。這是由于嵌入式系統(tǒng)的軟件結(jié)構(gòu)已模塊化,而為了避免在軟件模塊之間出現(xiàn)錯(cuò)誤的交叉作用,需要設(shè)計(jì)強(qiáng)大的存儲(chǔ)區(qū)保護(hù)功能,同時(shí)也有利于軟件診斷;③可擴(kuò)展的處理器結(jié)構(gòu),以能最迅速地開發(fā)出滿足應(yīng)用的最高性能的嵌入式微處理器為準(zhǔn);④嵌入式微處理器必須功耗很低,尤其是用于便攜式的無線及移動(dòng)的計(jì)算和通信設(shè)備,靠電池供電的嵌入式系統(tǒng)更是如此。2.應(yīng)用軟件是實(shí)現(xiàn)嵌入式系統(tǒng)功能的關(guān)鍵,包括操作系統(tǒng)軟件和應(yīng)用程序。有時(shí)設(shè)計(jì)人員把這兩種軟件組合在一起。應(yīng)用程序控制著系統(tǒng)的運(yùn)作和行為;而操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互作用。嵌入式系統(tǒng)軟件的特征如下:①軟件要求固態(tài)化存儲(chǔ)。為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般固化在存儲(chǔ)器芯片或單片機(jī)本身中,而不存貯于磁盤等載體中;②軟件代碼高質(zhì)量、高可靠性。盡管半導(dǎo)體技術(shù)的發(fā)展使處理器速度不斷提高、片上存儲(chǔ)器容量不斷增加,但在大多數(shù)應(yīng)用中,存儲(chǔ)空間仍然是寶貴的,還存在實(shí)時(shí)性的要求。為此要求程序編寫和編譯工具的質(zhì)量要高,以減少程序二進(jìn)制代碼長(zhǎng)度、提高執(zhí)行速度;③系統(tǒng)軟件(OS)的高實(shí)時(shí)性是基本要求。在多任務(wù)嵌入式系統(tǒng)中,對(duì)重要性各不相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合調(diào)度是保證每個(gè)任務(wù)及時(shí)執(zhí)行的關(guān)鍵,單純通過提高處理器速度是無法完成和沒有效率的,這種任務(wù)調(diào)度只能由優(yōu)化編寫的系統(tǒng)軟件來完成。2.1.4嵌入式Linux本文選擇的嵌入式系統(tǒng)為L(zhǎng)inux。嵌入式Linux支持多種體系結(jié)構(gòu),有強(qiáng)大的網(wǎng)絡(luò)功能支持,支持多文件系統(tǒng),有豐富的外設(shè)驅(qū)動(dòng),此外Linux還具備一整套工具鏈,使用戶容易自行建立嵌入式系統(tǒng)的開發(fā)環(huán)境、交叉運(yùn)行環(huán)境,并且可以跨越嵌入式系統(tǒng)開發(fā)中仿真工具的障礙。一般開發(fā)嵌入式操作系統(tǒng)的程序調(diào)試和跟蹤都是使用仿真器來實(shí)現(xiàn)的,而使用Linux系統(tǒng)做原型的時(shí)候,可以繞過這個(gè)障礙,直接使用內(nèi)核調(diào)試器來做操作系統(tǒng)的內(nèi)核調(diào)試和查錯(cuò)。嵌入式應(yīng)用系統(tǒng)的體系結(jié)構(gòu)可用圖2.2分層方式描述:第五層嵌入式應(yīng)用軟件第四層中間支撐軟件層第三層硬件無關(guān)的操作系統(tǒng)內(nèi)核層第二層硬件抽象層(HAL)第一層硬件系統(tǒng)圖2.2嵌入式應(yīng)用系統(tǒng)的體系結(jié)構(gòu)分層體系結(jié)構(gòu)層與層之間的依賴關(guān)系是上層完全依賴于下層,這種依賴主要是由明確定義的接口來實(shí)現(xiàn)的,能很好的滿足體系結(jié)構(gòu)的要求。2.1.5嵌入式系統(tǒng)開發(fā)與調(diào)試由于開發(fā)平臺(tái)受到存儲(chǔ)容量和功能的限制,嵌入式應(yīng)用的開發(fā)和調(diào)試需要借助一套專門的開發(fā)工具和軟硬件環(huán)境來完成。硬件環(huán)境包括:具有文件傳送功能的宿主機(jī),具有編譯調(diào)試功能的仿真器。軟件包括:操作系統(tǒng)軟件、編譯調(diào)試軟件、文件傳輸軟件等。嵌入式應(yīng)用系統(tǒng)設(shè)計(jì)完成以后,一般不具備在其上進(jìn)行進(jìn)一步開發(fā)的能力,如果要進(jìn)行功能的擴(kuò)充和改進(jìn),必須在宿主機(jī)上進(jìn)行重新設(shè)計(jì)。嵌入式應(yīng)用軟件開發(fā)可以通過兩種途徑進(jìn)行:一種是直接利用匯編和嵌入式高級(jí)語言對(duì)硬件編程,由于嵌入式程序具有直接在CPU芯片上運(yùn)行的能力,這種程序只需要在其開發(fā)調(diào)試仿真器環(huán)境下編譯運(yùn)行通過后直接下載ROM即可;第二種是為了利用CPU的強(qiáng)大功能,便于對(duì)硬件和軟件的管理,引入嵌入式的操作系統(tǒng)和相應(yīng)的編譯環(huán)境,由操作系統(tǒng)來管理軟硬件資源(存儲(chǔ)管理,文件管理,進(jìn)程管理,中斷管理等)。由于操作系統(tǒng)對(duì)高級(jí)語言(C語言)的支持和其強(qiáng)大的網(wǎng)絡(luò)功能,我們可以進(jìn)行高級(jí)語言的編程,屏蔽對(duì)低層的直接訪問,使得具有復(fù)雜功能的應(yīng)用程序的編寫和實(shí)現(xiàn)變得更加容易和方便。2.2基于嵌入式系統(tǒng)的圖像的網(wǎng)絡(luò)傳輸在網(wǎng)絡(luò)中傳輸圖像數(shù)據(jù),由于網(wǎng)絡(luò)的傳輸速率有限,為了實(shí)現(xiàn)圖像數(shù)據(jù)的穩(wěn)定傳輸,必須對(duì)圖像數(shù)據(jù)進(jìn)行壓縮,無損壓縮的壓縮比比較低,對(duì)降低碼率的貢獻(xiàn)有限,所以在對(duì)圖像質(zhì)量沒有精確要求的情況下通常采用有損壓縮算法。由于嵌入式系統(tǒng)具有計(jì)算能力有限的特性,需要基于該特點(diǎn)考慮具有適用性和實(shí)用性的壓縮算法。目前針對(duì)嵌入式系統(tǒng)進(jìn)行圖像壓縮的工作,主要集中在以下的兩個(gè)方面:(1)動(dòng)態(tài)圖像的實(shí)時(shí)壓縮:要求對(duì)視頻信號(hào)進(jìn)行實(shí)時(shí)的壓縮,壓縮算法基于通用的標(biāo)準(zhǔn),應(yīng)用為視頻監(jiān)控系統(tǒng)或者視頻會(huì)議系統(tǒng),標(biāo)準(zhǔn)為MPEG-2,MPEG-4,H.264等,一般使用高端數(shù)字信號(hào)處理器如TI的6200系列或者Philps的Trimedia來實(shí)現(xiàn)算法,配合處理能力強(qiáng)的高端控制器如ARM9,XScale,使用嵌入式Linux或者嵌入式WindowsXP作為操作系統(tǒng),或者是使用高中端處理器配合視頻壓縮專用芯片來構(gòu)架系統(tǒng),這種技術(shù)的典型應(yīng)用是銀行系統(tǒng)中的24小時(shí)實(shí)時(shí)監(jiān)控錄像,特點(diǎn)是對(duì)實(shí)時(shí)性要求高,要求壓縮后重建的圖像質(zhì)量好,對(duì)成本較不敏感。(2)靜態(tài)圖像的高質(zhì)量壓縮:要求重建后的圖像與原圖相差極小,一般使用無損壓縮或者根據(jù)JPEG2000標(biāo)準(zhǔn)進(jìn)行低壓縮比有損壓縮,使用中檔數(shù)字信號(hào)處理器如TI的6711配合中檔處理器。典型應(yīng)用是醫(yī)學(xué)圖像采集與存儲(chǔ)系統(tǒng),特點(diǎn)為對(duì)重建的圖像質(zhì)量要求高。2.3嵌入式網(wǎng)絡(luò)傳輸?shù)膱D像壓縮算法本文所考慮的應(yīng)用方向是在嵌入式系統(tǒng)上的壓縮算法,因此采用基于零樹小波編碼的算法。該算法具有以下特點(diǎn):(1)算法思想簡(jiǎn)潔,易于通過程序?qū)崿F(xiàn),并且可以通過對(duì)原有算法某些步驟的改善與省略實(shí)現(xiàn)精簡(jiǎn)的目的;(2)零樹小波編碼是一種嵌入式編碼,編碼所得的比特流按其重要性排序,可以在任意一點(diǎn)結(jié)束編碼,允許精確度達(dá)到一個(gè)目標(biāo)壓縮率和目標(biāo)比特率,而仍能確切地產(chǎn)生同樣的圖像。基于零樹小波編碼的算法進(jìn)行圖像壓縮大體需要經(jīng)過以下步驟:(1)選擇小波基及其對(duì)應(yīng)的小波濾波器;(2)輸入待壓縮圖像點(diǎn)值序列;(3)給出分解層數(shù)L和圖像數(shù)據(jù)向量長(zhǎng)度k;(4)對(duì)源圖像采用分解算法進(jìn)行小波變換,得到不同層次不同圖號(hào)的子圖;(5)根據(jù)不同層次不同子圖的特點(diǎn),對(duì)相應(yīng)小波系數(shù)的各個(gè)部分進(jìn)行嵌入式編碼。反過來,在恢復(fù)圖像(圖像解壓縮)時(shí),需先根據(jù)密碼書還原出各層小波系數(shù),最后利用重構(gòu)算法對(duì)還原后的小波系數(shù)進(jìn)行反變換以重建源圖像。本章小結(jié)本章對(duì)嵌入式系統(tǒng)的定義、特點(diǎn)以及本文所采用的嵌入式操作系統(tǒng)Linux進(jìn)行介紹,并介紹了嵌入式網(wǎng)絡(luò)與圖像獲取結(jié)合的優(yōu)點(diǎn),同時(shí)分析了圖像采集速率要求不高的嵌入式系統(tǒng)上實(shí)現(xiàn)的壓縮算法的特點(diǎn),得出零樹小波算法作為其壓縮算法較佳的結(jié)論。第三章基于嵌入式系統(tǒng)的圖像網(wǎng)絡(luò)傳輸?shù)南到y(tǒng)設(shè)計(jì)本文設(shè)計(jì)的系統(tǒng)是面向成本敏感,每秒需要傳輸?shù)膱D像的幀數(shù)只要求在若干幀以內(nèi)的場(chǎng)合下適用的嵌入式圖像網(wǎng)絡(luò)傳輸應(yīng)用,前面章節(jié)己經(jīng)說明該系統(tǒng)的理想實(shí)現(xiàn)模式是在一個(gè)中檔處理器上運(yùn)行一個(gè)非標(biāo)準(zhǔn)的靜態(tài)圖像壓縮算法程序來實(shí)現(xiàn)壓縮。從系統(tǒng)設(shè)計(jì)的角度來考察,設(shè)計(jì)工作包括系統(tǒng)總體方案的考慮,硬件平臺(tái)的搭建與系統(tǒng)軟件實(shí)現(xiàn)。3.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)結(jié)構(gòu)框圖如下:圖3.1系統(tǒng)結(jié)構(gòu)框圖由于系統(tǒng)同時(shí)需要進(jìn)行圖像壓縮,數(shù)據(jù)的網(wǎng)絡(luò)傳輸,這些功能模塊之間存在并行執(zhí)行的可能性,引入操作系統(tǒng),基于操作系統(tǒng)的多任務(wù)模式,利用操作系統(tǒng)提供的任務(wù)間通信機(jī)制對(duì)應(yīng)用程序進(jìn)行設(shè)計(jì)有利于降低應(yīng)用程序的設(shè)計(jì)難度與提高其執(zhí)行效率。由于系統(tǒng)資源有限,網(wǎng)絡(luò)功能的實(shí)現(xiàn)在軟件上由一個(gè)功能精簡(jiǎn)的嵌入式TCP/IP協(xié)議棧來實(shí)現(xiàn),該協(xié)議棧是TCP/IP協(xié)議棧的一個(gè)功能子集,只保留一些對(duì)于系統(tǒng)必須的協(xié)議(關(guān)于該協(xié)議棧的考慮,將在軟件設(shè)計(jì)部分詳細(xì)分析)。網(wǎng)絡(luò)接入方式的考慮,考慮到以太網(wǎng)技術(shù)的的優(yōu)點(diǎn):成本低;速度在近年得到較大提高以及因普遍應(yīng)用形成了廣泛支持(以太網(wǎng)是世界上應(yīng)用最多的網(wǎng)絡(luò),包括各種工業(yè)用網(wǎng)絡(luò),有超過93%的網(wǎng)絡(luò)節(jié)點(diǎn)為以太網(wǎng)。)。選擇以太網(wǎng)作為網(wǎng)絡(luò)接入方式使得系統(tǒng)具有較高的通用性與較強(qiáng)的適應(yīng)性。從系統(tǒng)的功能考慮,硬件平臺(tái)的架構(gòu)基于主控芯片+以太網(wǎng)控制器+其他必要外設(shè),每一模塊的功能界定清晰,通過一定的接口設(shè)計(jì)工作各模塊之間可以很好地實(shí)現(xiàn)協(xié)調(diào)工作。系統(tǒng)設(shè)計(jì)根據(jù)設(shè)計(jì)的目標(biāo)確定了本系統(tǒng)設(shè)計(jì)的框架,軟件與硬件的大體結(jié)構(gòu),是系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)。下面將對(duì)硬件架構(gòu)與軟件設(shè)計(jì)的具體實(shí)現(xiàn)進(jìn)行說明。3.2硬件平臺(tái)設(shè)計(jì)圖3.2硬件結(jié)構(gòu)框圖硬件平臺(tái)設(shè)計(jì)的首要工作是選擇主控芯片,對(duì)于本文設(shè)計(jì)系統(tǒng),主控芯片是一個(gè)具有中等控制能力與計(jì)算能力的處理器,性價(jià)比較高,具備盡量多的系統(tǒng)所需的片上外設(shè)?;谶@樣的考慮,選擇ARM系列的三星公司的S3C2440處理器作為系統(tǒng)的主控芯片。3.2.1S3C2440體系結(jié)構(gòu)及特點(diǎn)ARM(AdvancedRISCMachine)是基于精簡(jiǎn)指令集的一種計(jì)算機(jī)體系結(jié)構(gòu)實(shí)現(xiàn),ARM系列的處理器當(dāng)前有ARM7,ARM9,ARM9E,ARM10等多個(gè)產(chǎn)品。所有的ARM處理器都共享ARM通用的基礎(chǔ)體系結(jié)構(gòu),所以開發(fā)者在不同的ARM處理器上做操作系統(tǒng)移植時(shí),將可以節(jié)省工作量,這無疑將大大降低軟件開發(fā)成本。三星公司推出的S3C2440A處理器,是一個(gè)16/32位的RISC微處理器。內(nèi)含ARM920T內(nèi)核,ARM920T實(shí)現(xiàn)了MMU,AMBA,BUS和Harvard高速緩沖體系結(jié)構(gòu),其低功耗且全靜態(tài)設(shè)計(jì)特別適合對(duì)成本和功耗敏感型的應(yīng)用。S3C2440微處理器提供了一系列完整的系統(tǒng)外圍設(shè)備圖3.3S3C2440結(jié)構(gòu)框圖其中的ARM920T處理器內(nèi)核采用哈佛結(jié)構(gòu),5級(jí)流水線(包括取指、分析、執(zhí)行、訪存、寫存);分立的指令和數(shù)據(jù)Cache都是16KB,8個(gè)字的數(shù)據(jù)總線;采用增強(qiáng)的ARM體系V4的MMU,以提供對(duì)指令和數(shù)據(jù)地址的翻譯和訪問許可檢查;支持ARM調(diào)試結(jié)構(gòu),包含了輔助軟件和硬件調(diào)試的邏輯電路;還具有協(xié)處理器支持。ARM920T的功能模塊如圖3.4所示:ARM920T處理器的編程模型包括ARM9TDMI內(nèi)核以及以下增加和更改。1.ARM920T處理器包含了兩個(gè)協(xié)處理器:CP14:允許軟件訪問調(diào)試通信通道。CP15:系統(tǒng)控制協(xié)處理器,提供附加的寄存器,用來配置和控制ARM920T的Cathe、MMU、保護(hù)系統(tǒng)、時(shí)鐘模式和其他系統(tǒng)操作,可以使用MCRM和RC訪問CP15定義的寄存器。2.提供了外部協(xié)處理器界面,允許在同一片上布置相關(guān)的協(xié)處理器,例如:一個(gè)浮點(diǎn)運(yùn)算單元。可以用適當(dāng)?shù)膮f(xié)處理器指令訪問任何一個(gè)掛接在外部協(xié)處理器界面上的協(xié)處理器的寄存器和并進(jìn)行操作。3.取指,讀/寫數(shù)據(jù)的內(nèi)存訪問可以放到Cahte中或緩沖器(Buffer)中。4.內(nèi)存管理單元(MMU)頁表常駐主存,用來描述虛存到物理內(nèi)存的轉(zhuǎn)換、訪問許可、Cathe和寫緩沖配置等。頁表被操作系統(tǒng)軟件所創(chuàng)建,任何時(shí)候,一個(gè)存儲(chǔ)訪問導(dǎo)致TLB丟失時(shí),ARM920TMMU硬件都會(huì)自動(dòng)訪問頁表。5.ARM920T有一個(gè)調(diào)試界面接口,允許使用硬件和軟件調(diào)試工具實(shí)時(shí)跟蹤指令和數(shù)據(jù)。圖3.4ARM920T功能塊圖1.S3C24401.2V內(nèi)核供電,1.8V/2.5V/3.3V存儲(chǔ)器供電,3.3V外部I/O供電,具備16KB的I—Cache和16KB的D—Cache/MMU;外部存儲(chǔ)控制器(SDRAM控制和片選邏輯);LCD控制器(最大支持4K色STN和256K色TFT)提供1通道LCD專用DMA;4通道DMA并有外部請(qǐng)求引腳;3通道UART(IrDA1.0,16字節(jié)TxFIFO,和16字節(jié)RxFIFO);2通道SPI;1通道主從ⅡC—BUS;1通道ⅡS—BUS音頻編解碼器接口;AC’97解碼器接口;兼容SD主接口協(xié)議1.0版和MMC卡協(xié)議2.11兼容版;2端口USB主機(jī)/1端口USB設(shè)備(1.1版);4通道PWM定時(shí)器和1通道內(nèi)部定時(shí)器/看門狗定時(shí)器;8通道10比特ADC和觸摸屏接口;具有日歷功能的RTC;相機(jī)接口(最大4096*4096像素的投入支持;2048*2048像素的投入,支持縮放);130個(gè)通用I/0口和24通道外部中斷源;功耗控制模式:具有普通,慢速,空閑和掉電模式;具有PLL片上時(shí)鐘發(fā)生器。2.S3C2440地址空間分配:S3C2440支持兩種啟動(dòng)模式:一種是從NANDFLASH啟動(dòng);一種是從NORFLASH啟動(dòng)。在這兩種啟動(dòng)模式下,各片選的存儲(chǔ)空間分配是不同的,這兩種啟動(dòng)模式的存儲(chǔ)分配圖如下:圖3.5(a)圖是nGCS0片選的NORFLASH啟動(dòng)模式下的存儲(chǔ)分配圖;(b)圖是NANDFLASH啟動(dòng)模式下的存儲(chǔ)分配圖。在NANDFLASH模式啟動(dòng)下,內(nèi)部的4KBytesBootsRAM被映射到nGCS0片選的空間;在NORFLASH啟動(dòng)模式下,與nGCS0相連的外部存儲(chǔ)器NORFLASH就被映射到nGCS0片選的空間。SDRAM地址空間:0x30000000~0x34000000。3.S3C2440總電源電路:圖3.6S3C2440總電源電路圖本系統(tǒng)主要采用2片SDRAM和1片F(xiàn)lash做為儲(chǔ)存器。SDRAM具有存取速度快的特點(diǎn),適用于被訪問頻率較高的場(chǎng)合。由于本系統(tǒng)需要傳輸,存儲(chǔ)大量的數(shù)據(jù),因此采用一片32位32MB的SDRAM專門存儲(chǔ)這些數(shù)據(jù)。另一片32MB的SDRAM供整個(gè)系統(tǒng)使用。Flash存儲(chǔ)器的特點(diǎn)是掉電不易丟失數(shù)據(jù),適用于存放永久性數(shù)據(jù)。本系統(tǒng)采用64MB的NANDFlash來固化操作系統(tǒng)內(nèi)核,應(yīng)用程序以及其他永久性數(shù)據(jù)。由于S3C2440沒有內(nèi)置的以太網(wǎng)控制器,所以采用了低功耗,性能優(yōu)越的16位以太網(wǎng)網(wǎng)控制器——CS8900,它負(fù)責(zé)處理有關(guān)以太網(wǎng)數(shù)據(jù)楨的發(fā)送和接收。3.3軟件設(shè)計(jì)軟件設(shè)計(jì)工作主要包括系統(tǒng)啟動(dòng)代碼編寫,各外設(shè)驅(qū)動(dòng)程序編寫,操作系統(tǒng)選擇及移植,嵌入式TCP/IP協(xié)議棧編寫,應(yīng)用程序設(shè)計(jì)等,其中啟動(dòng)代碼,外設(shè)驅(qū)動(dòng)程序(包括DMA,TIMER,中斷控制器,串口等)實(shí)現(xiàn)較為簡(jiǎn)單,不再占用論文篇幅進(jìn)行詳細(xì)介紹。操作系統(tǒng)選擇及移植,嵌入式TCP/IP協(xié)議棧編寫,應(yīng)用程序設(shè)計(jì)的內(nèi)容較多,且體現(xiàn)了本文主要的工作,為其單獨(dú)安排在第五章進(jìn)行介紹。本章小結(jié)本章介紹了基于嵌入式系統(tǒng)的圖像網(wǎng)絡(luò)傳輸?shù)南到y(tǒng)設(shè)計(jì)的工作,主要討論了總體方案的考慮與硬件和軟件平臺(tái)的設(shè)計(jì),介紹了本文所采用的芯片S3C2440處理器。第四章TCP/IP協(xié)議概述4.1網(wǎng)絡(luò)分層結(jié)構(gòu)為了減少協(xié)議設(shè)計(jì)的復(fù)雜性,大多數(shù)網(wǎng)絡(luò)都按層(layer)或級(jí)(level)的方式來組織,每一層都建立在它的下層之上。不同的網(wǎng)絡(luò),其層的數(shù)量、各層的名字、內(nèi)容和功能都不盡相同。但在所有的網(wǎng)絡(luò)中,每一層的目的都是向它的上一層提供一定的服務(wù),而把如何實(shí)現(xiàn)這一服務(wù)的細(xì)節(jié)對(duì)上一層加以屏蔽。關(guān)于協(xié)議分層,有兩個(gè)思想占據(jù)了該領(lǐng)域的主導(dǎo)地位。第一個(gè)思路基于國(guó)際標(biāo)準(zhǔn)化組織ISO早期所做的工作,稱為ISO的OSI開放系統(tǒng)互聯(lián)參考模型(opensysteminterconnectionreferencemodel);第二個(gè)就是TCP/IP參考模型。4.1.1OSI七層參考模型圖4.1OSI七層網(wǎng)絡(luò)模型結(jié)構(gòu)OSI參考模型是關(guān)于如何把開放式系統(tǒng)(即為了與其他系統(tǒng)通信而相互開放的系統(tǒng))連接起來的。模型共有七層,現(xiàn)將其各主要功能分述如下:物理層(physicallayer):涉及到通信在信道上傳輸?shù)脑急忍亓?,主要處理機(jī)械的、電氣的和過程的接口,以及物理層下的物理傳輸介質(zhì)等問題。數(shù)據(jù)鏈路層(datalinklayer):主要任務(wù)是加強(qiáng)物理層傳輸原始比特的功能,使之對(duì)網(wǎng)絡(luò)層顯現(xiàn)為一條無錯(cuò)線路。傳輸以幀的格式實(shí)現(xiàn)。其中還有一個(gè)特殊的子層——介質(zhì)訪問子層,它主要控制對(duì)共享信道的訪問。網(wǎng)絡(luò)層(networklayer):關(guān)鍵問題是確定分組從源端到目的端如何選擇路由。傳輸層(transportlayer):基本功能是從會(huì)話層接收數(shù)據(jù),并且在必要時(shí)把它分成較小的單元,傳遞給網(wǎng)絡(luò)層,并確定到達(dá)對(duì)方的各段信息準(zhǔn)確無誤。通常會(huì)話層每請(qǐng)求建立一個(gè)傳輸連接,傳輸層就為其創(chuàng)造一個(gè)獨(dú)立的網(wǎng)絡(luò)連接。會(huì)話層(sessionlayer):允許不同機(jī)器上的用戶建立會(huì)話關(guān)系,其服務(wù)有管理對(duì)話、令牌管理、同步等。表示層(presentationlayer):完成某些特定的功能,如用一種大家一致同意的標(biāo)準(zhǔn)方法對(duì)數(shù)據(jù)編碼。應(yīng)用層(applicationlayer):包含大量人們普遍需要的協(xié)議,如文件傳輸。OSI模型的數(shù)據(jù)傳輸,是一個(gè)關(guān)鍵的概念,雖然數(shù)據(jù)的實(shí)際傳輸方向是垂直的,但每一層在編程時(shí)卻好像數(shù)據(jù)一直是水平傳輸?shù)摹?.1.2TCP/IP參考模型廣泛地講,TCP/IP軟件分成五個(gè)概念層次,建立在第五層上的是四個(gè)軟件層,圖4.2給出了這些概念性層次結(jié)構(gòu)以及在這些層次之間傳輸?shù)臄?shù)據(jù)形式。圖4.2TCP/IP網(wǎng)絡(luò)層次模型及各層之間傳輸數(shù)據(jù)形式應(yīng)用層(applicationlayer):在這個(gè)最高層,用戶調(diào)用應(yīng)用程序通過TCP/IP互聯(lián)網(wǎng)來訪問可用的服務(wù)。與各個(gè)運(yùn)輸層協(xié)議交互的應(yīng)用程序負(fù)責(zé)接受和發(fā)送數(shù)據(jù)。傳輸層(transportlayer):基本任務(wù)是提供應(yīng)用程序之間的通信服務(wù),這種通信又叫端到端通信。不但要系統(tǒng)地管理信息的流動(dòng),還要提供可靠的傳輸服務(wù),以確保數(shù)據(jù)到達(dá)無差錯(cuò),無亂序。網(wǎng)絡(luò)層(internetlayer):用來處理機(jī)器之間的通信問題。其傳輸格式表現(xiàn)為IP數(shù)據(jù)報(bào),還要根據(jù)需要發(fā)出和接受ICMP(Internet控制報(bào)文協(xié)議)差錯(cuò)和控制報(bào)文。網(wǎng)絡(luò)接口層(networkinterfacelayer):又稱數(shù)據(jù)鏈路層,負(fù)責(zé)接受IP數(shù)據(jù)報(bào)并把數(shù)據(jù)報(bào)通過選定的網(wǎng)絡(luò)發(fā)送出去。它包括一個(gè)設(shè)備驅(qū)動(dòng)程序,也可能包括一個(gè)復(fù)雜的子系統(tǒng),使用自己的數(shù)據(jù)鏈路協(xié)議,如以太網(wǎng)協(xié)議。4.2TCP/IP網(wǎng)絡(luò)協(xié)議TCP/IP網(wǎng)絡(luò)以一種自治和對(duì)等的方式操作,互聯(lián)的計(jì)算機(jī)都可以作為主機(jī)出現(xiàn),任一計(jì)算機(jī)的應(yīng)用都可以動(dòng)態(tài)地與對(duì)等計(jì)算機(jī)上的另一個(gè)應(yīng)用建立一個(gè)連接,而不需要中心控制服務(wù)器。對(duì)等網(wǎng)絡(luò)的主要優(yōu)點(diǎn)是允許網(wǎng)絡(luò)范圍內(nèi)的系統(tǒng)資源得到最大限度的共享。TCP/IP是一個(gè)網(wǎng)絡(luò)協(xié)議族,協(xié)議按上面所述不同的網(wǎng)絡(luò)層次進(jìn)行開發(fā),每一層分別復(fù)雜不同的通信功能,相應(yīng)的有不同的協(xié)議。TCP/IP協(xié)議的核心是TCP、UDP和IP協(xié)議。4.2.1嵌入式TCP/IP協(xié)議嵌入式系統(tǒng)與TCP/IP網(wǎng)絡(luò)的互聯(lián),這一技術(shù)在許多領(lǐng)域得以廣泛的應(yīng)用。但由于網(wǎng)絡(luò)協(xié)議的復(fù)雜性與嵌入式系統(tǒng)的MCU相對(duì)簡(jiǎn)單之間的矛盾,極大地制約了嵌入式系統(tǒng)實(shí)現(xiàn)網(wǎng)絡(luò)化的進(jìn)程。傳統(tǒng)的TCP/IP協(xié)議是以PC機(jī)、服務(wù)器為應(yīng)用平臺(tái)的,協(xié)議復(fù)雜,功能強(qiáng)大,面面俱到,而且沒有實(shí)時(shí)的概念,這種情況與嵌入式系統(tǒng)的要求是格格不入的。嵌入式TCP/IP協(xié)議即是從以滿足嵌入式系統(tǒng)的實(shí)際需求為目的這一指導(dǎo)思想出發(fā),建立在嵌入式Internet理論的基礎(chǔ)上,通過對(duì)龐大、功能齊全的TCP/IP協(xié)議的仔細(xì)研究,對(duì)標(biāo)準(zhǔn)的TCP/IP協(xié)議進(jìn)行了一定的取舍,從而制定出了一套簡(jiǎn)單的,適用于嵌入式系統(tǒng)的并且能完成相應(yīng)網(wǎng)絡(luò)功能的協(xié)議,稱為嵌入式TCP/IP協(xié)議。4.2.2IP協(xié)議IP協(xié)議位于網(wǎng)絡(luò)層,是TCP/IP協(xié)議族中最核心的協(xié)議,所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)包格式傳輸。IP是一個(gè)無連接和不可靠協(xié)議,不可靠的意思是它不能保證IP數(shù)據(jù)包能成功地到達(dá)目的地,IP僅提供最好的傳輸服務(wù),如果發(fā)生某種錯(cuò)誤,IP丟棄該數(shù)據(jù)包,然后發(fā)送ICMP消息包給信源端,任何要求的可靠性必須由上層來提供。無連接是指IP并不維護(hù)任何關(guān)于后續(xù)數(shù)據(jù)包的狀態(tài)信息每個(gè)數(shù)據(jù)包的處理是相互獨(dú)立的,即IP數(shù)據(jù)包可以不按發(fā)送順序接受。IP最終要的作用是將數(shù)據(jù)包裝成為目的機(jī)IP地址的數(shù)據(jù)包;另一個(gè)重要的作用是將一個(gè)過長(zhǎng)的數(shù)據(jù)包分解和重裝配;IP同樣也處理因數(shù)據(jù)包經(jīng)由ICMP而產(chǎn)生的傳輸問題;最后,IP規(guī)定網(wǎng)關(guān)設(shè)備如何處理數(shù)據(jù)包。4.2.3UDP/TCP協(xié)議UDP是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)包的運(yùn)輸層的協(xié)議。UDP和TCP都屬于IP上層的傳輸層協(xié)議,二者都使用端口號(hào)作為送往主機(jī)的解碼地址。UDP為維護(hù)數(shù)據(jù)包的整體性應(yīng)盡最大可能地選用校驗(yàn)。UDP數(shù)據(jù)包的可靠性是與IP相當(dāng)?shù)?,UDP客戶機(jī)向指定的遠(yuǎn)端主機(jī)發(fā)送數(shù)據(jù)包時(shí),并沒事先確認(rèn)對(duì)方是否做好了接收數(shù)據(jù)地準(zhǔn)備,所以,遠(yuǎn)端主機(jī)收到的數(shù)據(jù)包未能保證其正確的順序。但是由于TCP所傳數(shù)據(jù)流應(yīng)用了順序號(hào)和應(yīng)答措施,可以發(fā)現(xiàn)數(shù)據(jù)的丟失、段的失序和對(duì)傳輸錯(cuò)誤的排除,所以TCP協(xié)議提供的是數(shù)據(jù)流的可靠傳輸。端口號(hào)表示發(fā)送進(jìn)程和接受進(jìn)程。需要指出的是由于IP層已經(jīng)把IP數(shù)據(jù)包分配給TCP或UDP(根據(jù)IP首部中協(xié)議字節(jié)段值),因此TCP端口號(hào)由TCP來查看,而UDP端口號(hào)由UDP來查看,TCP和UDP的端口號(hào)是相互獨(dú)立的。4.2.4ARP協(xié)議ARP地址解析協(xié)議,它是一個(gè)隱藏底層網(wǎng)絡(luò)物理編址、允許給每臺(tái)機(jī)器分配一個(gè)任意IP地址的底層協(xié)議。ARP提供的是一種把IP地址映射到物理地址的機(jī)制。因此我們要了解IP和物理地址兩種編址形式:IP地址:互聯(lián)網(wǎng)上的每個(gè)接口必須有一個(gè)唯一的Internet地址(也稱IP地址),IP地址長(zhǎng)32bit。物理地址:該地址用來指明計(jì)算機(jī)所安裝的網(wǎng)卡的地址,網(wǎng)卡地址是由IEEE統(tǒng)一分配給網(wǎng)卡制造商的,每個(gè)網(wǎng)卡的地址在世界范圍內(nèi)是唯一的。所有的物理地址的MSB位的值為零,即48位網(wǎng)卡地址的最高位位“0”。以太網(wǎng)中所說的目的地址和源地址都是指物理地址。ARP是在源主機(jī)不知目的地址的前提下才需要的。協(xié)議的實(shí)現(xiàn)可以從兩個(gè)方面來考慮:一是發(fā)送方,在以太網(wǎng)幀的傳輸中是以物理地址為目的地址的,但在應(yīng)用層我們是以網(wǎng)絡(luò)的IP地址來操作的,當(dāng)給定一個(gè)目的站的IP地址時(shí),發(fā)送方軟件會(huì)查詢它的ARP緩存,看是否有從該IP地址到物理地址的映射,若有,則軟件提取該物理地址,把數(shù)據(jù)放到使用該地址的幀中,并發(fā)送該幀,若沒有,則軟件必須廣播一個(gè)ARP請(qǐng)求并等待應(yīng)答。從接收方考慮,如果網(wǎng)絡(luò)上過來的是ARP請(qǐng)求幀,則查看自己是否是請(qǐng)求的目標(biāo)(是否與自己的IP地址相符),如果符合則發(fā)送ARP應(yīng)答幀。本章小結(jié)本章介紹了TCP/IP協(xié)議以及相關(guān)協(xié)議,為下一章的網(wǎng)絡(luò)傳輸TCP/IP協(xié)議的設(shè)計(jì)做好理論基礎(chǔ)。第五章基于嵌入式系統(tǒng)的圖像網(wǎng)絡(luò)傳輸?shù)能浖O(shè)計(jì)本章是系統(tǒng)設(shè)計(jì)中的核心部分,包括系統(tǒng)實(shí)現(xiàn)多任務(wù)運(yùn)行的基礎(chǔ)——操作系統(tǒng)的移植,網(wǎng)絡(luò)功能的基礎(chǔ)——TCP/IP協(xié)議棧的設(shè)計(jì)。5.1Linux在ARM硬件平臺(tái)上的移植5.1.1移植環(huán)境1.硬件資源及連接一臺(tái)PC機(jī),ARM硬件平臺(tái),交叉串口連接線,交叉網(wǎng)線,USB連接線,5V穩(wěn)壓電源。用交叉串口連接線將開發(fā)板上的串口P1與PC機(jī)串口1相連;用交叉網(wǎng)線將CON3與PC機(jī)相連;用USB連接線將開發(fā)板與PC機(jī)相連;5V電源連接到開發(fā)板上。2.調(diào)試終端配置在PC機(jī)上DNW,在configuration中設(shè)置為:COM1,波特率為115200,8位,無奇偶位,停止位1,無硬件流。如下圖所示:圖5.1終端設(shè)置5.1.2建立交叉編譯環(huán)境交叉編譯是嵌入式開發(fā)過程中的一項(xiàng)重要技術(shù),它的主要特征是某機(jī)器中執(zhí)行的程序代碼不是在本機(jī)編譯生成,而是由另一臺(tái)機(jī)器編譯生成,一般把前者稱為目標(biāo)機(jī),后者稱為主機(jī)。嵌入式系統(tǒng)開發(fā)環(huán)境一般分成主機(jī)端(HOST)和目標(biāo)板(ATGRET)兩部分。目前一般采用的解決辦法是首先在通用計(jì)算機(jī)上編寫程序,通過交叉編譯生成目標(biāo)平臺(tái)上可運(yùn)行的二進(jìn)制代碼,再下載到目標(biāo)平臺(tái)上的特定位置上運(yùn)行。在主機(jī)端和目標(biāo)板之間需要通過某種方式進(jìn)行通信,如使用RS232串口。這種通信的目的在于發(fā)送控制指令和傳輸數(shù)據(jù),同時(shí)獲得反饋信息。采用交叉編譯的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過程使用,因而只好將編譯工程轉(zhuǎn)移到高性能的主機(jī)中進(jìn)行。Linux下的交叉編譯環(huán)境重要包括以下幾個(gè)部分:針對(duì)目標(biāo)系統(tǒng)的編譯器GCC;針對(duì)目標(biāo)系統(tǒng)的二進(jìn)制工具Binutils,包括ar,objcopy,strip工具集;目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)C庫Glibc;目標(biāo)系統(tǒng)的Linux內(nèi)核頭文件;GNUMake工具。可通過兩種方式建立ARMLinux交叉編譯環(huán)境:手動(dòng)方式和使用集成環(huán)境。因手動(dòng)方式比較繁瑣,這里只介紹使用集成環(huán)境建立方法。在Internet上我們可以得到一些整套的開放源碼嵌入式Linux開發(fā)工具,常用的有Denx公司的ELKD和TimeSys公司的TimesysLinux/GUN。這些工具鏈不僅包含了交叉編譯工具GCC、Binutils、GDB,而且包括可以直接使用的RAMDISKImage文件和文件系統(tǒng)制作工具等許多工具和元件。上述兩個(gè)集成交叉編譯環(huán)境都支持MIPS、PPC、ARM、x86、XScale等處理器。5.1.3BootLoaderBootLoader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。從操作系統(tǒng)的角度看,BootLoader的總目標(biāo)就是正確地調(diào)用內(nèi)核來執(zhí)行。1.BootLoader所支持的CPU和嵌入式板每種不同的CPU體系結(jié)構(gòu)都有不同的BootLoader。有些BootLoader也支持多種體系結(jié)構(gòu)的CPU,比如U-Boot就同時(shí)支持ARM體系結(jié)構(gòu)和MIPS體系結(jié)構(gòu)。除了依賴于CPU的體系結(jié)構(gòu)外,BootLoader實(shí)際上也依賴于具體的嵌入式板級(jí)設(shè)備的配置。這也就是說,對(duì)于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構(gòu)建的,要想讓運(yùn)行在一塊板子上的BootLoader程序也能運(yùn)行在另一塊板子上,通常也都需要修改BootLoader的源程序。2.BootLoader的安裝媒介(InstallationMedium)系統(tǒng)加電或復(fù)位后,所有的CPU通常都從某個(gè)由CPU制造商預(yù)先安排的地址上取指令。比如基于ARM920T的CPU在復(fù)位時(shí)通常都從地址0x00000000取它的第一條指令。而基于CPU構(gòu)建的嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲(chǔ)設(shè)備(比如:ROM、EEPROM或FLASH等)被映射到這個(gè)預(yù)先安排的地址上。以確保在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。3.用來控制BootLoader的設(shè)備或機(jī)制主機(jī)和目標(biāo)機(jī)之間一般通過串口建立連接,BootLoader軟件在執(zhí)行時(shí)通常會(huì)通過串口來進(jìn)行I/0,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。4.BootLoader的啟動(dòng)過程有單階段(SingleStage)和多階段(MultiStage)之分。通常多階段的BootLoader能提供更為復(fù)雜的功能,以及更好的可移植性。從固態(tài)存儲(chǔ)設(shè)備上啟動(dòng)的BootLoader大多都是2階段的啟動(dòng)過程,也即啟動(dòng)過程可以分為Stagel和Stage2兩部分。依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在Stagel中,而且通常都用匯編語言來實(shí)現(xiàn),以達(dá)到短小精悍的目的。而Stage2則通常用C語言來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)給復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和可移植性。5.BootLoader的操作模式(OperationMode)大多數(shù)BootLoader都包含兩種不同的操作模式:“啟動(dòng)加載”模式和“下載”模式,這種區(qū)別僅對(duì)于開發(fā)人員才有意義。但從最終用戶的角度看,BootLoader的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式與下載工作模式的區(qū)別。①啟動(dòng)加載(BootLoading)模式:這種模式也稱為“自主”(Autonomous)模式。也即BootLoader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時(shí)侯,BootLoader顯然必須工作在這種模式下。②下載(Downloading)模式:在這種模式下,目標(biāo)機(jī)上的BootLoader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被BootLoader寫到目標(biāo)機(jī)上的FLASH類固態(tài)存儲(chǔ)設(shè)備中。BootLoader的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用BootLoader的這種工作模式。工作于這種模式下的BootLoader通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。6.BootLoader與主機(jī)之間進(jìn)行文件傳輸所用的通信設(shè)備及協(xié)議最常見的情況就是,目標(biāo)機(jī)上的BootLoader通過串口與主機(jī)之間進(jìn)行文件傳輸,傳輸協(xié)議通常是xmodem/ymodem/zmodem協(xié)議中的一種。但是,串口傳輸?shù)乃俣仁怯邢薜?,因此通過以太網(wǎng)連接并借助TFTP協(xié)議來下載文件是個(gè)更好的選擇,但此時(shí)一般需要主機(jī)方提供相應(yīng)的軟件。比如,在通過以太網(wǎng)連接和TFTP協(xié)議來下載文件時(shí),主機(jī)方必須有一個(gè)軟件用來的提供TFTP服務(wù)。5.2燒寫和啟動(dòng)Linux以及Linux內(nèi)核編譯5.2.1燒寫Linux內(nèi)核(1)上電啟動(dòng)開發(fā)板,進(jìn)入BIOS界面。(2)USBDEVICE的連接線,選擇“1”,選擇USB下載,接著出現(xiàn)“Enteranewtemporarydownloadaddress:”的提示,在這個(gè)提示下輸入程序下載的地址,這里設(shè)置為0x32000000(不要與BIOS的地址0x30100000相沖突),同時(shí)要注意用USB下載要先在PC端裝好驅(qū)動(dòng)程序,保證USB連接好,有時(shí)PC端出現(xiàn)發(fā)現(xiàn)無法識(shí)別的USB設(shè)備時(shí),在BIOS中輸入ESC取消下載,等幾秒鐘后再輸入“1”啟動(dòng)USB下載。(3)點(diǎn)擊“USBPort”“Transmit”選項(xiàng),選擇zlmage(這個(gè)映像文件在光盤目錄的“目標(biāo)代碼”文件夾下),點(diǎn)擊“打開”,USB下載開始。下載結(jié)束后,會(huì)返回主功能菜單。(4)下載成功后,在出現(xiàn)主功能菜單后,選擇“4”,將出現(xiàn)提示,輸入“1”,在接下來的提示輸入“Y”,將zlmage燒寫到NANDFLASH的分區(qū)1中。燒寫成功后,會(huì)自動(dòng)進(jìn)入主功能菜單。5.2.2燒寫根文件系統(tǒng)(1)上電啟動(dòng)開發(fā)板,進(jìn)入BIOS界面。(2)USBDEVICE的連接線,選擇“1”,選擇USB下載,接著出現(xiàn)“Enteranewtemporarydownloadaddress:”的提示,在這個(gè)提示下輸入程序下載的地址,這里設(shè)置為0x32000000(不要與BIOS的地址0x30100000相沖突),同時(shí)要注意用USB下載要先在PC端裝好驅(qū)動(dòng)程序,保證USB連接好,有時(shí)PC端出現(xiàn)發(fā)現(xiàn)無法識(shí)別的USB設(shè)備時(shí),在BIOS中輸入ESC取消下載,等幾秒鐘后再輸入“1”啟動(dòng)USB下載。(3)當(dāng)USBDEVICE成功枚舉后,點(diǎn)擊“USBPort”“Transmit”選項(xiàng),選擇YLSBC2440_demo.cramfs(這個(gè)映像文件在光盤目錄的“目標(biāo)代碼”文件夾下)。(4)下載成功后,在出現(xiàn)主功能菜單后,選擇“4.WritefiletoNandFlash”進(jìn)行程序燒寫,在接下來的分區(qū)選擇中,選擇分區(qū)“2”,出現(xiàn)提示輸入后選擇“Y”(5)設(shè)置根文件系統(tǒng)分區(qū)位置參數(shù),這個(gè)參數(shù)主要是傳遞給內(nèi)核的,在主功能菜單中,選擇“7.Configparaments”進(jìn)入系統(tǒng)參數(shù)配置,接著選擇“7.rootfs”對(duì)Linux啟動(dòng)根目錄進(jìn)行配置,然后回車,在出現(xiàn)“pleaseentervalue:”提示下輸入“2”設(shè)置Linux根文件系統(tǒng)為2分區(qū),然后回車,然后再進(jìn)行一次回車或者選擇“15”退出,會(huì)提示“Doyouwanttosaveparameters?pressyorYforsave.”,這時(shí)輸入“Y”,這樣就將根文件系統(tǒng)所在的分區(qū)位置參數(shù)保存了。(6)設(shè)置LCD顯示參數(shù),因?yàn)樵诎遄拥腖CD標(biāo)準(zhǔn)配置是Sharp3.5。在BIOS的主功能菜單中,選擇“8.Configparaments”。接著選擇“14.Userpara”,然后回車,在“pleaseentervalue:”提示下輸入“display=shp240”,然后回車,在進(jìn)行一次回車或者選擇“15.Exit”退出,這是將提示“Doyouwanttosaveparameters?pressyorYforsave.”,接著輸入“Y”5.2.3啟動(dòng)Linux將Linux內(nèi)核和Linux根文件系統(tǒng)燒寫好之后,接下來就是啟動(dòng)Linux了,啟動(dòng)Linux有兩種方式:一種是通過BIOS的5號(hào)功能來啟動(dòng);另一種是設(shè)置Linux自啟動(dòng)。1.通過BIOS的5號(hào)功能來啟動(dòng)Linux。開發(fā)板進(jìn)入BIOS主功能菜單后,選擇“5”2.Linux自啟動(dòng)。進(jìn)入BIOS的主功能菜單后,選擇“7”對(duì)啟動(dòng)參數(shù)進(jìn)行設(shè)置,在接著出現(xiàn)的選項(xiàng)中輸入“0”進(jìn)行啟動(dòng)系統(tǒng)選擇設(shè)置,然后回車,在出現(xiàn)“pleaseentervalue:”的提示下,輸入“1”,然后回車,接著再進(jìn)行一次回車,將會(huì)提示“Doyouwanttosaveparameters?pressyorYforsave.”,這時(shí)輸入“5.2.4安裝編譯工具編譯嵌入式Linux內(nèi)核前,要先安裝交叉編譯工具toolchain,隨板光盤已附帶編譯工具。編譯工具cross-3.4.1.tar.bz2,安裝此編譯器只需要在/usr/local目錄下建一個(gè)arm的目錄,先將光盤目錄“Linux源碼和工具”下“toolchain”文件夾下的cross-3.4.1.tar.bz2拷貝到某個(gè)目錄下,然后進(jìn)入該目錄,執(zhí)行解包命令tarxjvfcross-3.4.1.tar.bz2即可,之后可編輯/etc/bashrc文件,在最后增加路徑exportPATH=/usr/local/arm/3.4.1/bin:$PATH,以后編譯內(nèi)核或其他應(yīng)用程序均可用arm-linux-來指定交叉編譯器??梢允褂胑cho$PATH來查看環(huán)境變量中是否有/usr/local/arm/3.4.1/bin路徑變量。5.2.5編譯內(nèi)核(1)解壓內(nèi)核包:先將光盤目錄的“Linux源碼和工具”的Linux內(nèi)核包拷貝到某個(gè)目錄下,進(jìn)入這個(gè)目錄,然后解壓這個(gè)Linux源碼包,命令為:Tarxjvflinux-2.3.12-2440.tar.bz2(2)編輯Makefile文件:進(jìn)入解壓的目錄后,運(yùn)行命令:vimakefile找到“CROSS_COMPILE=”這行,將它改為“CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-”(3)輸入命令:makemenuconfig,進(jìn)入配置欄的“LoadanAlternateConfigurationFile”,輸入配置文件名kernel_2440.cfg并回車,在主菜單里選擇Exit退出并保存設(shè)置。(4)接著輸入命令:makezlmage。(5)編譯結(jié)束后,可在arch/arm/boot目錄下得到linux內(nèi)核壓縮映像zlmage。5.2.6cramfs根文件系統(tǒng)的創(chuàng)建(1)將YLSBC2440_camare_demo.cramfs拷貝到任意目錄下。(2)在該目錄下建立兩個(gè)文件:mkdirromsmkdirtmp(3)將YLSBC2440_camare_demo.cramfs掛接到chang目錄:mountYLSBC2440_camare_demo.cramfs.roms-oloop(4)將roms目錄下的內(nèi)容壓縮:Tar-cvf1.tarroms這樣將在roms的上一級(jí)目錄產(chǎn)生一個(gè)1.tar的包。(5)將包解壓到tmp目錄下:umountromscd..mv1.tartmpcdtmptar-xvf1.tarrm1.tar(6)經(jīng)過上面的步驟就可以將自己的驅(qū)動(dòng)和應(yīng)用程序添加到cramfs根文件系統(tǒng)中了。進(jìn)入tmp目錄下的文件夾,在這個(gè)目錄下運(yùn)行命令:MkcramfstmpYL2440_demo_test.cramfs運(yùn)行成功后會(huì)在該目錄下生成YL2440_demo_test.cramfs根文件系統(tǒng)mkcramfs工具在光盤:Linux內(nèi)核源碼和工具\(yùn)toolchain下。(7)根文件系統(tǒng)制作成功后,就可以將YL2440_demo_test.cramfs燒寫到相應(yīng)的地方。5.3嵌入式TCP/IP協(xié)議棧的設(shè)計(jì)眾所周知,TCP/IP是一個(gè)協(xié)議族,它由幾百種網(wǎng)絡(luò)通信協(xié)議組成,這些協(xié)議用于組織計(jì)算機(jī)網(wǎng)絡(luò)中的數(shù)據(jù)通信。嵌入式系統(tǒng)是一種以應(yīng)用為核心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、功能穩(wěn)定的專用計(jì)算機(jī)系統(tǒng)。嵌入式TCP/IP協(xié)議棧其功能必定在嵌入式系統(tǒng)的定義范疇之內(nèi)。因此,嵌入式TCP/IP協(xié)議棧的功能是特定的,它不要求(也不可能)實(shí)現(xiàn)所有的TCP/IP協(xié)議,其實(shí)現(xiàn)的必定是TCP/IP族的一個(gè)子集?;谶@一思想,我們?cè)谠O(shè)計(jì)嵌入式TCP/IP協(xié)議棧時(shí)在TCP/IP協(xié)議的子集中實(shí)現(xiàn),降低設(shè)計(jì)的難度。由于系統(tǒng)資源有限,本文系統(tǒng)設(shè)計(jì)的協(xié)議棧的目標(biāo)是一個(gè)能實(shí)現(xiàn)所需功能的盡量精簡(jiǎn)的協(xié)議棧。本文系統(tǒng)中的ARP協(xié)議,IP協(xié)議及ICMP協(xié)議是TCP/IP協(xié)議棧最基本的也是必須的協(xié)議,對(duì)于傳輸層協(xié)議,本文系統(tǒng)的協(xié)議棧根據(jù)具體需要實(shí)現(xiàn)了UDP與TCP。UDP沒有保證可靠性的機(jī)制,沒有其他的關(guān)卡機(jī)制,得以實(shí)現(xiàn)全速地發(fā)送(即充分發(fā)揮物理通信設(shè)備的速度)。考慮到本論文設(shè)計(jì)的系統(tǒng)需要傳輸大量的圖像數(shù)據(jù),而圖像的傳送對(duì)實(shí)時(shí)性要求較高并且對(duì)于掉包不敏感,而由于在局域網(wǎng)環(huán)境下丟包錯(cuò)序的現(xiàn)象很少見,同時(shí)可以在應(yīng)用程序中適當(dāng)?shù)靥砑雍?jiǎn)單的控制機(jī)制對(duì)亂序進(jìn)行處理,系統(tǒng)中圖像數(shù)據(jù)的傳輸采用UDP具有更優(yōu)的效果。相對(duì)于UDP,TCP的可靠性是以許多復(fù)雜措施及由此而增加的開銷為代價(jià)換來的,TCP提供可靠的數(shù)據(jù)流,但處理的開銷較大,傳輸率有所降低。通過遠(yuǎn)程控制臺(tái)通過網(wǎng)絡(luò)對(duì)系統(tǒng)的工作進(jìn)行控制的過程具有數(shù)據(jù)量小,需要保證控制參數(shù)在發(fā)送與接受過程中的順序及內(nèi)容的嚴(yán)格正確的特點(diǎn),并且在一個(gè)完整的控制過程中的的交互當(dāng)中,雙方應(yīng)能了解對(duì)方當(dāng)前的狀態(tài),TCP的機(jī)制能有效地滿足這些要求,控制臺(tái)程序與圖像采集系統(tǒng)中的控制線程通過建立TCP連接進(jìn)行通信是很有必要的。圖5.2實(shí)現(xiàn)的TCP/IP協(xié)議棧中各協(xié)議的關(guān)系5.3.1ARP協(xié)議的實(shí)現(xiàn)ARP協(xié)議即地址解析協(xié)議,是將IP地址與網(wǎng)絡(luò)物理地址一一對(duì)應(yīng)的協(xié)議。在IPv4中地址長(zhǎng)度是32位,在以太網(wǎng)中,設(shè)備的地址是48位(即MAC地址)。一張ARP表,用來支持在MAC地址和IP地址之間的一一對(duì)應(yīng)關(guān)系。它提供兩者的相互轉(zhuǎn)換。主要流程為:當(dāng)傳送一個(gè)的包要傳向一個(gè)局域網(wǎng)的主機(jī)時(shí),當(dāng)它到達(dá)網(wǎng)關(guān)時(shí),網(wǎng)關(guān)要求ARP對(duì)應(yīng)程序找到物理主機(jī)或與IP地址相對(duì)應(yīng)的MAC地址,ARP對(duì)應(yīng)程序在緩存中尋找,如果找到地址,則提供此地址,以傳送到主機(jī),如果未找到,ARP對(duì)應(yīng)程序就在網(wǎng)上廣播一個(gè)特殊格式的消息,如果一臺(tái)機(jī)器發(fā)現(xiàn)是自己的IP地址,它就發(fā)送回應(yīng),這樣就指出了相應(yīng)的地址,ARP對(duì)應(yīng)程序更新自己的緩存并將此包送到回應(yīng)的MAC地址。程序設(shè)計(jì)時(shí)需要定義一個(gè)IP地址與以太網(wǎng)地址映射的表,在對(duì)方發(fā)送ARP請(qǐng)求包時(shí),可以從該映射表中讀取相應(yīng)的數(shù)據(jù)回復(fù)給對(duì)方,在接受到對(duì)方的ARP包時(shí)將對(duì)方的IP地址與以太網(wǎng)地址映射存儲(chǔ)到該表中,程序中通過兩個(gè)模塊ARPSend()和ARPReceive()來實(shí)現(xiàn)發(fā)送和接收ARP報(bào)文的功能。其中ARPReceive()程序設(shè)計(jì)框圖如下:圖5.3ARPReceive()程序設(shè)計(jì)框圖發(fā)送包模塊ARPSend()的處理流程較簡(jiǎn)單,先在映射表中查找有無相應(yīng)IP地址與MAC地址映射的項(xiàng),如果無則發(fā)送ARP請(qǐng)求包。5.3.2IP協(xié)議與ICMP協(xié)議的實(shí)現(xiàn)(1)IP協(xié)議。在IP協(xié)議的實(shí)現(xiàn)中,可以作以下的簡(jiǎn)述:即不接收分片包。分片包需要根據(jù)包頭中的一些信息進(jìn)行重組,這將會(huì)占用大量的存儲(chǔ)器空間與處理器資源,在系統(tǒng)資源比較緊張的情況下,可以考慮忽略。程序?qū)崿F(xiàn)IP協(xié)議,在接收到IP數(shù)據(jù)包,需要對(duì)包中攜帶的信息進(jìn)行檢查,根據(jù)這些信息分別做出丟棄該包的處理或者判斷該包中攜帶的數(shù)據(jù)由哪個(gè)處理程序進(jìn)行處理。對(duì)發(fā)送而言則相對(duì)簡(jiǎn)單,只需要對(duì)上層協(xié)議產(chǎn)生的包進(jìn)行封裝,加上一個(gè)IP包頭。在本系統(tǒng)中的設(shè)計(jì)中,實(shí)現(xiàn)IP層功能的模塊分別是負(fù)責(zé)IP包的發(fā)送的IPSend()模塊與接收處理的IPReceive()模塊。這兩個(gè)模塊的處理流程分別通過框圖來表示:圖5.4IPSend()流程框圖圖5.5IPReceive()流程框圖(2)ICMP協(xié)議。ICMP協(xié)議是作為IP上面的傳輸層實(shí)現(xiàn)的,但它與IP層緊密結(jié)合在一起,經(jīng)常被認(rèn)為是IP層的一個(gè)組成部分。ICMP傳遞差錯(cuò)報(bào)文以及其他需要注意的信息。ICMP報(bào)文通常被IP層或者跟高層協(xié)議使用。ICMP報(bào)文是被封裝在IP數(shù)據(jù)報(bào)中傳輸?shù)?,ICMP有許多種類型,對(duì)于一個(gè)只需要基本功能的精簡(jiǎn)的協(xié)議棧而言,只需要實(shí)現(xiàn)一個(gè)“回顯應(yīng)答”(PING)功能就可以了。實(shí)現(xiàn)ICMP協(xié)議主要通過模塊ICMPSend()和ICMPReceive()來實(shí)現(xiàn),ICMPReceive()對(duì)接收到的ICMP數(shù)據(jù)報(bào)進(jìn)行處理。如果類型字段是ECHO_REQUEST,就需要調(diào)用相關(guān)拷貝函數(shù)將該ICMP報(bào)文拷貝到發(fā)送緩沖區(qū),修改其類型字段和IP后返回;ICMPSend()只是簡(jiǎn)單地將包往下交給IP層。圖5.6ICMPReceive()流程框圖5.3.3TCP與UDP協(xié)議的實(shí)現(xiàn)用TCP協(xié)議傳輸?shù)乃^數(shù)據(jù)實(shí)際指的是數(shù)據(jù)流中的段,而用UDP協(xié)議傳輸?shù)乃^數(shù)據(jù)指的是數(shù)據(jù)報(bào)。TCP和UDP都屬于IP上層的傳輸層協(xié)議。二者都使用端口號(hào)作為送往主機(jī)的解碼地址。端口號(hào)由各個(gè)具體應(yīng)用所確定,同時(shí)使用多個(gè)端口號(hào)能完成“一機(jī)多網(wǎng)”的操作。每個(gè)UDP數(shù)據(jù)包和TCP數(shù)據(jù)段中都含源端口號(hào)和目的端口號(hào)。為接收遠(yuǎn)端的輸入而等待著執(zhí)行接入操作的主機(jī)是所謂的服務(wù)器,發(fā)起接入請(qǐng)求的主機(jī)就是所謂的客戶機(jī)。服務(wù)器為最常服務(wù)的應(yīng)用如FTP(文件傳輸協(xié)議)、Email和HTTP,分配了知名的端口號(hào)并對(duì)其進(jìn)行持續(xù)地監(jiān)聽。作為傳輸源的客戶機(jī)通常選擇隨機(jī)的端口號(hào),并向已分配了知名端口號(hào)的服務(wù)器發(fā)出接入請(qǐng)求??蛻魬?yīng)用所取的端口號(hào)應(yīng)大于1024,1024以下的端口號(hào)是為知名應(yīng)用而預(yù)留的。對(duì)于應(yīng)用程序中的每個(gè)TCP與UDP的套接口,系統(tǒng)維護(hù)兩個(gè)Socket鏈,分別對(duì)應(yīng)TCP與UDP,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)應(yīng)用程序正在使用的套接口,維護(hù)相關(guān)的必要信息,在一個(gè)新的套接口建立時(shí),關(guān)于該套接口的節(jié)點(diǎn)插入到Socket鏈的頭部,對(duì)于每個(gè)接收到的TCP報(bào)文或者UDP報(bào)文將通過遍歷相應(yīng)的Socket鏈來獲取必要信息及轉(zhuǎn)到相應(yīng)處理程序中,同樣在發(fā)送每個(gè)TCP報(bào)文或者UDP報(bào)文時(shí),同時(shí)需要根據(jù)對(duì)應(yīng)的Socket節(jié)點(diǎn)進(jìn)行一定的操作。(1)UDP協(xié)議在上文所描述的Socket鏈中每個(gè)UDP套接口的節(jié)點(diǎn)相關(guān)的數(shù)據(jù)結(jié)構(gòu)中需要包含:套接口的四元組字段;是否接收到提交到應(yīng)用程序的新數(shù)據(jù)和應(yīng)用程序是否有新數(shù)據(jù)發(fā)送的判斷字段;接收到的提交到應(yīng)用程序的數(shù)據(jù)的緩沖區(qū)首地址字段;從應(yīng)用程序中獲得的需要發(fā)送的數(shù)據(jù)的緩沖區(qū)首地址字段等必須的字段。(2)TCP協(xié)議在程序中實(shí)現(xiàn)這個(gè)狀態(tài)機(jī),需要為每個(gè)TCP連接維護(hù)其狀態(tài),在上文所描述的Socket鏈中每個(gè)TCP套接口的節(jié)點(diǎn)相關(guān)的數(shù)據(jù)結(jié)構(gòu)中需要包含:狀態(tài)字段;套接口的四元組字段;收發(fā)序號(hào)字段;是否接收到提交到應(yīng)用程序的新數(shù)據(jù)和應(yīng)用程序是否有新數(shù)據(jù)發(fā)送的判斷字段;接收到的提交到應(yīng)用程序的數(shù)據(jù)的緩沖區(qū)首地址字段;從應(yīng)用程序中獲得的需要發(fā)送的數(shù)據(jù)的緩沖區(qū)首地址字段等必要的元素以提供狀態(tài)機(jī)運(yùn)行時(shí)必須的信息,狀態(tài)機(jī)運(yùn)行時(shí)根據(jù)接收到的TCP包中的信息與對(duì)應(yīng)的Socket節(jié)點(diǎn)中的字段進(jìn)行比較并根據(jù)需要修改字段的內(nèi)容,發(fā)送包則直接更新對(duì)應(yīng)的Socket節(jié)點(diǎn)中的字段內(nèi)容。狀態(tài)機(jī)通過函數(shù)TCP_Handler來實(shí)現(xiàn),TCPHandler的實(shí)現(xiàn)流程如圖5.7所示,該函數(shù)對(duì)應(yīng)用程序透明。圖5.7TCPHandler函數(shù)流程圖程序提供的接口函數(shù)主要為:1.TCP_Open:主動(dòng)發(fā)起TCP連接;2.TCP_Listen:創(chuàng)建監(jiān)聽套接口;3.TCP_Send:發(fā)送數(shù)據(jù);4.TCP_Flush:發(fā)送緊急數(shù)據(jù);5.TCP_Close:關(guān)閉套接口。應(yīng)用程序通過調(diào)用這些函數(shù)來實(shí)現(xiàn)相應(yīng)的TCP相關(guān)的操作。實(shí)現(xiàn)了上述的協(xié)議,系統(tǒng)的基本網(wǎng)絡(luò)功能就構(gòu)架起來了,在這個(gè)基礎(chǔ)上圖像的傳輸以及接收控制臺(tái)的控制命令兩大功能可以得到實(shí)現(xiàn)。通過網(wǎng)關(guān)還可以接入公網(wǎng)。在本文實(shí)現(xiàn)的基本網(wǎng)絡(luò)功能的基礎(chǔ)上進(jìn)一步的工作可以考慮編寫PPP協(xié)議使設(shè)備直接接入公網(wǎng),以及編寫HTTP協(xié)議并通過CGI技術(shù)使得控制可以通過WEB來實(shí)現(xiàn)等。本章小結(jié)本章主要講述了將Linux內(nèi)核移植到ARM平臺(tái)的過程,第二章介紹了ARMS3C2440處理器的體系結(jié)構(gòu),本章在此基礎(chǔ)上給出了具體的開發(fā)環(huán)境并搭建了交叉編譯環(huán)境,進(jìn)行了燒寫和啟動(dòng)Linux,并進(jìn)行了Linux內(nèi)核的編

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論