




已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精選物聯(lián)網(wǎng)的畢業(yè)論文范文 基于單片機(jī)的嵌入式以太網(wǎng)控制終端設(shè)計(jì)摘要:基于單片機(jī)技術(shù)的以太網(wǎng)終端廣泛應(yīng)用在各個(gè)領(lǐng)域,本文基于建榮AX20XX+PHY的解決方案,實(shí)現(xiàn)ARP請(qǐng)求,以及ping命令。同時(shí),本文詳細(xì)介紹以太網(wǎng)接口的硬件設(shè)計(jì)和通信電路的抗干擾設(shè)計(jì)。覆蓋單片機(jī)技術(shù),通信技術(shù),計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)等多個(gè)知識(shí)領(lǐng)域。 關(guān)鍵詞:以太網(wǎng)協(xié)議;信道編碼;TCP/IP協(xié)議;單片機(jī); 一,概述:隨著單片機(jī)技術(shù)和嵌入式技術(shù)的廣泛應(yīng)用,以及通信技術(shù)的發(fā)展和計(jì)算機(jī)網(wǎng)絡(luò)的普及,人們提出了對(duì)基于嵌入式系統(tǒng)的網(wǎng)絡(luò)通信技術(shù)的應(yīng)用需求。嵌入式網(wǎng)絡(luò)通信系統(tǒng)將過(guò)去單一獨(dú)立的嵌入式系統(tǒng)組成一個(gè)網(wǎng)絡(luò)系統(tǒng),使得嵌入式系統(tǒng)不再是一個(gè)獨(dú)立的個(gè)體,而是一個(gè)整體信息化網(wǎng)絡(luò)的一個(gè)部分。該技術(shù)廣泛應(yīng)用在智能設(shè)備,信息化家電,智能管理設(shè)備,安防監(jiān)控設(shè)備等領(lǐng)域。 嵌入式網(wǎng)絡(luò)系統(tǒng)具有以下特點(diǎn):1,基于單片機(jī)系統(tǒng)。2,系統(tǒng)之間存在數(shù)據(jù)通訊。在嵌入式網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)方案中,有基于RS232/RS485總線(xiàn)協(xié)議,CAN總線(xiàn)協(xié)議,以太網(wǎng)協(xié)議,USB總線(xiàn)協(xié)議等多種方式。其中基于以太網(wǎng)協(xié)議的實(shí)現(xiàn)方案中,具有成本低,安裝方便,通訊距離遠(yuǎn),兼容性好和平臺(tái)移植方便等多種優(yōu)勢(shì)。該技術(shù)廣泛應(yīng)用在以下領(lǐng)域。1,實(shí)驗(yàn)室管理監(jiān)控系統(tǒng) 某生化實(shí)驗(yàn)室需要建立一個(gè)實(shí)時(shí)監(jiān)控系統(tǒng),檢測(cè)實(shí)驗(yàn)室人員出入,實(shí)驗(yàn)結(jié)果數(shù)據(jù),實(shí)驗(yàn)室溫度濕度。該實(shí)驗(yàn)室的儀器設(shè)備都有RS232接口輸出打印,可以輸出到單片機(jī)。門(mén)禁和各種傳感器也接入單片機(jī)系統(tǒng)。這時(shí)候單片機(jī)可以通過(guò)以太網(wǎng)把數(shù)據(jù)提交到實(shí)驗(yàn)室的服務(wù)器上,服務(wù)器通過(guò)處理提交的數(shù)據(jù),將控制命令通過(guò)以太網(wǎng)發(fā)給單片機(jī),單片機(jī)再進(jìn)行相應(yīng)的操作。 2,智能家居系統(tǒng) 現(xiàn)代家居系統(tǒng)中,由于需要寬帶接入,基本上所有住戶(hù)都有局域網(wǎng)接入。在住戶(hù)內(nèi)部搭建局域網(wǎng)也很方便。鑒于以上情況,利用以太網(wǎng)實(shí)現(xiàn)智能家居網(wǎng)絡(luò)能夠?qū)崿F(xiàn)。 住房?jī)?nèi)的家電和各種設(shè)施,可以接入內(nèi)部以太網(wǎng)實(shí)現(xiàn)相互通信,或者與上位機(jī)實(shí)現(xiàn)通信。上位機(jī)可以被用戶(hù)遠(yuǎn)程控制,對(duì)居室的家電和設(shè)施進(jìn)行控制,達(dá)到對(duì)居室的溫度,光亮的調(diào)節(jié),同時(shí)可以利用下位機(jī)(單片機(jī))將室內(nèi)監(jiān)控系統(tǒng)的狀況傳到上位機(jī),上位機(jī)通過(guò)分析可以向主人或者相關(guān)部門(mén)報(bào)告火警或者匪警。 3,信息化家電 傳統(tǒng)家電是一個(gè)獨(dú)立存在的系統(tǒng),電器與電器之間沒(méi)有絲毫聯(lián)系。在信息化家電系統(tǒng)中,所有信息化家電組成一個(gè)局域網(wǎng)絡(luò)系統(tǒng),家電屬于該系統(tǒng)中一個(gè)部分。信息化家電系統(tǒng)中,比如電飯鍋,可以通過(guò)網(wǎng)絡(luò)遠(yuǎn)程控制。假如用戶(hù)需要下班回家就能吃上飯,可以在下班前通過(guò)遠(yuǎn)程控制協(xié)議給電飯鍋發(fā)出指令,保證下班回家時(shí)飯剛好煮好。 二,實(shí)現(xiàn)方案理論設(shè)計(jì) 1,網(wǎng)絡(luò)協(xié)議簡(jiǎn)介 四層以太網(wǎng)協(xié)議 網(wǎng)絡(luò)協(xié)議通常分不同層次進(jìn)行開(kāi)發(fā),每一層分別負(fù)責(zé)不同的通信功能。一個(gè)協(xié)議族,比如TCP/IP,是一組不同層次上的多個(gè)協(xié)議的組合。TCP/IP通常被認(rèn)為是一個(gè)四層協(xié)議系統(tǒng),如圖可以看出這個(gè)四層協(xié)議的構(gòu)架。 圖1-1TCP/IP協(xié)議族的四個(gè)層每一層負(fù)責(zé)不同的功能: 鏈路層:有時(shí)也稱(chēng)作數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層,通常包括操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序和計(jì)算機(jī)中對(duì)應(yīng)的網(wǎng)絡(luò)接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細(xì)節(jié)。 網(wǎng)絡(luò)層:有時(shí)也稱(chēng)作互聯(lián)網(wǎng)層,處理分組在網(wǎng)絡(luò)中的活動(dòng),例如分組的選路。在TCP/I協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包括I協(xié)議(網(wǎng)際協(xié)議),ICMP協(xié)議(Interne互聯(lián)網(wǎng)控制報(bào)文協(xié)議),以及IGM協(xié)議(Inter組管理協(xié)議)。 運(yùn)輸層:主要為兩臺(tái)主機(jī)上的應(yīng)用程序提供端到端的通信。在TCP/IP協(xié)議族中,有兩個(gè)互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶(hù)數(shù)據(jù)報(bào)協(xié)議)。 TCP為兩臺(tái)主機(jī)提供高可靠性的數(shù)據(jù)通信。它所做的工作包括把應(yīng)用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,確認(rèn)接收到的分組,設(shè)置發(fā)送最后確認(rèn)分組的超時(shí)時(shí)鐘等。由于運(yùn)輸層提供了高可靠性的端到端的通信,因此應(yīng)用層可以忽略所有這些細(xì)節(jié)。而另一方面,UDP則為應(yīng)用層提供一種非常簡(jiǎn)單的服務(wù)。它只是把稱(chēng)作數(shù)據(jù)報(bào)的分組從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī),但并不保證該數(shù)據(jù)報(bào)能到達(dá)另一端。任何必需的可靠性必須由應(yīng)用層來(lái)提供。 這兩種運(yùn)輸層協(xié)議分別在不同的應(yīng)用程序中有不同的用途,這一點(diǎn)將在后面看到。應(yīng)用層:負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。幾乎各種不同的TCP/IP實(shí)現(xiàn)都會(huì)提供下面這些通用的應(yīng)用程序: Tel遠(yuǎn)程登錄。 FTP文件傳輸協(xié)議。 SMTP簡(jiǎn)單郵件傳送協(xié)議。 SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議。 假設(shè)我們以FTP服務(wù)的工作為例,4層協(xié)議的工作原理如圖 OSI七層協(xié)議 物理層:OSI模型的最低層或第一層,該層包括物理連網(wǎng)媒介,如電纜連線(xiàn)連接器。物理層的協(xié)議產(chǎn)生并檢測(cè)電壓以便發(fā)送和接收攜帶數(shù)據(jù)的信號(hào)。在你的桌面PC上插入網(wǎng)絡(luò)接口卡,你就建立了計(jì)算機(jī)連網(wǎng)的基礎(chǔ)。換言之,你提供了一個(gè)物理層。盡管物理層不提供糾錯(cuò)服務(wù),但它能夠設(shè)定數(shù)據(jù)傳輸速率并監(jiān)測(cè)數(shù)據(jù)出錯(cuò)率。網(wǎng)絡(luò)物理問(wèn)題,如電線(xiàn)斷開(kāi),將影響物理層。 數(shù)據(jù)鏈路層:OSI模型的第二層,它控制網(wǎng)絡(luò)層與物理層之間的通信。它的主要功能是如何在不可靠的物理線(xiàn)路上進(jìn)行數(shù)據(jù)的可靠傳遞。為了保證傳輸,從網(wǎng)絡(luò)層接收到的數(shù)據(jù)被分割成特定的可被物理層傳輸?shù)膸怯脕?lái)移動(dòng)數(shù)據(jù)的結(jié)構(gòu)包,它不僅包括原始數(shù)據(jù),還包括發(fā)送方和接收方的網(wǎng)絡(luò)地址以及糾錯(cuò)和控制信息。其中的地址確定了幀將發(fā)送到何處,而糾錯(cuò)和控制信息則確保幀無(wú)差錯(cuò)到達(dá)。數(shù)據(jù)鏈路層的功能獨(dú)立于網(wǎng)絡(luò)和它的節(jié)點(diǎn)和所采用20XXAppoTechLimited.AllrightsreservedDS20XXv1002 的物理層類(lèi)型,它也不關(guān)心是否正在運(yùn)行Word、Excel或使用Inter。有一些連接設(shè)備,如交換機(jī),由于它們要對(duì)幀解碼并使用幀信息將數(shù)據(jù)發(fā)送到正確的接收方,所以它們是工作在數(shù)據(jù)鏈路層的。 網(wǎng)絡(luò)層:OSI模型的第三層,其主要功能是將網(wǎng)絡(luò)地址翻譯成對(duì)應(yīng)的物理地址,并決定如何將數(shù)據(jù)從發(fā)送方路由到接收方。 網(wǎng)絡(luò)層通過(guò)綜合考慮發(fā)送優(yōu)先權(quán)、網(wǎng)絡(luò)擁塞程度、服務(wù)質(zhì)量以及可選路由的花費(fèi)來(lái)決定從一個(gè)網(wǎng)絡(luò)中節(jié)點(diǎn)到另一個(gè)網(wǎng)絡(luò)中節(jié)點(diǎn)的最佳路徑。由于網(wǎng)絡(luò)層處理路由,而路由器因?yàn)榧催B接網(wǎng)絡(luò)各段,并智能指導(dǎo)數(shù)據(jù)傳送,屬于網(wǎng)絡(luò)層。在網(wǎng)絡(luò)中,“路由”是基于編址方案、使用模式以及可達(dá)性來(lái)指引數(shù)據(jù)的發(fā)送。 傳輸層:OSI模型中最重要的一層。傳輸協(xié)議同時(shí)進(jìn)行流量控制或是基于接收方可接收數(shù)據(jù)的快慢程度規(guī)定適當(dāng)?shù)陌l(fā)送速率。除此之外,傳輸層按照網(wǎng)絡(luò)能處理的最大尺寸將較長(zhǎng)的數(shù)據(jù)包進(jìn)行強(qiáng)制分割。例如,以太網(wǎng)無(wú)法接收大于1500字節(jié)的數(shù)據(jù)包。發(fā)送方節(jié)點(diǎn)的傳輸層將數(shù)據(jù)分割成較小的數(shù)據(jù)片,同時(shí)對(duì)每一數(shù)據(jù)片安排一序列號(hào),以便數(shù)據(jù)到達(dá)接收方節(jié)點(diǎn)的傳輸層時(shí),能以正確的順序重組。該過(guò)程即被稱(chēng)為排序。 工作在傳輸層的一種服務(wù)是TCP/IP協(xié)議套中的TCP(傳輸控制協(xié)議),另一項(xiàng)傳輸層服務(wù)是IPX/SPX協(xié)議集的SPX(序列包交換)。 會(huì)話(huà)層:負(fù)責(zé)在網(wǎng)絡(luò)中的兩節(jié)點(diǎn)之間建立和維持通信。會(huì)話(huà)層的功能包括:建立通信鏈接,保持會(huì)話(huà)過(guò)程通信鏈接的暢通,同步兩個(gè)節(jié)點(diǎn)之間的對(duì)話(huà),決定通信是否被中斷以及通信中斷時(shí)決定從何處重新發(fā)送。 你可能常常聽(tīng)到有人把會(huì)話(huà)層稱(chēng)作網(wǎng)絡(luò)通信的“交通警察”。當(dāng)通過(guò)撥號(hào)向你的ISP(因特網(wǎng)服務(wù)提供商)請(qǐng)求連接到因特網(wǎng)時(shí),ISP服務(wù)器上的會(huì)話(huà)層向你與你的PC客戶(hù)機(jī)上的會(huì)話(huà)層進(jìn)行協(xié)商連接。若你的電話(huà)線(xiàn)偶然從墻上插孔脫落時(shí),你終端機(jī)上的會(huì)話(huà)層將檢測(cè)到連接中斷并重新發(fā)起連接。會(huì)話(huà)層通過(guò)決定節(jié)點(diǎn)通信的優(yōu)先級(jí)和通信時(shí)間的長(zhǎng)短來(lái)設(shè)置通信期限 表示層:應(yīng)用程序和網(wǎng)絡(luò)之間的翻譯官,在表示層,數(shù)據(jù)將按照網(wǎng)絡(luò)能理解的方案進(jìn)行格式化;這種格式化也因所使用網(wǎng)絡(luò)的類(lèi)型不同而不同。 表示層管理數(shù)據(jù)的解密與加密,如系統(tǒng)口令的處理。例如:在Inter上查詢(xún)你銀行賬戶(hù),使用的即是一種安全連接。你的賬戶(hù)數(shù)據(jù)在發(fā)送前被加密,在網(wǎng)絡(luò)的另一端,表示層將對(duì)接收到的數(shù)據(jù)解密。除此之外,表示層協(xié)議還對(duì)圖片和文件格式信息進(jìn)行解碼和編碼。應(yīng)用層:負(fù)責(zé)對(duì)軟件提供接口以使程序能使用網(wǎng)絡(luò)服務(wù)。術(shù)語(yǔ)“應(yīng)用層”并不是指運(yùn)行在網(wǎng)絡(luò)上的某個(gè)特別應(yīng)用程序,應(yīng)用層提供的服務(wù)包括文件傳輸、文件管理以及電子郵件的信息處理。 兩種協(xié)議對(duì)應(yīng)關(guān)系 我們可以看到,以太網(wǎng)網(wǎng)協(xié)議屬于OSI協(xié)議中的部分,其中OSI協(xié)議最重要的就是多了物理層,它是以太網(wǎng)設(shè)備通信的信道部分。鏈路層負(fù)責(zé)提供通信的時(shí)須,而以太網(wǎng)信號(hào)在信道中的傳遞全靠物理層。 2,常用實(shí)現(xiàn)方案選型 嵌入式以太網(wǎng)終端實(shí)現(xiàn)方案有多種,但其共同點(diǎn)都是單片機(jī)+網(wǎng)絡(luò)芯片。主要是兩種方案:?jiǎn)纹瑱C(jī)+MAC和單片機(jī)+PHY。 MAC是MediaAccessControl的縮寫(xiě),即媒體訪(fǎng)問(wèn)控制子層協(xié)議。該協(xié)議位于OSI七層協(xié)議中數(shù)據(jù)鏈路層的下半部分,主要負(fù)責(zé)控制與連接物理層的物理介質(zhì)。在發(fā)送數(shù)據(jù)的時(shí)候,MAC協(xié)議可以事先判斷是否可以發(fā)送數(shù)據(jù),如果可以發(fā)送將給數(shù)據(jù)加上一些控制信息,最終將數(shù)據(jù)以及控制信息以規(guī)定的格式發(fā)送到物理層;在接收數(shù)據(jù)的時(shí)候,MAC協(xié)議首先判斷輸入的信息并是否發(fā)生傳輸錯(cuò)誤,如果沒(méi)有錯(cuò)誤,則去掉控制信息發(fā)送至LLC層。以太網(wǎng)MAC由IEEE-802.3以太網(wǎng)標(biāo)準(zhǔn)定義。 PHY是位于OSI七層協(xié)議中的物理層,PHY在發(fā)送數(shù)據(jù)的時(shí)候,收到MAC過(guò)來(lái)的數(shù)據(jù)(對(duì)PHY來(lái)說(shuō),沒(méi)有幀的概念,對(duì)它來(lái)說(shuō),都是數(shù)據(jù)而不管什么地址,數(shù)據(jù)還是CRC),每4bit就增加1bit的檢錯(cuò)碼,然后把并行數(shù)據(jù)轉(zhuǎn)化為串行流數(shù)據(jù),再按照物理層的編碼規(guī)則把數(shù)據(jù)編碼,再變?yōu)槟M信號(hào)把數(shù)據(jù)送出去。收數(shù)據(jù)時(shí)的流程反之。 20XXAppoTechLimited.AllrightsreservedDS20XXv1003 單片機(jī)+MAC典型方案為單片機(jī)+RTL8019的方案。 RTL8019AS是高度集成以太網(wǎng)控制器,它能夠簡(jiǎn)單的解答即插即用NE2000兼容適配器,這種適配器具有二重和功率下降特性。通過(guò)三電平控制特性,RTL8019AS是已制的對(duì)網(wǎng)絡(luò)設(shè)備GREENPC理想的選擇。全二重功能能夠模擬傳播和接收在雙絞線(xiàn)到全二重以太網(wǎng)交換機(jī)。這個(gè)特性不僅強(qiáng)帶寬從10到20MBPS,而且避免了由于以太網(wǎng)頻道爭(zhēng)奪特性導(dǎo)致的讀出多路存取協(xié)議的問(wèn)題。微軟公司的即插即用功能能減輕用戶(hù)較差的營(yíng)業(yè)收入而注意適配器資源,如IRQ,輸入輸出,和存儲(chǔ)器地址等等。然而,為了特殊的應(yīng)用而得不到即插即用功能的兼容性,RTL8019AS支持JUMPER和JUMPERLESS選項(xiàng)。 為了提供完全解決即插即用方案,RTL8019AS在集成10BASET收發(fā)器,BNC,和AUI接口之間的自動(dòng)檢測(cè)功能。此外,8條IRQ總線(xiàn)和16條基本地址總線(xiàn)為大資源情況下提供了寬松的環(huán)境。 RTL8019AS支持16k,32k,和64k字節(jié)BROM和閃存接口。它仍然提供頁(yè)面模式功能,這種功能能支持在僅16k字節(jié)內(nèi)存系統(tǒng)空間下的4M字節(jié)的BROM.此外,BROM的無(wú)用命令被用來(lái)釋放BROM內(nèi)存空間。RTL8019AS用16k字節(jié)SRAM設(shè)計(jì)在單片芯片上,它的設(shè)計(jì)不僅提供了更多友好的功能,而且節(jié)省了SRAM存儲(chǔ)資源。 單片機(jī)+PHY典型方案為單片機(jī)+RTL8201,RTL8201具有成本低,速度快(支持100Mbps)等優(yōu)點(diǎn)。 RTL8201BL是一個(gè)單端口的物理層收發(fā)器,它只有一個(gè)MII/SNI(媒體獨(dú)立接口/串行網(wǎng)絡(luò)接口)接口。它實(shí)現(xiàn)了全部的10/100M以太網(wǎng)物理層功能,包括物理層編碼子層(PCS),物理層介質(zhì)連接設(shè)備(PMA),雙絞線(xiàn)物理媒介相關(guān)子層(TP-PMD),10Base-Tx編解碼和雙絞線(xiàn)媒介訪(fǎng)問(wèn)單元(TPMAU)。PECL接口支持連接一個(gè)外部的100Base-FX光纖收發(fā)器。這款芯片使用先進(jìn)的CMOS工藝制作以滿(mǎn)足低壓低功耗的需求。RTL8201BL可以在NIC,MAU,R,ACR,以太網(wǎng)HUB,或以太網(wǎng)交換機(jī)中使用。另外,它也可以用于任何有以太網(wǎng)MAC并且需要一個(gè)物理上的雙絞線(xiàn)連接或一個(gè)光纖PECL接口以連接一個(gè)外部的100base-FX光纖收發(fā)器模塊的嵌入式系統(tǒng)。 MII接口 MII即媒體獨(dú)立接口,它是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)。它包括一個(gè)數(shù)據(jù)接口,以及一個(gè)MAC和PHY之間的管理接口。數(shù)據(jù)接口包括分別用于發(fā)送器和接收器的兩條獨(dú)立信道。每條信道都有自己的數(shù)據(jù)、時(shí)鐘和控制信號(hào)。MII數(shù)據(jù)接口總共需要16個(gè)信號(hào)。管理接口是個(gè)雙信號(hào)接口:一個(gè)是時(shí)鐘信號(hào),另一個(gè)是數(shù)據(jù)信號(hào)。通過(guò)管理接口,上層能監(jiān)視和控制PHY。MIIManagementinterface只有兩條信號(hào)線(xiàn)。Theconfigurationandstatusdataiswritten/readto/fromthePHYviatheMDIOsignal. MII標(biāo)準(zhǔn)接口用于連快FastEtherMAC-block與PHY?!敖橘|(zhì)無(wú)關(guān)”表明在不對(duì)MAC硬件重新設(shè)計(jì)或替換的情況下,任何類(lèi)型的PHY設(shè)備都可以正常工作。在其他速率下工作的與MII等效的接口有:AUI(10M以太網(wǎng))、GMII(Gigabit以太網(wǎng))和XAUI(10-Gigabit以太網(wǎng))。 我們使用了珠海建榮集成(Appotech)的AX20XX單片機(jī)+RTL8201的方案。 AX20XX是一種國(guó)產(chǎn)的基于8051內(nèi)核的OTP單片機(jī),具有兩個(gè)DPTR地址指針,內(nèi)部集成了部分?jǐn)U展SRAM,程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器地址可以交叉訪(fǎng)問(wèn)。該單片機(jī)大多數(shù)指令都在一個(gè)時(shí)鐘周期內(nèi)完成,并且集成了DSPMAC(乘加器),可用于數(shù)字信號(hào)處理。 AX20XX具有GPSI接口,可以工作在MII兼容模式下,實(shí)現(xiàn)以太網(wǎng)MAC功能,并且工作于DMA模式。單片機(jī)性能可以達(dá)到100MIPS,集成32KBSRAM,并帶有硬件CRC模塊,可方便的用于以太網(wǎng)數(shù)據(jù)封裝的處理。所以該單片機(jī)非常適合用于以太網(wǎng)終端的應(yīng)用。 20XXAppoTechLimited.AllrightsreservedDS20XXv1004 AX20XXHighPerformance8-bitRISCMicrocontroller HighPerformance8-bitRISCMCUDC-125MHzoperationCompatiblewith8051 40nsinternalinterruptresponseat125MIPSAllinstructionsaresingle-cycledexcept branchinginstructions Twodatapointersforindirectaddressing ProgramMemoryandDataMemory32KBytesOTPprogrammemory 64KBytesinstructionSRAMusedfor programand/ordatamemory256BytesinternaldataSRAM 64KBytesExternalMemoryInterface(EMI), supportDMAtoon-chipSRAM InterruptFeatures 26vectoredinterrupts3levelsinterruptpriority Externalwakeup/interruptcapabilitieson Port1 2levelsinterruptpriorityselectionforallthe hardwareinterruptsourcesexceptWatchdogandLVDwheretheyoccupythethirdlevelFlexibleI/O 60GPIOpinsin7andahalfports. AllGPIOpinscanbeindividually programmableasinputoroutput AllGPIOpinsareinternallypull-upselectableCMOS/TTL-levelSchmitttriggeredinputsAllGPIOpinsare8mAsink/sourcecurrent outputdriving DigitalPeripheralFeatures Two16-bittimerspatiblewith8051s timer0timer1 Twomulti-function16-bittimers,support CaptureandPWMmode Two8-bittimers,supportCapturemode. WatchdogTimerwithon-chip1MHzRC oscillator Twohigh-speedfull-duplexUARTTwohigh-speedSPI,supportDMA1GPSIinterface,supportDMA Two4-channelIISinterfaces,supportDMA1programmablelinearfeedbackshift registers 1CRC(循環(huán)冗余校驗(yàn))FIFO,canuseforCRC16 andCRC32calculating1ECC(錯(cuò)誤校驗(yàn)糾正)FIFO 116-bit/24-bitDSPengine,supportDMA.1Bit-fetcher,canuseforbitstreamanalyzingFull-speedUSB2.0OTG(onthego)controller with4endpoints(includingendpoint0)and512bytesFIFOtotally. AnalogPeripheralFeatures420MHzCrystalOscillator1MHzRCoscillator Full-speedUSB2.0OTGPHY 40200MHzFlexiblePLL-basedclock generator 2channels16bitClass-DDAC 1channel8levelsLowVoltageDetectorPower-onreset 3.3Vto1.8VLowDrop-Outregulator ProgrammingandDebuggingSupportIn-SystemProgramming(ISP)supportIn-SystemDebugging(ISD)support PowerSupply LDOVDD,VDDIO,PLLVDDis3.0-3.6VVDDCOREis1.6-2.0V Packages 80-pinLQFP(10mmx10mm)64-pinLQFP(10mmx10mm)48-pinLQFP(7mmx7mm)DIEfor 20XXAppoTechLimited.AllrightsreservedDS20XXv100 3,系統(tǒng)設(shè)計(jì)與系統(tǒng)框圖 在基于AX20XX單片機(jī)的以太網(wǎng)控制終端的方案中,以AX20XX單片機(jī)為控制核心,單片機(jī)負(fù)責(zé)以下工作: 硬件系統(tǒng)部分的設(shè)計(jì) 1,在單片機(jī)內(nèi)部開(kāi)辟兩個(gè)儲(chǔ)存空間,分別用于發(fā)送和接受數(shù)據(jù)流。以太網(wǎng)封裝格式中,是按照6字節(jié)目的硬件地址,6字節(jié)源地址,2字節(jié)類(lèi)型,461500字節(jié)的數(shù)據(jù),4字節(jié)的CRC校驗(yàn)碼組成。應(yīng)此,每個(gè)空間大小應(yīng)該設(shè)置為1518字節(jié)。單片機(jī)訪(fǎng)問(wèn)這兩個(gè)空間,發(fā)送數(shù)據(jù)時(shí),將相應(yīng)協(xié)議的報(bào)頭和報(bào)文填入對(duì)應(yīng)的位置,再將空間內(nèi)的整個(gè)數(shù)據(jù)發(fā)送出去;接受數(shù)據(jù)時(shí),單片機(jī)訪(fǎng)問(wèn)相應(yīng)協(xié)議的報(bào)頭位置,判斷收到數(shù)據(jù)報(bào)的類(lèi)型,再處理相應(yīng)的報(bào)文。 圖2-1 2,單片機(jī)利用MII接口與PHY連接,MAC協(xié)議由單片機(jī)提供。單片機(jī)內(nèi)部產(chǎn)生MAC地址。以太網(wǎng)通信最終實(shí)質(zhì)是以太網(wǎng)設(shè)備訪(fǎng)問(wèn)對(duì)方的48位MAC地址。建榮的AX20XX單片機(jī)沒(méi)有專(zhuān)門(mén)的符合IEEE802.3標(biāo)準(zhǔn)的MII接口,而是GPSI(通用串行接口)工作在MII模式下。由于AX20XX的MII/GPSI接口支持DMA工作模式,并內(nèi)部集成有32KBSRAM,可以直接被MII接口控制器讀寫(xiě)。因此,在該方案中使用DMA模式,MCU只往緩沖區(qū)中讀寫(xiě)數(shù)據(jù),MII控制器會(huì)自動(dòng)通過(guò)DMA將緩沖區(qū)的數(shù)據(jù)發(fā)到以太網(wǎng),或者將以太網(wǎng)的數(shù)據(jù)收到緩沖區(qū)中,供CPU處理。 3,單片機(jī)利用UART接口,通過(guò)RS23轉(zhuǎn)換器,在單片機(jī)收到以太網(wǎng)數(shù)據(jù)包時(shí),通過(guò)串口,將收到的數(shù)據(jù)打印到顯示屏上。或者通過(guò)串口將數(shù)據(jù)發(fā)到單片機(jī),再轉(zhuǎn)發(fā)到以太網(wǎng)。 6 圖2-2IEEE-802.3規(guī)范的以太網(wǎng)接口相關(guān)介紹 ETHERNET的接口實(shí)質(zhì)是MAC通過(guò)MII總線(xiàn)控制PHY的過(guò)程。 MAC是MediaAccessControl的縮寫(xiě),即媒體訪(fǎng)問(wèn)控制子層協(xié)議。該協(xié)議位于OSI七層協(xié)議中數(shù)據(jù)鏈路層的下半部分,主要負(fù)責(zé)控制與連接物理層的物理介質(zhì)。在發(fā)送數(shù)據(jù)的時(shí)候,MAC協(xié)議可以事先判斷是否可以發(fā)送數(shù)據(jù),如果可以發(fā)送將給數(shù)據(jù)加上一些控制信息,最終將數(shù)據(jù)以及控制信息以規(guī)定的格式發(fā)送到物理層;在接收數(shù)據(jù)的時(shí)候,MAC協(xié)議首先判斷輸入的信息并是否發(fā)生傳輸錯(cuò)誤,如果沒(méi)有錯(cuò)誤,則去掉控制信息發(fā)送至LLC層。以太網(wǎng)MAC由IEEE-802.3以太網(wǎng)標(biāo)準(zhǔn)定義。 MII(MediaIndependentInterface)即媒體獨(dú)立接口,“媒體獨(dú)立”表明在不對(duì)MAC硬件重新設(shè)計(jì)或替換的情況下,任何類(lèi)型的PHY設(shè)備都可以正常工作。包括分別用于發(fā)送器和接收器的兩條獨(dú)立信道。每條信道都有自己的數(shù)據(jù)、時(shí)鐘和控制信號(hào)。MII數(shù)據(jù)接口總共需要16個(gè)信號(hào),包括TX_ER,TXD,TX_EN,TX_CLK,COL,RXD,RX_EX,RX_CLK,CRS,RX_DV等。 MII以4位半字節(jié)方式傳送數(shù)據(jù)雙向傳輸,時(shí)鐘速率25MHz。其工作速率可達(dá)100Mb/s。MII管理接口是個(gè)雙信號(hào)接口,一個(gè)是時(shí)鐘信號(hào),另一個(gè)是數(shù)據(jù)信號(hào)。通過(guò)管理接口,上層能監(jiān)視和控制PHY。其管理是使用SMI(SerialManagementInterface)總線(xiàn)通過(guò)讀寫(xiě)PHY的寄存器來(lái)完成的。PHY里面的部分寄存器是IEEE定義的,這樣PHY把自己的目前的狀態(tài)反映到寄存器里面,MAC通過(guò)SMI總線(xiàn)不斷的讀取PHY的狀態(tài)寄存器以得知目前PHY的狀態(tài),例如連接速度,雙工的能力等。當(dāng)然也可以通過(guò)SMI設(shè)置PHY的寄存器達(dá)到控制的目的,例如流控的打開(kāi)關(guān)閉,自協(xié)商模式還是強(qiáng)制模式等。不論是物理連接的MII總線(xiàn)和SMI總線(xiàn)還是PHY的狀態(tài)寄存器和控制寄存器都是有IEEE的規(guī)范的,因此不同公司的MAC和PHY一樣可以協(xié)調(diào)工作。當(dāng)然為了配合不同公司的PHY的自己特有的一些功能,驅(qū)動(dòng)需要做相應(yīng)的修改。 IEEE802.3標(biāo)準(zhǔn)定義的以太網(wǎng)工作方式如下:IEEE802.3中定義的介質(zhì)獨(dú)立接口(MII)主要用來(lái)連接介質(zhì)訪(fǎng)問(wèn)控制子層(MAC)和物理層(PHY),目的是使不同的物理層能夠使用統(tǒng)一的接口連到MAC層,即物理層對(duì)MAC層是透明的。該接口可用于直接連接MAC與PHY芯片,也可連接分別裝有MAC和PHY的兩塊印制板,此外,還可以通過(guò)一段電纜連接裝有MAC和PHY的設(shè)備。這一接口支持10Mbps和100Mbps兩種速率,而且兩種速率實(shí)現(xiàn)的功能相同,其區(qū)別只是工作頻率不一樣。介質(zhì)獨(dú)立接口由18根信號(hào)線(xiàn)組成,其中發(fā)送方向7根(TXD、TXEN、TXCLK、TXER),接收方向7根(RXD、RXDV、RXCLK、RXER),此外,還有載波偵聽(tīng)(CRS)、沖突檢測(cè)(COL)和串行管理通道(MDC、MDIO)信號(hào)。發(fā)送時(shí)鐘(TXCLK)和接收時(shí)鐘(RXCLK)一般由PHY提供(本文還將提出一種由另一端MAC或外界提供標(biāo)準(zhǔn)時(shí)鐘的設(shè)計(jì)方案),根據(jù)數(shù)據(jù)率10Mpbs/100Mbps選擇2.5MHz或25MHz時(shí)鐘,且不論有無(wú)有效數(shù)據(jù)收發(fā),時(shí)鐘一直被正常提供。在發(fā)送方向,當(dāng)介質(zhì)訪(fǎng)問(wèn)控制子層有數(shù)據(jù)要發(fā)送時(shí),在某個(gè)發(fā)送時(shí)鐘上升沿應(yīng)將發(fā)送使能信號(hào)(TXEN)置為高電平,同時(shí)發(fā)送待發(fā)數(shù)據(jù)(TXD)的前同步碼,直到數(shù)據(jù)發(fā)送完畢,發(fā)送使能信號(hào)被置為低電平為止。而在接收方向,一旦MAC控制器檢測(cè)出接收數(shù)據(jù)有效信號(hào)(由PHY發(fā)出)為高電平,系統(tǒng)將在接下來(lái)的每個(gè)接收時(shí)鐘上升沿采集接收數(shù)據(jù)(RXD),直到接收數(shù)據(jù)有效 信號(hào)位被置為低電平為止。在半雙工模式下,PHY將根據(jù)物理鏈路狀況輸出載波偵聽(tīng)(CRS)和沖突檢測(cè)(COL)信號(hào),這兩種信號(hào)都不必與時(shí)鐘同步。 4,網(wǎng)絡(luò)協(xié)議設(shè)計(jì)詳解 在該以太網(wǎng)控制終端設(shè)計(jì)中由于只需要實(shí)現(xiàn)ping功能,參考TCP/IP詳解卷1:協(xié)議,該方案中需要實(shí)現(xiàn)ARP地址解析協(xié)議,IP協(xié)議,ICMP協(xié)議,并實(shí)現(xiàn)UDP和TCP協(xié)議。 1)以太網(wǎng)首部: 以太網(wǎng)首部長(zhǎng)度14字節(jié),是由6字節(jié)的目的地址,6字節(jié)源地址,2字節(jié)類(lèi)型構(gòu)成。6字節(jié)以太網(wǎng)首部地址又叫MAC地址,MAC地址具有唯一性,每個(gè)以太網(wǎng)設(shè)備都有自己的MAC地址。以太網(wǎng)設(shè)備相互通信時(shí),硬件尋址對(duì)方的MAC地址。由于以太網(wǎng)中每個(gè)設(shè)備的MAC地址都是唯一的,所以只要確定一個(gè)目標(biāo)地址就能確定一個(gè)唯一的設(shè)備。在廣播模式下,目標(biāo)地址為全部為0XFF。以太網(wǎng)數(shù)據(jù)包類(lèi)型標(biāo)志為2字節(jié),其中IP包為0x0800,ARP包為0x0806。以太網(wǎng)數(shù)據(jù)包最后有一個(gè)4字節(jié)的CRC校驗(yàn)包,確保數(shù)據(jù)在以太網(wǎng)傳輸中的正確性。一個(gè)以太網(wǎng)數(shù)據(jù)包最小長(zhǎng)度64字節(jié),最大長(zhǎng)度為1518字節(jié)。因此任何一個(gè)以太網(wǎng)數(shù)據(jù)包,不管是什么類(lèi)型,必須滿(mǎn)足以太網(wǎng)數(shù)據(jù)包最小長(zhǎng)度。 2)ARP地址解析協(xié)議: 數(shù)據(jù)鏈路如以太網(wǎng)或令牌環(huán)網(wǎng)都有自己的尋址機(jī)制(常常為48bit地址),這是使用數(shù)據(jù)鏈路的任何網(wǎng)絡(luò)層都必須遵從的。一個(gè)網(wǎng)絡(luò)如以太網(wǎng)可以同時(shí)被不同的網(wǎng)絡(luò)層使用。當(dāng)一臺(tái)主機(jī)把以太網(wǎng)數(shù)據(jù)幀發(fā)送到位于同一局域網(wǎng)上的另一臺(tái)主機(jī)時(shí),是根據(jù)48bit的以太網(wǎng)地址來(lái)確定目的接口的。設(shè)備驅(qū)動(dòng)程序從不檢查IP數(shù)據(jù)報(bào)中的目的IP地址。地址解析為這兩種不同的地址形式提供映射:32bit的IP地址和數(shù)據(jù)鏈路層使用的任何類(lèi)型的地址。 ARP的數(shù)據(jù)包格式如下,長(zhǎng)度為42字節(jié)。以太網(wǎng)首部14個(gè)字節(jié),源地址為本機(jī)的固定地址,是個(gè)唯一的值,供硬件尋址用;目標(biāo)地址在ARP請(qǐng)求中為廣播模式,即全部為0xff,當(dāng)從設(shè)備收到ARP請(qǐng)求后,回復(fù)ARP應(yīng)答,在ARP應(yīng)答中以太網(wǎng)目的地址為主機(jī)的以太網(wǎng)硬件地址,以太網(wǎng)源地址為本機(jī)以太網(wǎng)硬件地址;幀類(lèi)型2字節(jié)長(zhǎng)度,在ARP包中為0x0806。ARP報(bào)文為28個(gè)字節(jié),硬件類(lèi)型為2字節(jié),硬件類(lèi)型字段表示硬件地址的類(lèi)型,它的值為1即表示以太網(wǎng)地址。協(xié)議類(lèi)型為2字節(jié),協(xié)議類(lèi)型字段表示要映射的協(xié)議地址類(lèi)型,它的值為0x0800即表示IP地址。它的值與包含IP數(shù)據(jù)報(bào)的以太網(wǎng)數(shù)據(jù)幀中的類(lèi)型字段的值相同,這是有意設(shè)計(jì)的。接下來(lái)的兩個(gè)1字節(jié)的字段,硬件地址長(zhǎng)度和協(xié)議地址長(zhǎng)度分別指出硬件地址和協(xié)議地址的長(zhǎng)度,以字節(jié)為單位。對(duì)于以太網(wǎng)上IP地址的ARP請(qǐng)求或應(yīng)答來(lái)說(shuō),它們的值分別為6和4。操作字段指出四種操作類(lèi)型,它們是ARP請(qǐng)求(值為1)、ARP應(yīng)答(值為2)、RARP請(qǐng)求(值為3)和RARP應(yīng)答(值為4)。這個(gè)字段必需的,因?yàn)锳RP請(qǐng)求和ARP應(yīng)答的幀類(lèi)型字段值是相同的。接下來(lái)的四個(gè)字段是發(fā)送端的硬件地址(在本例中是以太網(wǎng)地址)、發(fā)送端的協(xié)議地址(IP地址)、目的端的硬件地址和目的端的協(xié)議地址。注意,這里有一些重復(fù)信息:在以太網(wǎng)的數(shù)據(jù)幀報(bào)頭中和ARP請(qǐng)求數(shù)據(jù)幀中都有發(fā)送端的硬件地址。 對(duì)于一個(gè)ARP請(qǐng)求來(lái)說(shuō),除目的端硬件地址外的所有其他的字段都有填充值。當(dāng)系統(tǒng)收到 一份目的端為本機(jī)的ARP請(qǐng)求報(bào)文后,它就把硬件地址填進(jìn)去,然后用兩個(gè)目的端地址分別替換兩個(gè)發(fā)送端地址,并把操作字段置為2,最后把它發(fā)送回去。 由于在以太網(wǎng)協(xié)議中,以太網(wǎng)報(bào)文長(zhǎng)度在461500字節(jié),然后再跟4字節(jié)的CRC校驗(yàn),一個(gè)完整的以太網(wǎng)數(shù)據(jù)包最小長(zhǎng)度為64字節(jié)。所以一個(gè)ARP包長(zhǎng)度必須滿(mǎn)足以太網(wǎng)數(shù)據(jù)包最小長(zhǎng)度,必須要有18字節(jié)的填充,再跟4字節(jié)的CRC校驗(yàn)。 3)IP網(wǎng)際協(xié)議:IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報(bào)格式傳輸 IP提供不可靠、無(wú)連接的數(shù)據(jù)報(bào)傳送服務(wù)。不可靠(unreliable)的意思是它不能保證IP數(shù)據(jù)報(bào)能成功地到達(dá)目的地。IP僅提供最好的傳輸服務(wù)。無(wú)連接(connectionless)這個(gè)術(shù)語(yǔ)的意思是IP并不維護(hù)任何關(guān)于后續(xù)數(shù)據(jù)報(bào)的狀態(tài)信息。每個(gè)數(shù)據(jù)報(bào)的處理是相互獨(dú)立的。這也說(shuō)明,IP數(shù)據(jù)報(bào)可以不按發(fā)送順序接收。 IP數(shù)據(jù)報(bào)的格式如圖2-4所示。普通的IP首部長(zhǎng)為20個(gè)字節(jié),除非含有選項(xiàng)字段。 協(xié)議版本號(hào)是4,因此IP有時(shí)也稱(chēng)作IPv4,以后還有一種新的IPv6協(xié)議,在此不作介紹。首部長(zhǎng)度指的是首部占32bit字的數(shù)目,包括任何選項(xiàng)。由于它是一個(gè)4比特字段,因此首部最長(zhǎng)為60個(gè)字節(jié)。普通IP數(shù)據(jù)報(bào)(沒(méi)有任何選擇項(xiàng))字段的值是5。 服務(wù)類(lèi)型(TOS)字段包括一個(gè)3bit的優(yōu)先權(quán)子字段(現(xiàn)在已被忽略),4bit的TOS子字段和1bit未用位但必須置0。4bit的TOS分別代表:最小時(shí)延、最大吞吐量、最高可靠性和最小費(fèi)用。4bit中只能置其中1bit。如果所有4bit均為0,那么就意味著是一般服務(wù)。服務(wù)類(lèi)型參見(jiàn)(表2-1)。 總長(zhǎng)度字段是指整個(gè)IP數(shù)據(jù)報(bào)的長(zhǎng)度,以字節(jié)為單位。利用首部長(zhǎng)度字段和總長(zhǎng)度字段,就可以知道IP數(shù)據(jù)報(bào)中數(shù)據(jù)內(nèi)容的起始位置和長(zhǎng)度。由于該字段長(zhǎng)16比特,所以IP數(shù)據(jù)報(bào)最長(zhǎng)可達(dá)65535字節(jié)。當(dāng)數(shù)據(jù)報(bào)被分片時(shí),該字段的值也隨著變化。盡管可以傳送一個(gè)長(zhǎng)達(dá)65535字節(jié)的IP數(shù)據(jù)報(bào),但是大多數(shù)的鏈路層都會(huì)對(duì)它進(jìn)行分片。而且,主機(jī)也要求不能接收超過(guò)576字節(jié)的數(shù)據(jù)報(bào)。由于TCP把用戶(hù)數(shù)據(jù)分成若干片,因此一般來(lái)說(shuō)這個(gè)限制不會(huì)影響TCP??傞L(zhǎng)度字段是IP首部中必要的內(nèi)容,因?yàn)橐恍?shù)據(jù)鏈路(如以太網(wǎng))需要填充一些數(shù)據(jù)以達(dá)到最小長(zhǎng)度。盡管以太網(wǎng)的最小幀長(zhǎng)為46字節(jié)(見(jiàn)圖2-2),但是IP數(shù)據(jù)可能會(huì)更短。如果沒(méi)有總長(zhǎng)度字段,那么IP層就不知道46字節(jié)中有多少是IP數(shù)據(jù)報(bào)的內(nèi)容。 標(biāo)識(shí)字段唯一地標(biāo)識(shí)主機(jī)發(fā)送的每一份數(shù)據(jù)報(bào)。通常每發(fā)送一份報(bào)文它的值就會(huì)加1。標(biāo)識(shí)字段應(yīng)該由讓IP發(fā)送數(shù)據(jù)報(bào)的上層來(lái)選擇。假設(shè)有兩個(gè)連續(xù)的IP數(shù)據(jù)報(bào),其中一個(gè)是由TCP生成的,而另一個(gè)是由UDP生成的,那么它們可能具有相同的標(biāo)識(shí)字段。盡管這也可以照常工作(由重組算法來(lái)處理),但是在大多數(shù)從伯克利派生出來(lái)的系統(tǒng)中,每發(fā)送一個(gè)IP數(shù)據(jù)報(bào),IP層都要把一個(gè)內(nèi)核變量的值加1,不管交給IP的數(shù)據(jù)來(lái)自哪一層。內(nèi)核變量的初始值根據(jù)系統(tǒng)引導(dǎo)時(shí)的時(shí)間來(lái)設(shè)置。 片偏移字段指的是該片偏移原始數(shù)據(jù)報(bào)開(kāi)始處的位置。另外,當(dāng)數(shù)據(jù)報(bào)被分片后,每個(gè)片的總長(zhǎng)度值要改為該片的長(zhǎng)度值。 TTL(time-to-live)生存時(shí)間字段設(shè)置了數(shù)據(jù)報(bào)可以經(jīng)過(guò)的最多路由器數(shù)。它指定了數(shù)據(jù)報(bào)的生存時(shí)間。TTL的初始值由源主機(jī)設(shè)置(通常為32或64),一旦經(jīng)過(guò)一個(gè)處理它的路由器,它的值就減去1。當(dāng)該字段的值為0時(shí),數(shù)據(jù)報(bào)就被丟棄,并發(fā)送ICMP報(bào)文通知源主機(jī)。第8章我們討論Traceroute程序時(shí)將再回來(lái)討論該字段。 協(xié)議字段為IP在首部中存入一個(gè)長(zhǎng)度為8bit的數(shù)值。1表示為ICMP協(xié)議,2表示為IGMP協(xié)議,6表示為T(mén)CP協(xié)議,17表示為UDP協(xié)議。 首部檢驗(yàn)和字段是根據(jù)IP首部計(jì)算的檢驗(yàn)和碼。它不對(duì)首部后面的數(shù)據(jù)進(jìn)行計(jì)算。ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時(shí)覆蓋首部和數(shù)據(jù)檢驗(yàn)和碼。為了計(jì)算一份數(shù)據(jù)報(bào)的IP檢驗(yàn)和,首先把檢驗(yàn)和字段置為0。然后,對(duì)首部中每個(gè)16bit進(jìn)行二進(jìn)制反碼求和(整個(gè)首部看成是由一串16bit的字組成),結(jié)果存在檢驗(yàn)和字段中。當(dāng)收到一份IP數(shù)據(jù)報(bào)后,同樣對(duì)首部中每個(gè)16bit進(jìn)行二進(jìn)制反碼的求和。由于接收方在計(jì)算過(guò)程中包含了發(fā)送方存在首部中的檢驗(yàn)和,因此,如果首部在傳輸過(guò)程中沒(méi)有發(fā)生任何差錯(cuò),那么接收方計(jì)算的結(jié)果應(yīng)該為全1。如果結(jié)果不是全1(即檢驗(yàn)和錯(cuò)誤),那么IP就丟棄收到的數(shù)據(jù)報(bào)。但是不生成差錯(cuò)報(bào)文,由上層去發(fā)現(xiàn)丟失的數(shù)據(jù)報(bào)并進(jìn)行重傳。 4)ICMPInter控制報(bào)文協(xié)議與ping命令:ICMP經(jīng)常被認(rèn)為是IP層的一個(gè)組成部分。_ 它傳遞差錯(cuò)報(bào)文以及其他需要注意的信息。ICMP報(bào)文通常被IP層或更高層協(xié)議(TCP或UDP)使用。一些ICMP報(bào)文把差錯(cuò)報(bào)文返回給用戶(hù)進(jìn)程。 ICMP報(bào)文各種類(lèi)型如圖2-7所示,不同類(lèi)型由報(bào)文中的類(lèi)型字段和代碼字段來(lái)共同決定。圖中的最后兩列表明ICMP報(bào)文是一份查詢(xún)報(bào)文還是一份差錯(cuò)報(bào)文。因?yàn)閷?duì)ICMP差錯(cuò)報(bào)文有時(shí)需要作特殊處理,因此我們需要對(duì)它們進(jìn)行區(qū)分。例如,在對(duì)ICMP差錯(cuò)報(bào)文進(jìn)行響應(yīng)時(shí),永遠(yuǎn)不會(huì)生成另一份ICMP差錯(cuò)報(bào)文(如果沒(méi)有這個(gè)限制規(guī)則,可能會(huì)遇到一個(gè)差錯(cuò)產(chǎn)生另一個(gè)差錯(cuò)的情況,而差錯(cuò)再產(chǎn)生差錯(cuò),這樣會(huì)無(wú)休止地循環(huán)下去)。當(dāng)發(fā)送一份ICMP差錯(cuò)報(bào)文時(shí),報(bào)文始終包含IP的首部和產(chǎn)生ICMP差錯(cuò)報(bào)文的IP數(shù)據(jù)報(bào)的前8個(gè)字節(jié)。這樣,接收ICMP差錯(cuò)報(bào)文的模塊就會(huì)把它與某個(gè)特定的協(xié)議(根據(jù)IP數(shù)據(jù)報(bào)首部中的協(xié)議字段來(lái)判斷)和用戶(hù)進(jìn)程(根據(jù)包含在IP數(shù)據(jù)報(bào)前8個(gè)字節(jié)中的TCP或UDP報(bào)文首部中的TCP或UDP端口號(hào)來(lái)判斷)聯(lián)系起來(lái)。 下面各種情況都不會(huì)導(dǎo)致產(chǎn)生ICMP差錯(cuò)報(bào)文: 1)ICMP差錯(cuò)報(bào)文(但是,ICMP查詢(xún)報(bào)文可能會(huì)產(chǎn)生ICMP差錯(cuò)報(bào)文)。 2)目的地址是廣播地址(見(jiàn)圖3-9)或多播地址(D類(lèi)地址,見(jiàn)圖1-5)的IP數(shù)據(jù)報(bào)。 3)作為鏈路層廣播的數(shù)據(jù)報(bào)。 4)不是IP分片的第一片(將在11.5節(jié)介紹分片)。 5)源地址不是單個(gè)主機(jī)的數(shù)據(jù)報(bào)。這就是說(shuō),源地址不能為零地址、環(huán)回地址、廣播地址或多播地址。 這些規(guī)則是為了防止過(guò)去允許ICMP差錯(cuò)報(bào)文對(duì)廣播分組響應(yīng)所帶來(lái)的廣播風(fēng)暴。 ICMP地址掩碼請(qǐng)求用于無(wú)盤(pán)系統(tǒng)在引導(dǎo)過(guò)程中獲取自己的子網(wǎng)掩碼(3.5節(jié))。系統(tǒng)廣播它的ICMP請(qǐng)求報(bào)文(這一過(guò)程與無(wú)盤(pán)系統(tǒng)在引導(dǎo)過(guò)程中用RARP獲取IP地址是類(lèi)似的)。無(wú)盤(pán)系統(tǒng)獲取子網(wǎng)掩碼的另一個(gè)方法是BOOTP協(xié)議,我們將在第16章中介紹。ICMP地址掩碼請(qǐng)求和應(yīng)答報(bào)文的格式如圖2-8所示。 ICMP報(bào)文中的標(biāo)識(shí)符和序列號(hào)字段由發(fā)送端任意選擇設(shè)定,這些值在應(yīng)答中將被返回。這樣,發(fā)送端就可以把應(yīng)答與請(qǐng)求進(jìn)行匹配。 Ping程序由目的是為了測(cè)試另一臺(tái)主機(jī)是否可達(dá)。該程序發(fā)送一份ICMP回顯請(qǐng)求報(bào)文給主機(jī),并等待返回ICMP回顯應(yīng)答。一般來(lái)說(shuō),如果不能Ping到某臺(tái)主機(jī),那么就不能Tel或者FTP到那臺(tái)主機(jī)。反過(guò)來(lái),如果不能Tel到某臺(tái)主機(jī),那么通??梢杂肞ing程序來(lái)確定問(wèn)題出在哪里。Ping程序還能測(cè)出到這臺(tái)主機(jī)的往返時(shí)間,以表明該主機(jī)離我們有“多遠(yuǎn)”。 我們稱(chēng)發(fā)送回顯請(qǐng)求的ping程序?yàn)榭蛻?hù),而稱(chēng)被ping的主機(jī)為服務(wù)器。大多數(shù)的TCP/IP實(shí)現(xiàn)都在內(nèi)核中直接支持Ping服務(wù)器這種服務(wù)器不是一個(gè)用戶(hù)進(jìn)程。ICMP回顯請(qǐng)求和回顯應(yīng)答報(bào)文如圖2-9所示。 在局域網(wǎng)上運(yùn)行ping程序的結(jié)果輸出一般有如下格式: 當(dāng)返回ICMP回顯應(yīng)答時(shí),要打印出序列號(hào)和TTL,并計(jì)算往返時(shí)間。從上面的輸出中可以看出,回顯應(yīng)答是以發(fā)送的次序返回的(0,1,2等)。 ping程序通過(guò)在ICMP報(bào)文數(shù)據(jù)中存放發(fā)送請(qǐng)求的時(shí)間值來(lái)計(jì)算往返時(shí)間。當(dāng)應(yīng)答返回時(shí),用當(dāng)前時(shí)間減去存放在ICMP報(bào)文中的時(shí)間值,即是往返時(shí)間。輸出的第一行包括目的主機(jī)的IP地址,盡管指定的是它的名字。這說(shuō)明名字已經(jīng)經(jīng)過(guò)解析器被轉(zhuǎn)換成IP地址了。現(xiàn)在,我們發(fā)現(xiàn),如果敲入ping命令,幾秒鐘過(guò)后會(huì)在第1行打印出IP地址,DNS就是利用這段時(shí)間來(lái)確定主機(jī)名所對(duì)應(yīng)的IP地址。 通常,第1個(gè)往返時(shí)間值要比其他的大。這是由于目的端的硬件地址不在ARP高速緩存中第1個(gè)RTT中多出的3ms很可能就是因?yàn)榘l(fā)送ARP請(qǐng)求和接收ARP應(yīng)答所花費(fèi)的時(shí)間。 以上是ping功能的實(shí)現(xiàn)原理,UDP和TCP協(xié)議實(shí)現(xiàn)參考TCP/IP詳解卷1:協(xié)議,本文只給出UDP和TCP的封裝格式。 5)UDP協(xié)議 UDP是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議:進(jìn)程的每個(gè)輸出操作都正好產(chǎn)生一個(gè)UDP數(shù)據(jù)報(bào),并組裝成一份待發(fā)送的IP數(shù)據(jù)報(bào)。這與面向流字符的協(xié)議不同,如TCP,應(yīng)用程序產(chǎn)生的全體數(shù)據(jù)與真正發(fā)送的單個(gè)IP數(shù)據(jù)報(bào)可能沒(méi)有什么聯(lián)系。UDP數(shù)據(jù)報(bào)封裝成一份IP數(shù)據(jù)報(bào)的格式如圖2-11。 UDP不提供可靠性:它把應(yīng)用程序傳給IP層的數(shù)據(jù)發(fā)送出去,但是并不保證它們能到達(dá)目的地。應(yīng)用程序必須關(guān)心IP數(shù)據(jù)報(bào)的長(zhǎng)度。 端口號(hào)表示發(fā)送進(jìn)程和接收進(jìn)程。TCP和UDP用目的端口號(hào)來(lái)分用來(lái)自IP層的數(shù)據(jù)的過(guò)程。由于IP層已經(jīng)把IP數(shù)據(jù)報(bào)分配給TCP或UDP,因此TCP端口號(hào)由TCP來(lái)查看,而UDP端口號(hào)由UDP來(lái)查看。TCP端口號(hào)與UDP端口號(hào)是相互獨(dú)立的。 UDP長(zhǎng)度字段指的是UDP首部和UDP數(shù)據(jù)的字節(jié)長(zhǎng)度。該字段的最小值為8字節(jié)(發(fā)送一份0字節(jié)的UDP數(shù)據(jù)報(bào)是OK)。這個(gè)UDP長(zhǎng)度是有冗余的。IP數(shù)據(jù)報(bào)長(zhǎng)度指的是數(shù)據(jù)報(bào)全長(zhǎng),因此UDP數(shù)據(jù)報(bào)長(zhǎng)度是全長(zhǎng)減去IP首部的長(zhǎng)度(該值在首部長(zhǎng)度字段中指定)。 UDP檢驗(yàn)和覆蓋UDP首部和UDP數(shù)據(jù)?;叵隝P首部的檢驗(yàn)和,它只覆蓋IP的首部并不覆蓋IP數(shù)據(jù)報(bào)中的任何數(shù)據(jù)。UDP和TCP在首部中都有覆蓋它們首部和數(shù)據(jù)的檢驗(yàn)和。UDP的檢驗(yàn)和是可選的,而TCP的檢驗(yàn)和是必需的。 6)TCP協(xié)議 TCP的服務(wù):盡管TCP和UDP都使用相同的網(wǎng)絡(luò)層(IP),TCP卻向應(yīng)用層提供與UDP完全不同的服務(wù)。TCP提供一種面向連接的、可靠的字節(jié)流服務(wù)。 TCP數(shù)據(jù)被封裝在一個(gè)IP數(shù)據(jù)報(bào)中,如圖2-13所示。 每個(gè)TCP段都包含源端和目的端的端口號(hào),用于尋找發(fā)端和收端應(yīng)用進(jìn)程。這兩個(gè)值加上IP首部中的源端IP地址和目的端IP地址唯一確定一個(gè)TCP連接。 序號(hào)用來(lái)標(biāo)識(shí)從TCP發(fā)端向TCP收端發(fā)送的數(shù)據(jù)字節(jié)流,它表示在這個(gè)報(bào)文段中的的第一個(gè)數(shù)據(jù)字節(jié)。如果將字節(jié)流看作在兩個(gè)應(yīng)用程序間的單向流動(dòng),則TCP用序號(hào)對(duì)每個(gè)字節(jié)進(jìn)行計(jì)數(shù)。序號(hào)是32bit無(wú)符號(hào)數(shù),序號(hào)到達(dá)2321后又從0開(kāi)始。 既然每個(gè)傳輸?shù)淖止?jié)都被計(jì)數(shù),確認(rèn)序號(hào)包含發(fā)送確認(rèn)的一端所期望收到的下一個(gè)序號(hào)。因此,確認(rèn)序號(hào)應(yīng)當(dāng)是上次已成功收到數(shù)據(jù)字節(jié)序號(hào)加1。只有ACK標(biāo)志為1時(shí)確認(rèn)序號(hào)字段才有效。 首部長(zhǎng)度給出首部中32bit字的數(shù)目。需要這個(gè)值是因?yàn)槿芜x字段的長(zhǎng)度是可變的。這個(gè)字段占4bit,因此TCP最多有60字節(jié)的首部。然而,沒(méi)有任選字段,正常的長(zhǎng)度是20字節(jié)。在TCP首部中有6個(gè)標(biāo)志比特。它們中的多個(gè)可同時(shí)被設(shè)置為1。我們?cè)谶@兒簡(jiǎn)單介紹它們的用法。 URG緊急指針(urgentpointer)有效。 ACK確認(rèn)序號(hào)有效。 PSH接收方應(yīng)該盡快將這個(gè)報(bào)文段交給應(yīng)用層。 RST重建連接。 SYN同步序號(hào)用來(lái)發(fā)起一個(gè)連接。 FIN發(fā)端完成發(fā)送任務(wù)。 TCP的流量控制由連接的每一端通過(guò)聲明的窗口大小來(lái)提供。窗口大小為字節(jié)數(shù),起始于確認(rèn)序號(hào)字段指明的值,這個(gè)值是接收端正期望接收的字節(jié)。窗口大小是一個(gè)16bit字段,因而窗口大小最大為65535字節(jié)。 檢驗(yàn)和覆蓋了整個(gè)的TCP報(bào)文段:TCP首部和TCP數(shù)據(jù)。這是一個(gè)強(qiáng)制性的字段,一定是由發(fā)端計(jì)算和存儲(chǔ),并由收端進(jìn)行驗(yàn)證。TCP檢驗(yàn)和的計(jì)算和UDP檢驗(yàn)和的計(jì)算相似。 5,程序運(yùn)行流程 本文僅要求實(shí)現(xiàn)對(duì)ping的響應(yīng),在嵌入式系統(tǒng)中,一般只要求以太網(wǎng)終端具備對(duì)ping的應(yīng)答能力,不需要ping請(qǐng)求。另外,嵌入式以太網(wǎng)終端大多數(shù)工作在從模式,因而可以省略ARP請(qǐng)求的功能。 對(duì)于將來(lái)功能的擴(kuò)展升級(jí),可以在TCP和UDP中間任選一種協(xié)議作為數(shù)據(jù)傳輸。對(duì)于控制信號(hào),文件傳輸,采用TCP協(xié)議。對(duì)于流媒體信號(hào),可以采用UDP保證實(shí)時(shí)性。 由于TCP或者UDP與ICMP同屬于IP數(shù)據(jù)報(bào)。在修改ICMP服務(wù)程序后,可以作TCP或者UDP服務(wù)程序用。 6,以太網(wǎng)PHY層設(shè)計(jì)的注意事項(xiàng) 以太網(wǎng)PHY層屬于通信系統(tǒng)中的信道,因此要考慮到傳輸信道中的抗干擾問(wèn)題。 PHY通過(guò)RJ45接口接入銅線(xiàn),這種傳輸介質(zhì)可以實(shí)現(xiàn)長(zhǎng)距離通信。PHY的功能是將MII接口的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),在信道中收發(fā)。參考通信原理,信道中應(yīng)該加入擾碼,保證信道中的信號(hào)具有一定的頻率,防止在信道中被慮掉。PHY可以配置成半雙工、全雙工兩種模式,和10M、100M兩種連接速度。 100BaseTX采用4B/5B編碼。PHY在發(fā)送數(shù)據(jù)的時(shí)候,收到MAC過(guò)來(lái)的數(shù)據(jù)(對(duì)PHY來(lái)說(shuō),沒(méi)有幀的概念,對(duì)它來(lái)說(shuō),都是數(shù)據(jù)而不管什么地址,數(shù)據(jù)還是CRC),每4bit就增加AppoTec
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)保安班長(zhǎng)管理辦法
- 掃黃大型酒店管理辦法
- 展覽展示公司管理辦法
- 聊城公務(wù)接待管理辦法
- 建筑弱電培訓(xùn)課件大全
- 股票職業(yè)交易培訓(xùn)課件
- 肝腎關(guān)系教學(xué)課件
- 第五單元五上數(shù)學(xué)試卷
- 甘肅高考題數(shù)學(xué)試卷
- 日常用電培訓(xùn)課件
- 干濕交替環(huán)境下混凝土受硫酸鹽侵蝕劣化機(jī)理
- 骨科手術(shù)后的康復(fù)用具與輔助器具
- 小學(xué)特色課程《口風(fēng)琴課程》校本教材
- 《如何寫(xiě)文獻(xiàn)綜述》課件
- 汽車(chē)美容店計(jì)劃書(shū)案例
- 信息機(jī)房火災(zāi)事故應(yīng)急處置方案
- 統(tǒng)計(jì)職業(yè)道德規(guī)范內(nèi)容和要求
- GB/T 16886.12-2023醫(yī)療器械生物學(xué)評(píng)價(jià)第12部分:樣品制備與參照材料
- 人衛(wèi)慕課《走進(jìn)肺功能》試題答案
- 2022-2023學(xué)年海南省高一上學(xué)期期末學(xué)業(yè)水平診斷化學(xué)試題(一)
- 高中英語(yǔ)句式轉(zhuǎn)換專(zhuān)題訓(xùn)練100題(含參考答案)
評(píng)論
0/150
提交評(píng)論