八位單片機以太網(wǎng)接入研究與實現(xiàn)_第1頁
八位單片機以太網(wǎng)接入研究與實現(xiàn)_第2頁
八位單片機以太網(wǎng)接入研究與實現(xiàn)_第3頁
八位單片機以太網(wǎng)接入研究與實現(xiàn)_第4頁
八位單片機以太網(wǎng)接入研究與實現(xiàn)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、八位單片機以太網(wǎng)接入研究與實現(xiàn)第一章引言1.1嵌入式設(shè)備對互聯(lián)網(wǎng)接入的需求單片機或微處理器(MCU)已經(jīng)廣泛應(yīng)用于家庭和工業(yè)的各個領(lǐng)域。以單片機為核心,加上一些監(jiān)控、伺服和指示器件來實現(xiàn)一定的功能,一般稱為嵌入式系統(tǒng)。但是大多數(shù)嵌入式系統(tǒng)還處于個人應(yīng)用階段17。在一些工業(yè)應(yīng)用中,為了實現(xiàn)多個單片機之間的信息交換,可以使用CAN、RS-232、RS-485等總線將多個單片機聯(lián)網(wǎng)。但這種網(wǎng)絡(luò)的有效半徑相對有限,相關(guān)協(xié)議也很少,一般與互聯(lián)網(wǎng)隔絕。難以滿足復(fù)雜、遠(yuǎn)程(異地)、大規(guī)模測控任務(wù)的需求。近十年來,以互聯(lián)網(wǎng)為代表的網(wǎng)絡(luò)技術(shù)的出現(xiàn)及其與其他相關(guān)技術(shù)的結(jié)合,不僅開始將智能互聯(lián)網(wǎng)產(chǎn)品帶入現(xiàn)代生活,也

2、為遠(yuǎn)程測控技術(shù)帶來了前所未有的發(fā)展空間和機遇。網(wǎng)絡(luò)化測控技術(shù)和各種具有網(wǎng)絡(luò)功能的新型儀器應(yīng)運而生。目前,互聯(lián)網(wǎng)已經(jīng)成為社會最重要的基礎(chǔ)信息設(shè)施之一,成為信息流通的重要渠道。如果嵌入式系統(tǒng)可以連接到互聯(lián)網(wǎng)上,信息就可以方便而廉價地傳送到世界的任何一個角落。傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用是以PC為中心的,而當(dāng)代的互聯(lián)網(wǎng)應(yīng)用將轉(zhuǎn)向嵌入式設(shè)備。AI(Internet Appliance)概念的流行,標(biāo)志著互聯(lián)網(wǎng)及其應(yīng)用進(jìn)入了嵌入式、互聯(lián)網(wǎng)等時代。據(jù)網(wǎng)絡(luò)專家預(yù)測,未來互聯(lián)網(wǎng)上傳輸?shù)男畔⒂?0%來自小型嵌入式系統(tǒng)??梢灶A(yù)見,嵌入式設(shè)備與互聯(lián)網(wǎng)的結(jié)合代表了嵌入式系統(tǒng)和網(wǎng)絡(luò)技術(shù)的真正未來。1.2嵌入式設(shè)備互聯(lián)網(wǎng)接入的現(xiàn)有解

3、決方案用單片機實現(xiàn)嵌入式internet方案的技術(shù)難點在于如何利用單片機有限的資源,通過TCP/PI協(xié)議處理信息,使其能夠在Internet上傳輸ip包。為了解決這個技術(shù)問題,目前已經(jīng)出現(xiàn)了幾種方案:1.PCGateway+專網(wǎng):使用專網(wǎng)(如RS232、RS485、CAN總線等。)將少量的單片機連接在一起,然后將專網(wǎng)連接到一臺PC機上,pc機作為網(wǎng)關(guān),將專網(wǎng)上的信息轉(zhuǎn)換成TCP/IP包,再發(fā)送到互聯(lián)網(wǎng)上,實現(xiàn)信息共享。這種方案可以連接多種單片機,因為復(fù)雜的TCP/IP協(xié)議是由PC機實現(xiàn)的,所以對單片機的要求比較低。但是有以下缺點:A.它需要依靠PC作為協(xié)議轉(zhuǎn)換的網(wǎng)關(guān)。在多個單片機系統(tǒng)分散的情況

4、下,專網(wǎng)布線極為不便。B.需要在PC上安裝專門的協(xié)議轉(zhuǎn)換軟件,通常由專門的第三方軟件廠商提供,成本較高。2.32位MCU RTOS:采用32位高檔單片機,TR0S(實時多任務(wù)操作系統(tǒng))System)平臺進(jìn)行軟件開發(fā),在嵌入式系統(tǒng)中實現(xiàn)TCP/IP協(xié)議處理。由于收養(yǎng)高檔單片機,這個方案可以完成很多復(fù)雜的功能。然而,這種方案有以下缺點:A.高檔單片機價格昂貴,開發(fā)周期長。B.需要購買昂貴的RTOS開發(fā)軟件,對開發(fā)者的開發(fā)能力要求很高。3.TCP/IP ASIC:由于近年來互聯(lián)網(wǎng)和通信行業(yè)的快速發(fā)展,半導(dǎo)體制造商試圖將通信協(xié)議、互聯(lián)網(wǎng)協(xié)議、Ip和許多外圍設(shè)備集成到一個SOC(片上系統(tǒng))中。應(yīng)該說這種

5、方法是最直接最方便的上網(wǎng)方式。是目前國際上研究的熱點,也是未來家電等嵌入式設(shè)備上網(wǎng)的重要方向。但是這種方法在實現(xiàn)過程中存在很多問題,不能靈活配置系統(tǒng),不能根據(jù)應(yīng)用需求對系統(tǒng)進(jìn)行裁剪,并且因為芯片的加入增加了系統(tǒng)的成本。為了解決上述問題,可以用軟件來完成協(xié)議的處理功能。當(dāng)然,使用軟件來目前的硬件功能需要解決處理速度問題。同時,由于單片機采用軟件實現(xiàn)各種協(xié)議。處理,這樣以后在不改變硬件的情況下,只需要改變程序就可以升級整個嵌入式系統(tǒng)。系統(tǒng)的功能,是在各種協(xié)議層出不窮,頻繁升級的情況下,由SCENIX提出的?!肮柚熊浖钡母拍钜饬x重大。1.3嵌入式設(shè)備互聯(lián)網(wǎng)接入的底層硬件協(xié)議要實現(xiàn)小型嵌入式設(shè)備的互

6、聯(lián)網(wǎng)接入,TCP/PI首先要解決底層硬件問題,即協(xié)議的物理層。以太網(wǎng)有成熟的技術(shù)、低成本的網(wǎng)絡(luò)產(chǎn)品、豐富的開發(fā)工具和技術(shù)支持,可以研究和實現(xiàn)8位單片機以太網(wǎng)接入。當(dāng)現(xiàn)場總線的發(fā)展遇到障礙時,以太網(wǎng)控制網(wǎng)絡(luò)技術(shù)以其明顯的優(yōu)勢迅速發(fā)展,并逐漸形成了現(xiàn)場總線的新標(biāo)準(zhǔn)以太網(wǎng)。考慮到國內(nèi)大部分局域網(wǎng)都是以太網(wǎng),隨著交換網(wǎng)和寬帶網(wǎng)的發(fā)展,基于以太網(wǎng)的嵌入式設(shè)備接入互聯(lián)網(wǎng)具有現(xiàn)實意義。1.4本研究的能力從上面的分析可以看出,如何在單片機上實現(xiàn)TCP/IP協(xié)議站,是一個小型的嵌入式設(shè)備?;ヂ?lián)網(wǎng)接入問題的根源。目前8位單片機直接上網(wǎng)存在的問題有:1.小型嵌入式設(shè)備中的微控制器一般是簡單的控制器,其運算速度與系統(tǒng)

7、資源有限。2.TCP/IP協(xié)議在實時性方面不能滿足嵌入式應(yīng)用的實時性要求。因此,目前嵌入式設(shè)備直接上網(wǎng)軟件要解決的關(guān)鍵技術(shù)是TCP/IP協(xié)議的簡化和實時性改進(jìn)。本文討論了在小型嵌入式設(shè)備中實現(xiàn)網(wǎng)絡(luò)通信的技術(shù)難點,并對在嵌入式環(huán)境中實現(xiàn)網(wǎng)絡(luò)通信的TCP/IP協(xié)議族進(jìn)行了闡述和分析。在此基礎(chǔ)上,設(shè)計了一個簡單的網(wǎng)絡(luò)單片機數(shù)據(jù)通信系統(tǒng),利用51MCU、以太網(wǎng)接口芯片及相關(guān)外圍接口電路實現(xiàn)了系統(tǒng)的硬件架構(gòu)。在軟件上,根據(jù)8位單片機有限的資源(ROM、RAM和外設(shè)接口),對TCP/PI協(xié)議族進(jìn)行了簡化,使其可以運行在8位單片機上,滿足客戶端的請求,實現(xiàn)遠(yuǎn)程數(shù)據(jù)采集、傳輸和控制。1.5本文的主要內(nèi)容第一章

8、簡要介紹了本研究的價值和主要內(nèi)容。第二章主要討論了TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)和嵌入式設(shè)備接入互聯(lián)網(wǎng)的特點。第三章詳細(xì)分析了TCP/IP協(xié)議,詳細(xì)介紹了互聯(lián)網(wǎng)協(xié)議PI、用戶數(shù)據(jù)報協(xié)議UDP、互聯(lián)網(wǎng)控制消息協(xié)議CIMP和地址解析協(xié)議ARP的協(xié)議功能和消息格式。第四章重點介紹了系統(tǒng)的硬件結(jié)構(gòu)以及各組成部分的特點和功能。給出了單片機與以太網(wǎng)控制芯片DMgO00的接口方案。第五章是本系統(tǒng)的軟件實現(xiàn)。本章提出了系統(tǒng)的總體程序設(shè)計思想,詳細(xì)介紹了各功能模塊的軟件設(shè)計方法,包括DM9000驅(qū)動程序設(shè)計、ARP模塊設(shè)計、IP模塊設(shè)計、ICMP模塊設(shè)計、UDP模塊設(shè)計和上位機程序設(shè)計。第六章總結(jié)了本文的主要內(nèi)容,并

9、提出了本系統(tǒng)下一步的改進(jìn)方法。1.6本章概述本章從嵌入式設(shè)備上網(wǎng)的需求入手,討論了現(xiàn)有嵌入式設(shè)備上網(wǎng)解決方案的不足,提出了解決方案,并介紹了本文所做的主要研究工作。第二章嵌入式設(shè)備互聯(lián)網(wǎng)接入實現(xiàn)的特點2.1TCP/PI網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)架構(gòu)在網(wǎng)絡(luò)發(fā)展初期,不同的計算機和網(wǎng)絡(luò)廠商設(shè)計了各自的網(wǎng)絡(luò)架構(gòu),使得不同的網(wǎng)絡(luò)設(shè)備難以互聯(lián)互通,互聯(lián)網(wǎng)絡(luò)的性能難以保證,網(wǎng)絡(luò)建設(shè)成本非常高。廣大用戶強烈要求一個便宜、靈活、方便的組網(wǎng)方案。面對這種需求,國際標(biāo)準(zhǔn)化組織(150)于1983年提出了開放系統(tǒng)互連(051)網(wǎng)絡(luò)架構(gòu)框架,即150/051參考模型,如圖2.1所示31。50/051開放式網(wǎng)絡(luò)架構(gòu)在理論上的指導(dǎo)作用

10、大于實際應(yīng)用。目前廣泛使用的網(wǎng)絡(luò)架構(gòu)是TCP/PI,但150/051開放網(wǎng)絡(luò)架構(gòu)描述了一個指導(dǎo)網(wǎng)絡(luò)互聯(lián)的理想框架和藍(lán)圖,需要探索和實現(xiàn)。其具體特征如下6。(1)描述了實現(xiàn)異構(gòu)系統(tǒng)互連的層次結(jié)構(gòu)。(2)提供了控制互聯(lián)系統(tǒng)交互規(guī)則的標(biāo)準(zhǔn)框架。(3)定義了一個抽象的結(jié)構(gòu),而不是對具體實現(xiàn)的描述。(4)同級實體(指能夠發(fā)送和接收信息的軟件和設(shè)備,如終端、程序、數(shù)據(jù)庫、電子系統(tǒng)等之間的通信。)由這一層的協(xié)議來管理和實現(xiàn)。(5)規(guī)定每層只完成定義的功能,修改本層功能對其他層沒有影響。(6)定義相鄰層之間的界面。(7)規(guī)定在最底層(物理層)實現(xiàn)直接數(shù)據(jù)傳輸。(8)通信網(wǎng)絡(luò)只涉及第一層到第三層,如網(wǎng)絡(luò)層涉及的

11、路由器、數(shù)據(jù)鏈路層涉及的網(wǎng)橋、物理層涉及的中繼器、第四至第六層涉及的網(wǎng)關(guān),屬于高級協(xié)議轉(zhuǎn)換設(shè)備。ISO/OSI網(wǎng)絡(luò)的體系結(jié)構(gòu)是開放的。所謂“開放性”,就是任何符合參考模型和相關(guān)標(biāo)準(zhǔn)的系統(tǒng)都可以互聯(lián)互通。ISO/OSI參考模型只定義了各層的功能,沒有定義各層的具體實現(xiàn)協(xié)議。其協(xié)議由其他標(biāo)準(zhǔn)定義,充分體現(xiàn)了該模型的靈活性和前瞻性。ISO/OSI分層模塊化/結(jié)構(gòu)化網(wǎng)絡(luò)設(shè)計思想完整清晰,對計算機網(wǎng)絡(luò)和其他網(wǎng)絡(luò)的發(fā)展具有非常重要的指導(dǎo)意義。TCP/IP網(wǎng)絡(luò)架構(gòu)OSI模型是一種通用的、標(biāo)準(zhǔn)的理論模型。當(dāng)今市場上沒有一種流行的網(wǎng)絡(luò)協(xié)議完全符合OSI模型,TCP/PI也不例外。TCP/IP協(xié)議族有自己的模型,

12、稱為TCP/IP協(xié)議棧,也稱為DOD模型(國防部)31,如圖2.2 7所示。1.應(yīng)用層應(yīng)用層主要為用戶提供一套常用的應(yīng)用程序,如文件傳輸訪問、電子等。嚴(yán)格來說,TCP/IP網(wǎng)間協(xié)議只包含下三層(不包括硬件),應(yīng)用程序不能被認(rèn)為是TCP/IP協(xié)議的一部分。就是上面提到的常見應(yīng)用,TCP/IP制定了相應(yīng)的協(xié)議標(biāo)準(zhǔn),所以它們也作為TCP/IP的內(nèi)容。事實上,用戶可以在互聯(lián)網(wǎng)上(即在傳輸層)建立自己的專用應(yīng)用程序。這些專用應(yīng)用程序使用TCP/IP,但不屬于TCP/IP。2.傳輸層傳輸層提供應(yīng)用程序之間的通信(即端到端),其功能包括:格式化信息流,為了提供可靠的傳輸,接收器必須確認(rèn)接收,否則將重新傳輸。

13、傳輸層必須解決識別不同的應(yīng)用程序,因為經(jīng)常有多個程序同時訪問互聯(lián)網(wǎng)。區(qū)分應(yīng)用程序程序時,傳輸層會在每個數(shù)據(jù)包中添加標(biāo)識源應(yīng)用程序和目的應(yīng)用程序的信息。此外,傳輸層每個數(shù)據(jù)包都有一個校驗和,接收方用它來檢查接收到的數(shù)據(jù)包的正確性。3.互聯(lián)網(wǎng)層互聯(lián)網(wǎng)層負(fù)責(zé)相鄰計算機之間的通信。它的功能包括三個方面:一是處理來自傳輸層的包發(fā)送請求。收到請求后,它將數(shù)據(jù)包裝入Pl數(shù)據(jù)報,填充報頭,選擇到目的計算機的路徑,然后將數(shù)據(jù)報發(fā)送到適當(dāng)?shù)木W(wǎng)絡(luò)接口。第二,處理輸入數(shù)據(jù)報。首先,檢查其合法性,然后執(zhí)行路由。如果數(shù)據(jù)報已到達(dá)目的地,則刪除報頭,并將其余部分(傳輸層數(shù)據(jù)包)交給適當(dāng)?shù)膫鬏攨f(xié)議。如果數(shù)據(jù)報沒有到達(dá)目的地,

14、請轉(zhuǎn)發(fā)它。第三,處理CIMP消息,處理路徑、流量控制、擁塞等問題。4.網(wǎng)絡(luò)接口層網(wǎng)絡(luò)接口層是TCP/IP協(xié)議的最底層,負(fù)責(zé)接收PI數(shù)據(jù)報并通過網(wǎng)絡(luò)發(fā)送,或者從網(wǎng)絡(luò)接收數(shù)據(jù)幀,提取Pl數(shù)據(jù)報并交給Pl層。網(wǎng)絡(luò)接口層定義了互聯(lián)網(wǎng)和各種物理網(wǎng)絡(luò)之間的網(wǎng)絡(luò)接口。有兩種類型的網(wǎng)絡(luò)接口,第一種是設(shè)備驅(qū)動程序(如局域網(wǎng)網(wǎng)絡(luò)接口),第二種是一個復(fù)雜的子系統(tǒng),有自己的數(shù)據(jù)鏈路協(xié)議。2.2總線以太網(wǎng)和802.3標(biāo)準(zhǔn)2.21總線以太網(wǎng)技術(shù)以太網(wǎng)是基于總線的廣播網(wǎng)絡(luò)。在現(xiàn)有的局域網(wǎng)標(biāo)準(zhǔn)中,它是最成功的局域網(wǎng)技術(shù),也是目前應(yīng)用最廣泛的局域網(wǎng)。它是由施樂公司的PARC在20世紀(jì)70年代早期發(fā)明的。以太網(wǎng)傳輸介質(zhì)從同軸電纜

15、(粗電纜和細(xì)電纜)和雙絞線到光纖。現(xiàn)在常用的雙絞線以太網(wǎng)工作在10Mbps,1000Mbps,1000Mbps。它用八根線(四根雙絞線)將每個以太網(wǎng)設(shè)備連接到以太網(wǎng)集線器或交換機。集線器是一種模擬以太網(wǎng)電纜信號的電子設(shè)備。集線器和以太網(wǎng)設(shè)備之間的連接長度必須小于?,F(xiàn)在的以太網(wǎng)已經(jīng)發(fā)展到千兆以太網(wǎng),速度越來越快。但從技術(shù)上講,以太網(wǎng)是基于CSMA/CD(載波偵聽多路訪問/沖突檢測)機制的。CSMA/CD是一種具有沖突檢測(CD)功能的載波偵聽多路訪問(CSMA)媒體訪問控制方法,廣泛應(yīng)用于局域網(wǎng)的MAC子層,是EIEE80.23的核心協(xié)議。CSMA/CD主要用于解決如何競爭一個廣播共享傳輸信道,

16、它可以決定誰應(yīng)該占用該信道。當(dāng)一個站開始傳輸數(shù)據(jù)包時,信號不會同時到達(dá)網(wǎng)絡(luò)的所有部分,因此兩個收發(fā)器可能同時檢測到網(wǎng)絡(luò)空閑并同時開始傳輸。當(dāng)這兩個電信號相遇時,它們混合在一起,每個信號都失去了意義。這種事件叫做碰撞。在以太網(wǎng)的基帶傳輸中,以太網(wǎng)以巧妙的方式處理沖突。每個收發(fā)器在傳輸過程中監(jiān)控電纜,查看外部信號是否干擾其傳輸。從技術(shù)上講,這種監(jiān)控稱為沖突檢測CD,它使以太網(wǎng)成為CSMA/CD網(wǎng)絡(luò)。當(dāng)檢測到?jīng)_突時,主機接口會放棄此傳輸,等待活動停止,并嘗試再次傳輸3。CSMA/光盤的工作流程如下12:(1)準(zhǔn)備發(fā)送站監(jiān)聽信道。(2)當(dāng)信道空閑時,進(jìn)入步驟(4),開始發(fā)送數(shù)據(jù),監(jiān)聽沖突信號。(3)如

17、果信道忙,返回步驟(1)。(4)傳輸數(shù)據(jù)并監(jiān)聽信道,如果沒有沖突,完成傳輸,如果有沖突,轉(zhuǎn)到步驟(5)。(5)發(fā)送阻塞信號,然后按照二進(jìn)制指數(shù)退避策略等待,然后返回步驟(1)準(zhǔn)備重新發(fā)送。2.2.2以太網(wǎng)物理傳輸幀封裝格式這些字段解釋如下:同步位-用于發(fā)送方和接收方之間的時鐘同步,由NIC控制器自動添加。位分隔-表示以下是真實數(shù)據(jù),由NIC控制器自動添加。地址指接收端的物理地址,48位。源地址指發(fā)送方的物理地址,48位。type-表示幀數(shù)據(jù)是什么類型的數(shù)據(jù),不同協(xié)議的類型不同。段-指發(fā)送的數(shù)據(jù),不能大于1500字節(jié)。填充位-這意味著如果以太網(wǎng)傳輸?shù)臄?shù)據(jù)包小于46字節(jié),則應(yīng)該填充0。FCS-校驗

18、位,4字節(jié),由芯片自動產(chǎn)生。所有數(shù)據(jù)位從低位傳輸,以太網(wǎng)的沖突避免算法由硬件自動執(zhí)行。2.23以太網(wǎng)數(shù)據(jù)傳輸過程當(dāng)以太網(wǎng)點的信息幀被發(fā)送到共享信道或介質(zhì)時。連接到通道的所有以太網(wǎng)接口都會讀取幀,并檢查幀的第一個48位地址字段,其中包含目的地址。每個接口將幀的目的地址與其自身的48位地址進(jìn)行比較。如果地址與幀中的目的地址相同,以太網(wǎng)點將繼續(xù)讀取整個幀,并發(fā)送給運行在計算機上的上層網(wǎng)絡(luò)軟件。上層網(wǎng)絡(luò)軟件讀取幀的類型字段,判斷信息幀是ARP包還是IP包,然后交給不同的協(xié)議棧處理。當(dāng)其他網(wǎng)絡(luò)接口發(fā)現(xiàn)目的地址與它們的地址不同時,它們將停止讀取信息幀。2.3嵌入式設(shè)備上網(wǎng)的特點嵌入式系統(tǒng)中的微處理器,無論

19、速度如何,都離RAM和rom的資源很遠(yuǎn)。PC機功能強大,但嵌入式系統(tǒng)接入互聯(lián)網(wǎng)需要解決的主要問題是:在8位單片機上實現(xiàn)復(fù)雜的TCP/IP協(xié)議族,解決數(shù)據(jù)封裝、解包、編碼、解碼和數(shù)據(jù)傳輸。另外,微處理器除了完成這些任務(wù)外,還控制一些設(shè)備完成特定的測控任務(wù),嵌入式系統(tǒng)的成本應(yīng)該不會太高。而完整的TCP/IP協(xié)議族消耗了大量的系統(tǒng)資源,嵌入式系統(tǒng)的網(wǎng)絡(luò)傳輸和數(shù)據(jù)采集任務(wù)相對簡單,所以不需要嵌入完整的TCP/IP協(xié)議族,只需嵌入TCP/IP最精簡的內(nèi)核和得到的協(xié)議即可。例如,如果系統(tǒng)中不使用HITP協(xié)議,而只使用較低層的TCP和UDP協(xié)議,則可以去掉這些協(xié)議,只保留較低層的協(xié)議,這樣去掉不必要的協(xié)議可

20、以大大簡化核心,從而節(jié)省系統(tǒng)資源,降低成本。另外,為了減輕MCU的負(fù)擔(dān),底層最好選擇現(xiàn)成的網(wǎng)絡(luò)接口芯片來完成內(nèi)容。管理幀形成、接收、驗證、編碼、解碼等任務(wù)。這樣,單片機就可以把主要時間花在在數(shù)據(jù)采集和過程控制中,利用現(xiàn)成的接口芯片,降低了成本,縮短了開發(fā)時間。降低開發(fā)成本。2.4單片機和計算機的TCP/IP協(xié)議實現(xiàn)不同。它和單片機有很大的區(qū)別,兩者之間的TCP/PI實現(xiàn)也有很大的不同。在計算機中編寫TCP/PI程序時,可以忽略代碼大小和代碼速度,但這些都是單片機要考慮的問題。一般來說,TCP/PI的單片機實現(xiàn)和計算機實現(xiàn)有以下區(qū)別:(1)操作系統(tǒng)。無論是Windows、Unix還是Linux,

21、都有一個多任務(wù)操作。系統(tǒng),使得代碼編寫簡單,而在單片機上,由于資源的原因,多任務(wù)操作被使用。系統(tǒng)實現(xiàn)難度更大,使得代碼結(jié)構(gòu)變成順序執(zhí)行+硬件中斷的方式,但在計算機中可以并發(fā)執(zhí)行。對于程序執(zhí)行結(jié)構(gòu),MCU要考慮更多。(2)存款和分配。windows或UNIX的存儲和分配是動態(tài)的,可以根據(jù)需要隨時進(jìn)行分配。隨時撤銷。但是在單片機里做不到。最大的以太網(wǎng)數(shù)據(jù)幀有1500多個字節(jié),分配一幀的緩沖區(qū)需要1.5K字節(jié),而單片機的RAM要供各種協(xié)議使用,而不僅僅是存儲接收到的數(shù)據(jù)包。因此,需要分配RAM的固定空間來存儲接收到的來自華東的8位單片機以太網(wǎng)接入研究與實現(xiàn)以太網(wǎng)數(shù)據(jù)包。一收到包裹就處理它。在MCU中

22、,用于存儲接收到的以太網(wǎng)數(shù)據(jù)包的RAM是固定的,而不是動態(tài)分配的。(3)指針。MCU中的指針有幾種:a .指向外部RAM的指針,例如uchar xdata *p使用指令movedptr占用兩個字節(jié);b .指向程序ROM的指針,例如uchar code *p使用指令move占用兩個字節(jié);e指向部門RAM的指針,例如uchar data *p使用指令movri占用一個字節(jié);d .指向外部RAM的分頁指針,例如uchar xdata *p使用指令movri占用一個字節(jié);e指針,可以指向上面任何一個,占用三個字節(jié)。在計算機中,所有的程序都必須放在RAM中才能運行,所以它的指針只有一種指向RAM的方式。

23、單片機的結(jié)構(gòu)與計算機的結(jié)構(gòu)有很大的不同。指針的種類很多,指針操作的速度也不一樣。由于第五種指針“通用指針”運行速度慢,同時占用大量程序空間,所以在MCU中一般需要少用指針或者使用特定類型的指針18。(4)參數(shù)傳遞。在計算機實現(xiàn)的TCP/IP源代碼中,通常傳輸?shù)膮?shù)很多,而單片機中允許傳輸?shù)膮?shù)是有限的(因為RAM的限制),參數(shù)是同時傳輸?shù)摹=桓兜倪^程浪費了代碼空間,降低了單片機的執(zhí)行速度。因此,在單片機的實現(xiàn)中,一般不能傳遞太多的參數(shù),而是使用常用的全局變量來實現(xiàn)調(diào)用過程。這樣的,計算機的源程序是相對獨立的,受其他函數(shù)或變量的影響很小,而且是單芯片的電腦中的程序相互之間非常依賴。因為某個數(shù)據(jù)和

24、某個變量在一個單片機里往往是共享的18。(5)協(xié)議支持。一個完整的TCP/PI協(xié)議在一臺計算機上可以支持,但在單片機上做不到。這是因為單片機根本沒有足夠的代碼空間來支持這些協(xié)議。與需求相關(guān)的部分一般在單片機中實現(xiàn),不用的協(xié)議一般不嵌入。一般只能在單片機中實現(xiàn):ARP,ip,ICMP,TCP DP,而更高層的協(xié)議,如:,一般不需要嵌入SMTP和TFP。單片機應(yīng)用的TCP/PI協(xié)議多用于完成數(shù)據(jù)采集和數(shù)據(jù)傳輸,而不是網(wǎng)頁瀏覽和文件傳輸。就某個協(xié)議來說,比如ARP協(xié)議,UNIX系統(tǒng)支持以太網(wǎng)、令牌環(huán)等網(wǎng)絡(luò)的ARP。在這個系統(tǒng)中,單片機只支持以太網(wǎng),也就是說,可以簡化某種協(xié)議。IP包最大可以考慮65K

25、,可以分段傳輸,但是單片機中容納不了這么大的數(shù)據(jù)包,一般不支持分段。一般MCU發(fā)送小數(shù)據(jù)包是為了避免分段。(6)使用UDP或TCP。與UDP相比,TCP的可靠性取決于許多復(fù)雜的措施。而成本的增加是以犧牲為代價的。UDP本身沒有連通性,不可靠,但是對傳輸速率沒有阻礙。阻隔,適合數(shù)據(jù)率小的應(yīng)用;TCP提供可靠的數(shù)據(jù)流,但是處理成本高,從而降低了傳輸速率。UDP不可靠,不能簡化,以至于被誤解。真正使用UDP的時候,會是通常需要在應(yīng)用層添加代碼來提高UDP的可靠性。嵌入式設(shè)計師經(jīng)常會面對很多工具。系統(tǒng)的特殊要求,比如代碼不能很長,或者傳輸速率是關(guān)鍵,或者可靠性最重要等等。,需要非常很好的分析和妥協(xié)???/p>

26、慮到單片機運行速度慢,數(shù)據(jù)量小,使用UDP。作為單片機應(yīng)用的傳輸控制層協(xié)議,可以在應(yīng)用層添加相應(yīng)的可靠性代碼。滿足測控應(yīng)用的要求。(7)硬件接口。在電腦中,網(wǎng)卡的驅(qū)動相對簡單,但在單片機中要處理的事情更多。比如緩沖區(qū)溢出,電腦里有些程序根本不處理溢出代碼。因為電腦運行速度快,網(wǎng)卡緩沖區(qū)溢出的情況幾乎不會發(fā)生。計算機經(jīng)常使用即插即用模式驅(qū)動網(wǎng)卡,而單片機不能,因為即插即用需要大量代碼來實現(xiàn),一般使用跳線模式。電腦中一般用16位DMA驅(qū)動NE2000網(wǎng)卡,但8位單片機只能用8位DMA。2.5本章概述本章介紹了TCP/PI的網(wǎng)絡(luò)體系結(jié)構(gòu),重點介紹了嵌入式設(shè)備接入互聯(lián)網(wǎng)的特點,并簡要說明了以太網(wǎng)80.

27、23標(biāo)準(zhǔn)。第三章TCP/IP協(xié)議分析3.1 TCP/IP協(xié)議的封裝和共享TCP/IP協(xié)議采用分層結(jié)構(gòu),其實現(xiàn)也采用分層實現(xiàn)方法。在實現(xiàn)的過程中,首先要了解封裝和解復(fù)用的概念。包裝當(dāng)應(yīng)用程序使用UDP傳輸數(shù)據(jù)時,數(shù)據(jù)被發(fā)送到協(xié)議棧,然后通過每一層,直到作為一串比特流被發(fā)送到網(wǎng)絡(luò)。每一層都會在接收到的數(shù)據(jù)中添加一些報頭信息(有時是尾部信息)。這個過程稱為封裝。2sI如圖3.1。UDP傳輸?shù)臄?shù)據(jù)單元簡稱UDP段或UDP段。通過IP傳輸?shù)骄W(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱為PI數(shù)據(jù)報。通過以太網(wǎng)傳輸?shù)谋忍亓饕卜Q為幀。分享當(dāng)目的主機接收到一個以太網(wǎng)數(shù)據(jù)幀時,數(shù)據(jù)從協(xié)議棧底層開始上升,同時去除各層協(xié)議添加的報文頭。以

28、太網(wǎng)幀應(yīng)該檢查報頭中的幀類型字段,IP應(yīng)該檢查報頭中的協(xié)議值字段,TCP和UDP應(yīng)該檢查報頭中的端口號字段,以確定數(shù)據(jù)屬于哪一層。這個過程被稱為多路分解。如圖3.2 25所示:3.2TCP/PI協(xié)議分析3.21單片機的TCP/IP體系結(jié)構(gòu)如前所述,TCP/PI協(xié)議是一個協(xié)議家族,協(xié)議種類繁多。圖3.3顯示了本文研究的協(xié)議以及它們之間的關(guān)系3334。TCP和UDP是最著名的兩種傳輸層協(xié)議,它們都使用IP作為網(wǎng)絡(luò)層協(xié)議。TCP使用不可靠的PI服務(wù),但它提供可靠的傳輸層服務(wù)。UDP是一個應(yīng)用程序。以及發(fā)送和接收數(shù)據(jù)報。與TCP不同,UDP是不可靠的,它不能保證數(shù)據(jù)報的安全性。無誤地到達(dá)目的地。PI是

29、網(wǎng)絡(luò)層的主要協(xié)議,同時被TCP和UDP使用。三氯苯酚UDP和UDP的每組數(shù)據(jù)通過端系統(tǒng)和每個中間路由器中的PI層在互聯(lián)網(wǎng)中傳輸。輸了。CIMP是PI協(xié)議的附屬協(xié)議,IP層使用它與其它主機或路由器交換錯誤消息。和其他重要信息。以太網(wǎng)使用ARP協(xié)議來轉(zhuǎn)換PI層和網(wǎng)絡(luò)接口層使用的地址。3.22互聯(lián)網(wǎng)協(xié)議IP1.1的結(jié)構(gòu)?;ヂ?lián)網(wǎng)協(xié)議(Internet Protocol)IP TCP/IP協(xié)議族是核心協(xié)議。的所有TCP、UDP、ICMP和IGMP所有數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸。IP報頭結(jié)構(gòu)中的數(shù)據(jù)定義了IP的功能。IP數(shù)據(jù)報的格式如表3-1所示314147。普通IP報頭長度為20字節(jié),除了非可選字段。這

30、些字段解釋如下:版本-IP頭中的前4位標(biāo)識IP的運行版本,當(dāng)前協(xié)議版本號為4,因此在使用IP時也稱為IPv4。報頭長度-指報頭中32位字的數(shù)量,包括任何選項。因為它是4位字段,所以最長的報頭是60字節(jié)。公共IP數(shù)據(jù)報(沒有任何選項)的字段是5。服務(wù)類型-包括一系列標(biāo)志,可以保證優(yōu)先級、延遲和吞吐量與消息數(shù)量的可靠性參數(shù)。本條為通用服務(wù),4位均為0。總長度字段-指整個IP數(shù)據(jù)報的長度,以字節(jié)為單位。標(biāo)志字段和片偏移一對一標(biāo)識字段唯一地標(biāo)識由主機發(fā)送的每個數(shù)據(jù)報。通常發(fā)送一條消息,其值將增加1。字段和切片偏移用于切片和重組,在這個系統(tǒng)中,數(shù)據(jù)沒有分段或偏移,所以設(shè)置為0X4000。生存時間(TTL

31、)-生存時間字段設(shè)置數(shù)據(jù)報可以通過的最大路由器數(shù)量。它指定了數(shù)據(jù)報的生命周期。TTL的初始值由源主機設(shè)置(通常是32或64),一旦通過處理它的路由器,它的值就減1。當(dāng)該字段的值為0時,數(shù)據(jù)報將被丟棄,并發(fā)送CIMP消息通知源主機。協(xié)議字段可以識別哪個協(xié)議向PI傳輸數(shù)據(jù),比如UDP和TCP。ICMP .報頭校驗和字段-是根據(jù)PI報頭計算的校驗和代碼。它不計算標(biāo)題后的數(shù)據(jù)行。CIMP、IGMP、UDP和TCP都在各自的報頭中包含同步覆蓋報頭和。數(shù)據(jù)的校驗和代碼。2.2的計算。IP校驗和1321要計算數(shù)據(jù)報的IP校驗和,首先將校驗和字段設(shè)置為0。然后,報頭中的每個16位被二進(jìn)制補碼求和(整個報頭被視

32、為一串16位字),結(jié)果被存儲在校驗和字段中。當(dāng)接收到Pl數(shù)據(jù)報時,報頭中的每個16位也與其二進(jìn)制補碼相加。因為接收方在計算過程中會將校驗和包含在發(fā)送方的報頭中,所以如果傳輸過程中報頭沒有錯誤,接收方的計算結(jié)果應(yīng)該是全1。如果結(jié)果不是全1(即校驗和錯誤),那么PI將丟棄接收到的數(shù)據(jù)報。但不會生成錯誤消息,上層會找到丟失的數(shù)據(jù)報并重新傳輸。CIMP、IGMP、UDP和TCP都使用相同的校驗和算法。3.3的功能?;ヂ?lián)網(wǎng)協(xié)議(Internet Protocol)IP報頭包含使一些重要網(wǎng)絡(luò)功能成為可能的必要信息,包括:(1)尋址和路由(2)細(xì)分和重組(3)傳輸過程中數(shù)據(jù)損壞的檢測和糾正。盡管有這些功能,

33、PI畢竟只是一個互聯(lián)網(wǎng)協(xié)議。為了使它工作,它必須與協(xié)議與鏈路層協(xié)議一起工作。因為它不提供數(shù)據(jù)報是否到達(dá)目的機器的檢測。系統(tǒng),并且不檢測數(shù)據(jù)報是否損壞或丟失。3.2.3用戶數(shù)據(jù)報協(xié)議1.1的結(jié)構(gòu)。用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol)UDP(用戶數(shù)據(jù)報協(xié)議)是一種簡單的面向數(shù)據(jù)報的傳輸層協(xié)議。用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol)它提供基本的低延遲傳輸。這些字段解釋如下:UDP端口號-16位數(shù)字的源端口號是源計算機上的連接編號。源端口號和源IP地址用作消息的返回地址。UDP端口號-16位目的端口號是目的計算機上的連接編號。目的端口號用于將到達(dá)目的地

34、的消息轉(zhuǎn)發(fā)給正確的應(yīng)用程序。UDP協(xié)議使用端口號為不同的應(yīng)用預(yù)留自己的數(shù)據(jù)傳輸通道。UDP和TCP協(xié)議正是使用這種機制來支持多個應(yīng)用程序同時發(fā)送和接收數(shù)據(jù)。發(fā)送方通過源端口發(fā)送UDP數(shù)據(jù)報,而接收方通過目的端口發(fā)送UDP數(shù)據(jù)報。接收數(shù)據(jù)。UDP長度- UDP長度字段是指UDP報頭和UDP數(shù)據(jù)的字節(jié)長度。詞段的最小值是8個字節(jié)。Pl數(shù)據(jù)報長度是指數(shù)據(jù)報的全長,所以UDP數(shù)據(jù)報長度是全長減去IP頭的長度。UDP校驗和一對一校驗和是一個16位的錯誤檢查字段,根據(jù)消息的內(nèi)容進(jìn)行計算。UDP校驗和覆蓋UDP頭和UDP數(shù)據(jù)(PI頭的校驗和只覆蓋IP頭,不覆蓋PI數(shù)據(jù)報中的任何數(shù)據(jù))。包括三個部分:偽報頭、

35、UDP報頭和應(yīng)用層數(shù)據(jù),UDP報頭的前12個字節(jié)是偽報頭。2.2的計算。UDP校驗和32UDP校驗和的基本計算方法類似于PI報頭校驗和(16位字的二進(jìn)制逆碼和)的系統(tǒng),但兩者有區(qū)別。首先,UDP數(shù)據(jù)報的長度可以是奇數(shù)。字節(jié),但校驗和算法是加幾個16位字。解決方法是在必要時在末尾填充字節(jié)O。其次,UDP數(shù)據(jù)報和TCP數(shù)據(jù)報都包含一個12字節(jié)的偽報頭,用于計算IP頭的一些字段,包括PI頭中的32位源IP地址和32位目的IP地址。3.3的特點。用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol)UDP被設(shè)計成一種有效且最小的傳輸協(xié)議。它只包括用于轉(zhuǎn)發(fā)數(shù)據(jù)報的消息。使用足夠的(端口號)信息并

36、執(zhí)行一些錯誤檢查。UDP用于盡力傳輸。發(fā)送數(shù)據(jù)報,由于某種原因傳輸失敗,數(shù)據(jù)報被丟棄,不嘗試重新傳輸。UDP通常被認(rèn)為是不可靠的,因為它沒有任何TCP可靠性機制。但是UDP具有TCP無法比擬的速度優(yōu)勢。盡管TCP協(xié)議中嵌入了各種安全功能,但是但在實際執(zhí)行過程中,會占用大量的系統(tǒng)開銷,無疑會嚴(yán)重影響速度。計數(shù)器UDP取消了可靠的信息傳輸機制,將安全和排序的功能轉(zhuǎn)移給上層應(yīng)用。,大大減少了執(zhí)行時間,保證了速度。UDP最適合小型傳輸(即單獨的消息)。因此,在嵌入式系統(tǒng)的應(yīng)用中,UDP協(xié)議應(yīng)該是應(yīng)用最廣泛的。3 . 2 . 4互聯(lián)網(wǎng)控制消息協(xié)議ICMP(互聯(lián)網(wǎng)控制消息協(xié)議)消息分為兩類,錯誤報告消息和

37、查詢消息。它通常被認(rèn)為是Pl層的一個組成部分,傳遞錯誤消息以與其他需要注意的信息進(jìn)行通信。ICMP消息通常由IP層或更高的協(xié)議(UDP或TCP)使用。ICMP消息在IP數(shù)據(jù)報部分傳輸。如圖3.4 42所示。ICMP消息的格式如表3-3所示3142。所有消息的前4個字節(jié)是相同的,但其余的字節(jié)互不相同。類型字段可以有15個不同的值來描述特定類型的ICMP消息。在這個系統(tǒng)中,它主要響應(yīng)PING命令。PING程序的目的是測試是否可以到達(dá)另一臺主機。程序向主機發(fā)送CIMP回應(yīng)請求消息,并等待返回的CIMP回應(yīng)回復(fù)。使用PING命令的ICMP消息的格式如表3-4所示。類型8表示發(fā)送PING,0表示響應(yīng)PI

38、NG。代碼0是PING命令。并且標(biāo)志序列號用于使響應(yīng)對應(yīng)于發(fā)送的數(shù)據(jù)??蛇x數(shù)據(jù)是任意的,但是響應(yīng)和發(fā)送的數(shù)據(jù)是相同的。校驗和字段覆蓋整個CIMP消息。使用的算法與IP報頭校驗和算法相同。3.25地址解析協(xié)議ARP當(dāng)一臺主機向同一局域網(wǎng)中的另一臺主機發(fā)送以太網(wǎng)數(shù)據(jù)幀時,目的接口根據(jù)48位以太網(wǎng)地址確定。設(shè)備驅(qū)動程序從不檢查IP數(shù)據(jù)報中的目的IP地址。地址解析為這兩種不同的地址形式提供映射:32位PI地址和數(shù)據(jù)鏈路層使用的任何類型的地址33。ARP向以太網(wǎng)上的每臺主機發(fā)送稱為ARP請求的以太網(wǎng)數(shù)據(jù)幀。這個過程叫做廣播,ARP請求數(shù)據(jù)幀中包含目的主機的PI地址,意思是“如果你是這個IP地址的擁有者,

39、請回答你的硬件地址”,而此時發(fā)送的目的物理地址是FFFFFFFFFFFF。接收到此廣播消息后,目的主機的ARP層識別出發(fā)送方在請求其PI地址,因此發(fā)送ARP回復(fù)。這個ARP回復(fù)包含IP地址和相應(yīng)的硬件地址43。在以太網(wǎng)上解析PI地址時,ARP請求和回復(fù)包的格式如圖3.5 3136所示。以太網(wǎng)報頭中的前兩個字段是以太網(wǎng)的源地址和目的地址。目的地全為1的特殊地址是廣播地址。電纜上的所有以太網(wǎng)接口都應(yīng)該接收廣播數(shù)據(jù)幀。雙字節(jié)以太網(wǎng)幀類型表示以下數(shù)據(jù)類型。對于ARP請求或回復(fù),該字段的值為0X0806。硬件類型字段指示硬件地址的類型。它的值1表示以太網(wǎng)地址。類型字段指示要映射的協(xié)議地址的類型,值0 x

40、 80 o指示PI地址。接下來的兩個1字節(jié)字段,硬件地址長度和協(xié)議地址長度,分別以字節(jié)表示硬件地址和協(xié)議地址的長度。對于以太網(wǎng)上PI地址的ARP請求或響應(yīng),它們的值分別是6和4。兩個字節(jié)的動作字段指示四種類型的操作,它們是ARP請求(值為)L,ARP應(yīng)該回答(值2)、RARP請求(值3)和RARP回復(fù)(值4)。此字段是必需的,因為ARP請求和ARP回復(fù)的幀類型字段值相同。接下來的四個字段是發(fā)送方的以太網(wǎng)地址、發(fā)送方的PI地址、目的地的以太網(wǎng)地址和目的地的Pl地址。對于ARP請求,除了目的硬件地址之外的所有字段都應(yīng)該填入值。當(dāng)系統(tǒng)接收到目的地是自己機器的ARP請求消息時,它填充硬件地址,然后用兩

41、個目的地址替換兩個發(fā)送方地址,設(shè)置操作字段為2,最后發(fā)送。送回去。3.3本章概述本章主要分析了TCP/PI協(xié)議的結(jié)構(gòu),介紹了單片機TCP/PI的協(xié)議框架,并逐層介紹了其主要協(xié)議,包括協(xié)議的原理以及協(xié)議之間的交互。第4章系統(tǒng)硬件組成4.1系統(tǒng)硬件組成為了簡化本系統(tǒng)的硬件接口,降低成本,縮短開發(fā)周期,應(yīng)盡可能減少外圍設(shè)備。系統(tǒng)的CPU為AT89C52,有SK字節(jié)的ROM和256字節(jié)的RAM。片外RAM使用62256,有32K字節(jié)的使用空間。選擇這兩種芯片主要是為簡化TCP/PI協(xié)議棧的嵌入提供條件,同時保證較大的數(shù)據(jù)處理空間。芯片DM900O是主要的工作部件,可以發(fā)送和接收網(wǎng)絡(luò)數(shù)據(jù)。過濾波變壓器P

42、H163112,用于轉(zhuǎn)換和過濾網(wǎng)絡(luò)上的脈沖。網(wǎng)絡(luò)通過iobase-t電纜連接到集線器。圖4.1是該系統(tǒng)的硬件框圖。4.2網(wǎng)絡(luò)連接網(wǎng)絡(luò)單片機通過網(wǎng)卡芯片DM90OO接入以太網(wǎng)。下面主要闡述網(wǎng)卡芯片。DM9000的工作原理,單片機對DM9000的控制原理和初始化步驟,并提供DM9000與單片機的接口方案。4.2.1網(wǎng)卡芯片DM90001.1簡介。DM9000DM9000芯片是Davicom公司生產(chǎn)的以太網(wǎng)控制芯片,可用于網(wǎng)絡(luò)中自動獲取與設(shè)定MAC地址一致的PI包,完成PI包的發(fā)送和接收,采用LQFPl00管。foot封裝集成16K SRAM,提供8位和16位接口。在本主題中在8位模式下,引腳封裝如

43、圖4.2 40所示。DM9000的技術(shù)特征如下:()L封裝采用LQFP100引腳封裝,占用面積和高度小。(2)使用電壓0.33V,最大電流消耗100mA,非常省電。(3)MEC連接模式有isa bit/isa 16 bit/ups bit/up16 bit/up32 bit/68k模式。類型,并支持3.3V和SV的1/0控制。方便連接不同電壓和接口的MCU。4)設(shè)置10/10OMPHY支持多種連接方式:電口支持10 mmhalf/10 mmfull。/100 mmhal/100 mmful/AUTO(N向);另外提供100M半/200M光口。滿了.(5)支持EEPROM(93C46),可以存儲

44、系統(tǒng)需要的信息。2.兩個人的登記簿。DM9000DM9000中有許多寄存器,這里只列出了與該系統(tǒng)相關(guān)的寄存器,如表4-1 40所示。3.DM9000讀寫寄存器模式DM9000控制寄存器的讀寫方式,非常簡單。DM90OO有兩個端口:數(shù)據(jù)和地址。這兩個端口由CMD引腳控制。如果CMD連接到高電平,它是控制數(shù)據(jù)端口,當(dāng)CMD連接到低電平時,它是控制地址端口。要讀取或?qū)懭肴魏渭拇嫫?,方法如?(1)用AEN和SA49啟用DMg000。(2)將CMD引腳設(shè)置為低電位。(3)將待讀寫寄存器的地址填入地址端口(IOW#)。(4)將CMD引腳設(shè)置為高電位。5)將要讀取或?qū)懭氲募拇嫫鞯臄?shù)據(jù)填充或讀取到數(shù)據(jù)端口(

45、IOW#,IOR#)。4.4的工作原理。DM9000內(nèi)存DM9000總共存儲16k字節(jié)(000Oh-3FFFh)的存儲器,讀寫存儲器由兩個寄存器MWCMD和MRCMD控制。MWRL、MWRH寄存器提供當(dāng)前寫入存儲器的位置,MRRL、MRRH寄存器提供當(dāng)前讀取存儲器的位置。根據(jù)工作模式,存儲器每次移動一個字節(jié)(8位)、兩個字節(jié)(16位)或四個字節(jié)(32位)。5.DM9000初始化步驟(l)在DM9000上執(zhí)行軟件復(fù)位。(2)清除中斷設(shè)置,避免DM9000因中斷而異常初始化。(3)設(shè)置DM900O相關(guān)接口(PHY、外部MII、反向MII)。(4)設(shè)置物理地址位置。(5)設(shè)置組播設(shè)置。(6)其他相關(guān)

46、設(shè)置。(7)打開接收數(shù)據(jù)功能。6.分組傳輸?shù)墓ぷ髟砟J(rèn)值為3KByt。(O000hOBFFh)用于傳輸功能。發(fā)送數(shù)據(jù)包的過程如下:()l填充要發(fā)送到TXPLL和TXPLH寄存器的包的長度。(2)要發(fā)送的包的數(shù)據(jù)由MWCMD寄存器填入存儲器。(3) DM9000通過TCR寄存器發(fā)送包數(shù)據(jù)。(4)如果存儲的寫入位置超過OBFFh,下一個位置將自動恢復(fù)到0000h。7.數(shù)據(jù)包接收的工作原理接收功能的存儲器默認(rèn)值為13KByt(OC00h-03FFh)。在每個包中,將有4個字節(jié)來存儲一些包相關(guān)信息。第一個字節(jié)是數(shù)據(jù)包是否已經(jīng)存儲在接收中。是,如果值為“0h1”,則該數(shù)據(jù)包已經(jīng)存儲在接收存儲器中;如果

47、是“0h0”,則接收RAM沒有。存儲了數(shù)據(jù)包。在讀取其他字節(jié)之前,有必要確定第一個字節(jié)。是“01h”嗎?第二個字節(jié)是這個包的一些相關(guān)信息,其格式類似于RSR寄存器的格式。第3和第4個字節(jié)是該數(shù)據(jù)包的長度。如圖4.3所示接收數(shù)據(jù)包。130!。接收數(shù)據(jù)包的過程如下:()l檢查MRCMDX寄存器的值是否為01h,如果是,則有包要讀取。(2)讀取MRXMD,讀入第一個4字節(jié)的包信息。(3)從第一個四字節(jié)包信息中獲得包長度(以字節(jié)為單位),并連續(xù)讀取它。MRCMD,將包數(shù)據(jù)移動到系統(tǒng)內(nèi)存。8.DM90001/0模式的設(shè)置39DM9000支持三種I/O模式,即Byte/word/Dword,還支持讀寫數(shù)據(jù)

48、。8位/16位/32位,硬件和軟件需要相互配合(即設(shè)置方式需要一致)。硬件由兩個引腳WAKEUP和EEDO的電平組合設(shè)置。如圖4.4 39所示。濾波變壓器在該系統(tǒng)中,10/100濾波變壓器PH163112用于以太網(wǎng)控制芯片和外部網(wǎng)絡(luò)之間。連接。PH163n2將以太網(wǎng)控制芯片與外部網(wǎng)絡(luò)隔離,保護(hù)系統(tǒng)電路完成信號的傳輸。其結(jié)構(gòu)如圖4.6所示。4.2.3單片機與網(wǎng)卡芯片DM9000接口示意圖圖4.7是該系統(tǒng)中單片機與DM9000的接口示意圖。MCU的數(shù)據(jù)線POP7與DM9000的DO-D7數(shù)據(jù)相連,用于MCU讀寫網(wǎng)卡芯片DM9000的數(shù)據(jù)。地址AZ接DM9000的CMD引腳,使MCU可以訪問網(wǎng)卡芯片

49、的部分寄存器;AEN是DMgO00的使能線,連接到單片機的片選線上;將SA4SA7接地,將SA8和SA9連接到DVDD。此時DM9000地址端口的地址=nCS地址+0 x0,DM9000數(shù)據(jù)端口的地址=nCS地址+0 x 4;IOR#和IOW#分別連接到MCU的RD和WR。4.3本章概述本章主要討論了該系統(tǒng)的硬件連接,介紹了網(wǎng)絡(luò)芯片DM900O的工作原理以及單片機與DM9000的硬件接口,并簡要介紹了脈沖變壓器PH163112的結(jié)構(gòu)。第五章51單片機TCP/IP協(xié)議的嵌入式實現(xiàn)介紹TCP/PI協(xié)議采用分層結(jié)構(gòu)。因此,我們也采用分層實現(xiàn)的方法來實現(xiàn)TCP/PI協(xié)議。物理層具體的程序?qū)崿F(xiàn)是以太網(wǎng)驅(qū)

50、動,解決以太網(wǎng)數(shù)據(jù)的發(fā)送和接收問題。ARP由于以太網(wǎng)報文的發(fā)送和接收必須依賴物理地址,而PI協(xié)議采用的是PI地址,這就涉及到兩個地址相互轉(zhuǎn)換的問題,即我們需要實現(xiàn)ARP,而要實現(xiàn)ARP,我們只需要向局域網(wǎng)廣播ARP請求,接收ARP回復(fù),響應(yīng)ARP請求。PI協(xié)議-PI協(xié)議可以找到路徑并傳輸要發(fā)送的數(shù)據(jù)包消息。程序設(shè)計的關(guān)鍵是實現(xiàn)一個高效、通用的PI驗證程序。由于嵌入式系統(tǒng)傳輸?shù)臄?shù)據(jù)量較小,為了簡化程序,本系統(tǒng)不提供PI切片功能。CIMPICMP協(xié)議有多種數(shù)據(jù)包格式,我們實現(xiàn)了它最常用的響應(yīng)請求和響應(yīng)消息(即PING程序)。UDPUDP協(xié)議基于PI協(xié)議,和PI協(xié)議一樣提供無連接的數(shù)據(jù)傳輸。因為不需

51、要考慮建立連接和等待確認(rèn),所以它的傳輸速度比較快。UDP檢查在程序設(shè)計中是一個特殊的地方。它不遵循嚴(yán)格的層次模型,需要和一個來自PI層的偽頭一起檢查。本系統(tǒng)要實現(xiàn)的是在單片機中嵌入TCP/PI協(xié)議,上位機可以使用TCP/PI協(xié)議2在網(wǎng)絡(luò)上與單片機進(jìn)行通信。程序是用C51語言編寫的。該系統(tǒng)支持PI、ARP、CIMP和UDP協(xié)議。5.2總體方案設(shè)計5.2.1總體設(shè)計思想1.介紹結(jié)構(gòu)化數(shù)據(jù)類型結(jié)構(gòu)是為了便于操作而組合在一起的一個或多個變量。結(jié)構(gòu)中變量的數(shù)據(jù)類型可以不同,變量按順序存儲在內(nèi)存中。因為以太網(wǎng)協(xié)議幀和TCP/PI協(xié)議包含不同數(shù)據(jù)類型的信息,而這些信息通常是按順序排列的?;谶@一特點,為了在

52、程序中方便地操作信息,采用數(shù)據(jù)類型結(jié)構(gòu)來表示TCP/PI協(xié)議的各級信息,以便于協(xié)議的編程和嵌入式實現(xiàn)。2.介紹通用數(shù)據(jù)類型共享類似于結(jié)構(gòu),不同于結(jié)構(gòu)的是同一時間只有一個成員可用。也就是說,公共團(tuán)體的所有成員占用相同的存儲區(qū)域。在TCP/PI單片機的嵌入式實現(xiàn)中,數(shù)據(jù)封裝和共享是關(guān)鍵。但是,在封裝和共享數(shù)據(jù)時,經(jīng)常需要復(fù)制和重新組織數(shù)據(jù)。由于單片機系統(tǒng)本身的數(shù)據(jù)存儲空間相對有限,所以本設(shè)計中所有協(xié)議都包含在一個公共體中,所有協(xié)議報文共享一個存儲區(qū)。這樣既節(jié)省了系統(tǒng)的數(shù)據(jù)存儲空間,又避免了重復(fù)的數(shù)據(jù)重復(fù)。本設(shè)計中使用的公共幾何體定義如下:union netcard struct ucharbyte

53、buf500;字節(jié);struct unitwordbuf250;字?jǐn)?shù):結(jié)構(gòu)以太網(wǎng)框架;StructArpArpFrame:結(jié)構(gòu)IcmpFrame框架:結(jié)構(gòu)PIPFrame:Struetudp UdPFrame:StruetIpPacketIpPaeket:;3.總體程序流程圖TCP/PI的總體程序流程圖如圖5.1所示。5.3DM9000驅(qū)動器設(shè)計主要功能描述DM9000驅(qū)動程序在本設(shè)計中有兩個目的:發(fā)送和接收Pl消息;以及發(fā)送和接收ARP消息。驅(qū)動程序的作用是將待發(fā)送的數(shù)據(jù)包按照規(guī)定的格式寫入芯片存儲器,并啟動發(fā)送命令。DM9000會自動將數(shù)據(jù)包轉(zhuǎn)換成物理幀格式,并在物理信道上傳輸。相反,DM

54、9000接收到物理信號后,將其還原為數(shù)據(jù),并按照指定的格式存儲在內(nèi)存中,以便主機程序訪問。簡而言之,DM9000完成了數(shù)據(jù)包和電信號之間的相互轉(zhuǎn)換。以太網(wǎng)協(xié)議由芯片硬件自動完成,無需考慮。該驅(qū)動程序由三部分組成:芯片初始化、數(shù)據(jù)包收集和數(shù)據(jù)包發(fā)送。具體實現(xiàn)功能如下:以太網(wǎng)報頭的結(jié)構(gòu)定義如下:以太網(wǎng)ucharRecstatus:UCharRecInfo*/接收狀態(tài)*/*/數(shù)據(jù)包信息*/單位長度:單元DestMacld3:單元源Macld 3:UnitNextProtocalUchar包500;*/以字節(jié)為單位的以太網(wǎng)長度*/*/目標(biāo)網(wǎng)卡的地址*/*源網(wǎng)卡地址*/*下一層協(xié)議*/*/包的容量*/D

55、M9000的初始化在DM9000可以正常工作之前,它需要進(jìn)行一些相關(guān)的設(shè)置,以便正常工作。這個過程被稱為初始化39:1.PHY開篇寫寄存器(GPCR,0 x01):寫寄存器(GPR,0 x00):phy-write(0 x 04、0 x 0461):/10M全雙工Phy-rite(0 x00、0 x 0100);2.軟件復(fù)位寫寄存器(NCR,ox03);/復(fù)位DM9000軟件。延遲(30):/等待DM9000復(fù)位完成寫寄存器(NCR,0 x00):/將DM9000恢復(fù)到正常工作狀態(tài)。寫寄存器(NCR,0 x03):/對DMg000執(zhí)行軟件復(fù)位。延遲(30);/等待DM9000復(fù)位完成寫寄存器(

56、NCR,0 x00):/將DM9000恢復(fù)到正常工作狀態(tài)。延遲(5):上述軟件復(fù)位操作重復(fù)兩次,以確保DM90OO復(fù)位成功。3.清除中斷設(shè)置。寫寄存器(XMR,0 x 80);/關(guān)閉DM9000的中斷功能,清除中斷設(shè)置,避免DM900O因中斷而異常初始化。4.設(shè)置本地物理地址。set _ 9000 MAC();/設(shè)置本地物理地址5.其他相關(guān)設(shè)置讀寄存器(NSR);寫寄存器(TCR,0 x 00);/清除TCR相關(guān)信息Read-register(ROCR):/清除ROCR相關(guān)信息。寫寄存器(ISR,0 x0f/清除ISR相關(guān)信息寫寄存器(IMR,ox83):6.打開接收數(shù)據(jù)的功能。寫寄存器(RC

57、R,0 x39):/打開接收功能。5.3.3收集包子的程序DM9000接收的數(shù)據(jù)包將存儲在DM9000接收存儲器的0C00h-3FFFh中。如果讀取位置超過3FFFh,DM90OO會自動將位置移動到OC0h0。在每個包中,將有4個字節(jié)來存儲一些與包相關(guān)的信息。第一個字節(jié)是數(shù)據(jù)包是否已經(jīng)存儲在接收存儲器中。如果該值為“01h”,則意味著該分組已經(jīng)被存儲在接收存儲器中,但是沒有分組被存儲。在讀取其他字節(jié)之前,有必要確定第二個字節(jié)。就是這個包的一些相關(guān)信息,它的格式就像Byte,就是這個包的長度。DM9000的收包流程如圖5.2所示:分包子程序在發(fā)送數(shù)據(jù)包之前,數(shù)據(jù)包數(shù)據(jù)應(yīng)存儲在DM9000的發(fā)送存

58、儲器中,時間為0000hOBFFh。如果寫入位置超過OBFFh,DMgO00會自動將位置移動到000Oh的位置。數(shù)據(jù)包數(shù)量根據(jù)MWCMD中存儲的數(shù)據(jù),DM9000將自動將其數(shù)據(jù)存儲在其傳輸存儲器中。此外,它還需要發(fā)送的數(shù)據(jù)包大小存儲在低位字節(jié)的TXPLL和高位字節(jié)的txplh中。然后,TCR位()被設(shè)置為1,包傳輸在此時開始。傳輸完成后,傳輸是否成功的信息將放入TSRI和TSRII中。順序是tsri- tsrii- tsri- tsrii。因此,根據(jù)NSR比特2-3,現(xiàn)在需要判斷是TSRI還是TSRII傳輸完成。DM9000的簽約過程如圖5.3所示:5.4TCP/IP協(xié)議設(shè)計5.4.1ARP模

59、塊設(shè)計當(dāng)一臺主機向同一局域網(wǎng)上的另一臺主機發(fā)送以太網(wǎng)數(shù)據(jù)幀時,目的接口是根據(jù)48位以太網(wǎng)地址確定的,設(shè)備驅(qū)動程序從不檢查LP數(shù)據(jù)報中的目的EP地址。ARP(地址解析)模塊的功能提供了兩種不同地址形式的映射:32位Pl地址和48位以太網(wǎng)地址。ARP報文分為請求報文和響應(yīng)報文。請求消息用于獲取目的主機的物理地址;響應(yīng)消息用于回答該機器的物理地址。ARP報文結(jié)構(gòu)定義如下:struct ARP unit ether Head91;/*以太網(wǎng)報頭*/unit硬件類型;/*硬件類型*/單元協(xié)議類型:/*協(xié)議類型*/Uchar硬件鏡頭;/*硬件長度*/Uchar協(xié)議長度:/*協(xié)議長度*/單位:/*操作*/U

60、nit SourceMacld3:/*源網(wǎng)卡地址*/unit source IP2;/*源xP地址*/單元DestMacldl31:/*目標(biāo)NIC地址單位TLD 2:/*目的IP地址;1.主要功能描述該模塊由三個函數(shù)組成,分別是Arp請求函數(shù)Arp_RequestO和ARP回復(fù)函數(shù)。ARP_answer和ARP處理函數(shù)ArP_Process()。下表解釋了具體的字母:2.ARP請求子程序當(dāng)要發(fā)送的以太網(wǎng)幀不知道目的地的物理地址時,就需要發(fā)送一個請求消息,這個請求消息很寬要發(fā)送請求,需要調(diào)用Arp_Request()函數(shù)。函數(shù)的作用是:發(fā)送一個Arp請求消息來解析指定的PI地址。當(dāng)封裝到以太網(wǎng)幀

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論