單片機(jī)與以太網(wǎng)接口設(shè)計(jì)說明_第1頁
單片機(jī)與以太網(wǎng)接口設(shè)計(jì)說明_第2頁
單片機(jī)與以太網(wǎng)接口設(shè)計(jì)說明_第3頁
單片機(jī)與以太網(wǎng)接口設(shè)計(jì)說明_第4頁
單片機(jī)與以太網(wǎng)接口設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

1、目錄 TOC o 1-4 u 中文摘要1英文摘要 2第1章引言 31.1嵌入式系統(tǒng) 31.2研究項(xiàng)目的意義31.3項(xiàng)目的最終目標(biāo) 3第2 章 TCP/IP協(xié)議(堆棧)簡介 5TCP/IP 協(xié)議的分層結(jié)構(gòu)5TCP/IP協(xié)議6的封裝與分離2.2.1什么是封裝 62.2.2什么是拆分使用 62.2.3以太網(wǎng)幀格式 72.3 TCP/IP 8的子協(xié)議2.3.1 ARP協(xié)議82.3.2 IP協(xié)議102.3.3 ICMP Internet 控制消息協(xié)議 122.3.4 TCP傳輸控制協(xié)議142.3.5應(yīng)用層協(xié)議(Protocol) 17第3章硬件實(shí)現(xiàn) 183.1物理層接口實(shí)現(xiàn)183.1.1 RTL8019

2、AS 20簡介3.1.2 RTL8019AS 20的部分結(jié)構(gòu)3.1.3 RTL8019AS 20的寄存器介紹3.1.4與系統(tǒng)配置和操作相關(guān)的寄存器 213.1.5 DMA相關(guān)寄存器 233.2硬件設(shè)計(jì)253.2.1硬件接口框圖 253.2.2主要部件說明 25第4章軟件實(shí)現(xiàn) 274.1 RTL8019AS驅(qū)動(dòng)設(shè)計(jì)274.1.1 RTL8019AS 27的初始化4.1.2消息傳輸 284.1.3 消息接收 304.2 TCP/IP棧的實(shí)現(xiàn)314.2.1地址解析協(xié)議ARP 31的實(shí)現(xiàn)4.2.2 IP 協(xié)議在網(wǎng)絡(luò)層的實(shí)現(xiàn) 3 IP包處理3發(fā)送IP包354.2.3錯(cuò)誤控制消息ICMP 36的實(shí)現(xiàn)4.2

3、.4傳輸控制協(xié)議TCP 38的實(shí)現(xiàn) TCP 消息的處理(接收) 3發(fā)送TCP數(shù)據(jù)包404.2.5應(yīng)用層(協(xié)議)的實(shí)現(xiàn) 414.3輕量級(jí)TCP/IP協(xié)議棧uIP 42的嵌入4.3 . 1uIP 43的架構(gòu) uIP 在系統(tǒng)中的位置43協(xié)議棧提供的主接口444.3.2 uIP在MCS-51 MCU 44上的遷移遷移步驟4 uIP的主控制回路( main函數(shù)) 46結(jié)論 50至 51參考文獻(xiàn) 52附錄:硬件電路圖 54單片機(jī)與以太網(wǎng)的接口設(shè)計(jì)摘要:在現(xiàn)實(shí)生活中,許多嵌入式系統(tǒng)設(shè)備得到了廣泛的應(yīng)用。由于目前硬件設(shè)計(jì)的問題,沒有嵌入網(wǎng)絡(luò)連接模塊,這使得這些嵌入式系統(tǒng)的使用受到限制,并且購買新設(shè)備需要很高的

4、成本。本文設(shè)計(jì)的網(wǎng)絡(luò)接入模塊解決了嵌入式設(shè)備與以太網(wǎng)的連接問題。在不改變嵌入式設(shè)備本身結(jié)構(gòu)的情況下,用戶終端可以通過該模塊快速方便地訪問現(xiàn)有的各種串口設(shè)備。聯(lián)網(wǎng),從而實(shí)現(xiàn)儀器的遠(yuǎn)程控制和遠(yuǎn)程數(shù)據(jù)終端的數(shù)據(jù)通信功能。本設(shè)計(jì)方案利用8位微控制器AT52提供的系統(tǒng)資源和處理能力,加上89C具有ISA接口的10 Mb / s網(wǎng)卡芯片RTL8019AS ,通過編寫一套簡化的協(xié)議棧,實(shí)現(xiàn)可靠的數(shù)據(jù)通信,實(shí)現(xiàn)了低成本。 . , 可靠連接網(wǎng)絡(luò)的目的1 。關(guān)鍵詞:以太網(wǎng)、MCU、RTL8019AS、AT 89C52第一章 簡介1.1 嵌入式系統(tǒng)嵌入式系統(tǒng)是指嵌入式計(jì)算機(jī)及其應(yīng)用系統(tǒng)。它是指嵌入在各種設(shè)備和應(yīng)用產(chǎn)

5、品中的計(jì)算機(jī)系統(tǒng)。主要完成信號(hào)控制的功能。它體積小,結(jié)構(gòu)緊湊。在設(shè)備中提供用戶界面,管理相關(guān)信息的輸入和輸出,監(jiān)控設(shè)備的工作,使設(shè)備和應(yīng)用系統(tǒng)具有較高的智能化和性價(jià)比。嵌入式系統(tǒng)由嵌入式硬件和嵌入式軟件組成。硬件以芯片、模板、組件和控制器的形式埋在設(shè)備部。軟件是實(shí)時(shí)多任務(wù)操作系統(tǒng)和各種專用軟件,一般固化在ROM或閃存中。軟硬件可量身定制,適用于對功能、體積、成本、可靠性、功耗等有嚴(yán)格要求的計(jì)算機(jī)系統(tǒng)。嵌入式計(jì)算機(jī)系統(tǒng)最早出現(xiàn)在1960年代的武器控制中,后來被用于軍事指揮控制和通信系統(tǒng),現(xiàn)在廣泛應(yīng)用于民用機(jī)電一體化產(chǎn)品中。1.2 課題研究的意義隨著互聯(lián)網(wǎng)技術(shù)的普及,信息共享程度不斷提高。 TCP

6、/IP協(xié)議棧使嵌入式系統(tǒng)可以通過互聯(lián)網(wǎng)無限延長通信距離。以太網(wǎng)能夠快速傳輸大量數(shù)據(jù)。這樣,除了充分利用PC上的各種資源完成數(shù)據(jù)的存儲(chǔ)、分析和統(tǒng)計(jì)外,還可以實(shí)現(xiàn)測控系統(tǒng)之間的數(shù)據(jù)交換,為實(shí)現(xiàn)嵌入式設(shè)備智能化、模塊化提供了另一種解決方案。集群。離開。 PPP協(xié)議可以通過調(diào)制解調(diào)器實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)交換、狀態(tài)控制等功能,為嵌入式系統(tǒng)提供更靈活的控制和監(jiān)控方式。因此,如何在基于單片機(jī)的嵌入式系統(tǒng)中控制以太網(wǎng)網(wǎng)卡控制器進(jìn)行數(shù)據(jù)傳輸,以及如何嵌入TCP/IP協(xié)議連接到Internet,這些都具有深遠(yuǎn)的意義2 。1.3 項(xiàng)目的最終目標(biāo)本課題主要實(shí)現(xiàn)TCP/IP協(xié)議嵌入8位單片機(jī)。單片機(jī)接入Internet的研究最

7、多的方案之一是使用單片機(jī)驅(qū)動(dòng)ISA總線網(wǎng)卡或驅(qū)動(dòng)基于ISA總線的以太網(wǎng)(LAN網(wǎng)絡(luò)規(guī)劃)控制芯片。考慮到在實(shí)際網(wǎng)絡(luò)應(yīng)用中,以太網(wǎng)在局域網(wǎng)中占據(jù)主導(dǎo)地位,本文采用后者。單片機(jī)上網(wǎng)的難點(diǎn)在于 TCP/IP 協(xié)議是一個(gè)龐大的協(xié)議集,而 8 位單片機(jī)資源有限,其存儲(chǔ)容量、運(yùn)行速度和總線寬度都無法實(shí)現(xiàn)PC 通過標(biāo)準(zhǔn)的硬件和軟件接口。知識(shí)產(chǎn)權(quán)。本文將介紹愛特梅爾的51單片機(jī)芯片AT 89C52的使用,可以滿足需要,而且非常常用,便宜又容易獲得。網(wǎng)卡芯片采用Realtek公司生產(chǎn)的10Mbps ISA總線以太網(wǎng)控制芯片RTL8019AS,嵌入TCP協(xié)議,實(shí)現(xiàn)單片機(jī)上網(wǎng)。第 2 章 TCP/IP 協(xié)議(堆棧)

8、簡介2.1 TCP/IP協(xié)議的層次結(jié)構(gòu)TCP協(xié)議和IP協(xié)議是一組使計(jì)算機(jī)能夠相互通信的協(xié)議中的兩個(gè)重要協(xié)議。通常使用 TCP/IP 來表示這組協(xié)議。協(xié)議是一種通信規(guī)則或標(biāo)準(zhǔn),被計(jì)算機(jī)用來傳輸數(shù)據(jù),以確保數(shù)據(jù)在互聯(lián)網(wǎng)上準(zhǔn)確、快速地傳輸。本文采用 TCP/IP 的簡化四層模型,即:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和鏈路層。如表 2.1 所示。表 2.1 TCP/IP 協(xié)議的層次結(jié)構(gòu)地面主要協(xié)議應(yīng)用層FTP、TELNET、SMTP、SNTP、傳輸層TCP、UDP網(wǎng)絡(luò)層IP、ARP、RARP、IGMP、ICMP鏈路層接口層協(xié)議鏈路層:有時(shí)也稱為數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層,它定義了計(jì)算機(jī)如何連接到網(wǎng)絡(luò),數(shù)據(jù)必須通過連

9、接傳輸?shù)骄W(wǎng)絡(luò)。將數(shù)據(jù)轉(zhuǎn)換為上層可以識(shí)別的邏輯幀。網(wǎng)絡(luò)層:負(fù)責(zé)處理從原始發(fā)送者到目的地的消息地址和路由信息,使信息可以發(fā)送到相鄰的 TCP/IP 網(wǎng)絡(luò)上的任何主機(jī)。 IP協(xié)議是分層傳輸數(shù)據(jù)的機(jī)制。該層使用的主要協(xié)議有:地址轉(zhuǎn)換協(xié)議(ARP 協(xié)議)、反向地址解析協(xié)議(RARP 協(xié)議)、互聯(lián)網(wǎng)控制消息協(xié)議(ICMP 協(xié)議)和互聯(lián)網(wǎng)組管理協(xié)議(IGMP 協(xié)議)。傳輸層:主要為兩臺(tái)主機(jī)上的應(yīng)用程序提供發(fā)送者和目的地之間的通信。該層有兩種協(xié)議,用于可靠傳輸?shù)膫鬏斂刂茀f(xié)議 (TCP) 和用于不可靠傳輸?shù)挠脩魯?shù)據(jù)報(bào)協(xié)議 (UDP)。應(yīng)用層:負(fù)責(zé)為接收到的數(shù)據(jù)提供解釋服務(wù)。對于嵌入式系統(tǒng)來說,有兩個(gè)協(xié)議非常重要

10、,即超文本協(xié)議(FTP 協(xié)議)和文件傳輸協(xié)議(FTP 協(xié)議)。超文本傳輸協(xié)議用于將文件從一臺(tái)主機(jī)傳輸?shù)搅硪慌_(tái)主機(jī),并在請求主機(jī)上顯示文本、文件;文件傳輸協(xié)議用于將文件從一臺(tái)主機(jī)傳輸?shù)搅硪慌_(tái)所請求的主機(jī)。它只傳輸副本,而不傳輸原件。其他協(xié)議包括遠(yuǎn)程登錄、簡單傳輸協(xié)議、簡單網(wǎng)絡(luò)管理協(xié)議等3 。2.2 TCP/IP協(xié)議的封裝與退役TCP/IP協(xié)議采用分層結(jié)構(gòu),實(shí)現(xiàn)也采用分層實(shí)現(xiàn)的方法。在實(shí)現(xiàn)的過程中,首先要了解封裝和退役的概念。2.2.1什么是封裝當(dāng)應(yīng)用程序使用 TCP 傳輸數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)被送入?yún)f(xié)議棧,然后一層一層地通過每一層,直到以比特流的形式發(fā)送到網(wǎng)絡(luò)。這些層中的每一層都在接收到的數(shù)據(jù)中添加一些

11、頭部信息(有時(shí)是尾部信息),這個(gè)過程稱為封裝。如圖2.1所示:appapp1首部數(shù)據(jù)IP首部TCP首部幀首部TCP數(shù)據(jù)IP數(shù)據(jù)以太網(wǎng)幀數(shù)據(jù)幀尾部TCP報(bào)文IP報(bào)文以太網(wǎng)幀圖 2.1 數(shù)據(jù)進(jìn)入?yún)f(xié)議棧時(shí)的封裝過程2.2.2什么是分?jǐn)偖?dāng)目的主機(jī)接收到一個(gè)以太網(wǎng)數(shù)據(jù)幀時(shí),數(shù)據(jù)開始從協(xié)議棧的最底層開始上升,同時(shí)各層協(xié)議添加的數(shù)據(jù)包的頭部被去除。以太網(wǎng)幀檢查標(biāo)頭中的幀類型字段,IP 檢查標(biāo)頭中的協(xié)議字段,TCP 和 UDP 檢查標(biāo)頭中的端口號(hào)以確定數(shù)據(jù)屬于哪一層,這個(gè)過程稱為解復(fù)用。如圖2.2所示:ARPARPIPRARP以太網(wǎng)幀TCPIGMPUDPICMP應(yīng)用程序應(yīng)用程序應(yīng)用程序應(yīng)用程序根據(jù)首部中的協(xié)議

12、值分根據(jù)首部中的幀類型分根據(jù)首部中的端口號(hào)分圖 2.2 以太網(wǎng)數(shù)據(jù)幀退役流程2.2.3以太網(wǎng)幀格式各種通信協(xié)議都有自己的消息格式,TCP/IP也不例外,它也有自己獨(dú)立的消息格式。要對 TCP/IP 協(xié)議進(jìn)行編程,我們首先要了解它的消息格式。由于 TCP/IP 協(xié)議采用分層結(jié)構(gòu),每一層都有自己的特殊用途。首先介紹以太網(wǎng)的物理幀格式,2.3節(jié)介紹TCP/IP其他層的幀格式。以太網(wǎng)協(xié)議不止一種。本項(xiàng)目采用802.3協(xié)議,物理信道上的收發(fā)操作采用該協(xié)議的幀格式。一個(gè)標(biāo)準(zhǔn)的以太網(wǎng)物理傳輸幀由前導(dǎo)PR、分隔位SD、目的地址DA、源地址SA、類型字段Type、數(shù)據(jù)段Data、填充位PAD和幀校驗(yàn)序列FCS8

13、部分組成。幀結(jié)構(gòu)如表 2.2 所示。表2.2 802.3協(xié)議以太網(wǎng)物理幀結(jié)構(gòu)公關(guān)標(biāo)清達(dá)南非類型數(shù)據(jù)軟墊FCS56 位8 位48位48位16 位461500字節(jié)DATA小于46字節(jié)時(shí)加032 位PR:同步位,用于同步發(fā)送端和接收端的時(shí)鐘,也表示傳輸速率(10M時(shí)鐘100M頻率和網(wǎng)卡不同,所以100M網(wǎng)卡可以兼容10M網(wǎng)卡),是一個(gè)56 位二進(jìn)制數(shù) 0 SD :分隔位,表示后面是真實(shí)數(shù)據(jù),不是同步時(shí)鐘,是8位10101011。與同步位不同的是,最后2位是11而不是10 。 DA :目的地址,以太網(wǎng)地址是一個(gè)48位(6字節(jié))的二進(jìn)制地址,表示幀被傳送到哪個(gè)網(wǎng)卡。如果是FFFFFFFFFFFF ,就是

14、廣播地址,任何網(wǎng)卡都可以接收到廣播地址的數(shù)據(jù)。 S A:源地址, 48位,表示該幀的數(shù)據(jù)是從哪個(gè)網(wǎng)卡發(fā)送過來的,即發(fā)送方的網(wǎng)卡地址,同這是 6 個(gè)字節(jié)。 TYPE:類型字段,表示該幀的數(shù)據(jù)是什么類型的數(shù)據(jù),不同協(xié)議的類型字段不同。例如:0800H表示數(shù)據(jù)是IP包,0806H表示數(shù)據(jù)是ARP包,814CH是SNMP包, 8137H是IPX/SPX包。 (小于0600H的值用于IEEE802,表示數(shù)據(jù)包的長度。) DATA:數(shù)據(jù)段,段數(shù)據(jù)不能超過1500字節(jié)。因?yàn)橐蕴W(wǎng)規(guī)定整個(gè)傳輸包的最大長度不能超過1514字節(jié)。 (14 個(gè)字節(jié)是 DA、SA、TYPE) PAD :填充位。由于以太網(wǎng)幀傳輸?shù)臄?shù)據(jù)

15、包至少不能小于60字節(jié),除了(DA、SA、TYPE 14字節(jié))外,還必須傳輸46字節(jié)的數(shù)據(jù)。當(dāng)數(shù)據(jù)段的數(shù)據(jù)小于46字節(jié)時(shí),后面跟著000000 (當(dāng)然也可以加上其他值) FCS : 32位數(shù)據(jù)校驗(yàn)位。是32位的CRC校驗(yàn),由網(wǎng)卡自動(dòng)計(jì)算,自動(dòng)生成,自動(dòng)校驗(yàn),在數(shù)據(jù)段后面自動(dòng)填寫。我們不需要知道數(shù)據(jù)驗(yàn)證算法。傳輸數(shù)據(jù)幀時(shí),除了數(shù)據(jù)段的長度不固定外,其他部分的長度都是固定的。數(shù)據(jù)段為 461500 字節(jié)。以太網(wǎng)規(guī)定整個(gè)傳輸包的最大長度不能超過1514字節(jié)(14字節(jié)分別是DA、SA、Type),最小不能小于60字節(jié)。除了 DA、SA 和 Type 的 14 個(gè)字節(jié)外,還必須傳輸至少 46 個(gè)字節(jié)的數(shù)

16、據(jù)。當(dāng)數(shù)據(jù)段中的數(shù)據(jù)小于46字節(jié)時(shí),需要填充。長度字段中不包含填充字符數(shù),超過 1500 個(gè)字符。部分,需要拆分成多個(gè)幀進(jìn)行傳輸。實(shí)際上,在發(fā)送數(shù)據(jù)時(shí),PR、SD、FCS和填充字段該段由以太網(wǎng)控制器自動(dòng)生成;接收數(shù)據(jù)時(shí),跳過PR和SD,它們只被控制器檢測到,不作為接收數(shù)據(jù)接收,一旦控制器檢測到有效的前導(dǎo)字段(即PR和SD SD),則認(rèn)為接收數(shù)據(jù)已經(jīng)開始。2.3 TCP/IP 的子協(xié)議2.3.1 ARP協(xié)議 ARP是Address Resolution Protocol的縮寫,中文翻譯為“地址解析協(xié)議”。本質(zhì)是完成網(wǎng)絡(luò)地址到物理地址的映射。從概念上講,就是找到一個(gè)映射方法 f 使得“物理grou

17、nd=f(network address)。物理地址有兩種基本類型:以太網(wǎng)類型和 ProNET 令牌類型,前者固定物理地址大,后者物理地址小便于配置,網(wǎng)絡(luò)地址具體指IP地址。地址解析協(xié)議 (ARP) 是 IP 獲取與給定 IP 地址關(guān)聯(lián)的主機(jī)的物理地址的能力。 ARP該功能分為兩部分:一部分發(fā)送數(shù)據(jù)包時(shí)請求目的主機(jī)的物理地址;另一部分將解析結(jié)果發(fā)送給請求物理地址的主機(jī)。地址解析原理:當(dāng)主機(jī)A需要向同一物理網(wǎng)絡(luò)中的主機(jī)B發(fā)送IP數(shù)據(jù)報(bào)時(shí),主機(jī)機(jī)器A的IP層需要將IP數(shù)據(jù)報(bào)傳遞給數(shù)據(jù)鏈路層進(jìn)行幀封裝,封裝時(shí)需要給出目的主機(jī)。實(shí)際地址。因此,IP層發(fā)送IP數(shù)據(jù)報(bào)時(shí)通常會(huì)產(chǎn)生以下事件:IP調(diào)用ARP請

18、求IP地址為IB的目的主機(jī)B的物理地址為PA 。IB對應(yīng)的物理地址。 ARP 請求將包括以下信息:主機(jī)的物理地址 PA ;主機(jī)的IP地址IA ;目的主機(jī)的IP地址IB 。主機(jī)A在本地網(wǎng)絡(luò)上廣播一個(gè)ARP請求幀,請求幀的目的地址就是廣播地址(全“1”)。網(wǎng)絡(luò)中的所有主機(jī)都可以接收到 ARP 請求幀,并將幀中的目的 IP 地址IB 與自己的 IP 地址進(jìn)行比較。地址IB不匹配的主機(jī)將忽略該幀。如果主機(jī)發(fā)現(xiàn)請求中的目的主機(jī) IP 地址 IB與自己的 IP 地址相同,則生成一個(gè)包含其物理地址PB 的 ARP 應(yīng)答幀。(6) ARP回復(fù)幀直接回傳給發(fā)送ARP請求的主機(jī)A(ARP回復(fù)幀不是廣播發(fā)送的)。

19、ARP 回復(fù)幀包含以下信息:應(yīng)答主機(jī)的物理地址 P B ;IP地址IB ;主機(jī)的物理地址 PA ;請求主機(jī)的 IP 地址 I A 。從響應(yīng)幀中得到的目的主機(jī)的物理地址P B完成IP數(shù)據(jù)報(bào)的幀封裝,并將幀發(fā)送給主機(jī)B。這里有兩點(diǎn)需要注意:(1) ARP請求幀是在物理網(wǎng)絡(luò)中廣播發(fā)送的,所以此時(shí)目的主機(jī)的物理地址是未知的。 ARP回復(fù)幀以單播方式發(fā)送,因?yàn)轫憫?yīng)者可以從請求幀中得到對方的物理地址。(2) 目的主機(jī)必須與源主機(jī)在同一個(gè)物理網(wǎng)絡(luò)中。由于ARP使用物理網(wǎng)絡(luò)中的廣播,IP路由器不會(huì)轉(zhuǎn)發(fā)廣播,所以遠(yuǎn)程網(wǎng)絡(luò)中主機(jī)的物理地址無法通過ARP確定,也無需知道遠(yuǎn)程地址的物理地址.如果目的主機(jī)在遠(yuǎn)程網(wǎng)絡(luò)上,

20、IP會(huì)先把數(shù)據(jù)報(bào)發(fā)給路由器,然后路由器再轉(zhuǎn)發(fā)。這種情況下,IP只需要通過ARP來確定路由器的物理地址,路由器就會(huì)逐級(jí)轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)。下面是ARP地址解析包的幀格式:表 2.3 地址解析報(bào)文幀格式場地以太網(wǎng)頭硬件類型協(xié)議類型硬件地址長度協(xié)議地址長度OP發(fā)送者以太網(wǎng)地址發(fā)件人 IP 地址目標(biāo)以太網(wǎng)地址目標(biāo) IP 地址少量161616881648324832以太網(wǎng)頭:在幀封裝時(shí)添加到 ARP 數(shù)據(jù)包的頭中。 ARP 數(shù)據(jù)包作為以太網(wǎng)幀的數(shù)據(jù)部分發(fā)送。請參閱以太網(wǎng)幀結(jié)構(gòu)部分2.2.3。硬件類型:16 位,定義物理網(wǎng)絡(luò)類型。物理網(wǎng)絡(luò)的類型為整數(shù)值以太網(wǎng)的硬件類型值為“1”。協(xié)議類型:16 位,定義了使用的

21、ARP 協(xié)議的類型。例如, 0 x0800 表示 IP V4 。硬件地址長度:8位,以字節(jié)為單位定義物理地址長度。以太網(wǎng)是 6。協(xié)議地址長度:8 位,以字節(jié)為單位定義物理地址長度。 IP V4為 4。操作類型:16位,定義報(bào)文的類型(“1”為ARP請求,“2”為ARP回復(fù),“3”為RARP請求,“4”為RARP回復(fù))。發(fā)送方以太網(wǎng)地址:定義發(fā)送方的物理地址。發(fā)件人 IP 地址:定義發(fā)件人的網(wǎng)絡(luò)地址。目標(biāo)以太網(wǎng)地址:定義目標(biāo)設(shè)備的物理地址。目標(biāo) IP 地址:定義目標(biāo)設(shè)備的網(wǎng)絡(luò)地址。2.3.2IP協(xié)議就像 TCP/IP 協(xié)議名稱所表達(dá)的信息一樣,互聯(lián)網(wǎng)的核心協(xié)議是 IP 和 TCP。 IP協(xié)議作為

22、TCP/IP協(xié)議族中的核心協(xié)議,為網(wǎng)絡(luò)數(shù)據(jù)傳輸提供最基本的服務(wù),也是實(shí)現(xiàn)網(wǎng)絡(luò)互聯(lián)互通編制依據(jù)協(xié)議。除了 ARP 和 RARP 數(shù)據(jù)包之外,幾乎所有的數(shù)據(jù)都是通過 IP 協(xié)議發(fā)送的。IP協(xié)議位于網(wǎng)絡(luò)層,位于同一層的協(xié)議是ARP和RARP,它們與上面的Internet控制消息協(xié)議ICMP和Internet組管理協(xié)議IGMP相連。 ARP 和 RARP 數(shù)據(jù)包不封裝在 IP 數(shù)據(jù)報(bào)中,而 ICMP 和 IGMP 數(shù)據(jù)封裝在 IP 數(shù)據(jù)報(bào)中進(jìn)行傳輸。由于IP協(xié)議在網(wǎng)絡(luò)層中占有重要地位,人們將TCP/IP協(xié)議的網(wǎng)絡(luò)層稱為IP層。IP 是一種不可靠的無連接數(shù)據(jù)報(bào)協(xié)議,可提供盡力而為的傳輸服務(wù)。IP協(xié)議具有

23、以下特點(diǎn):(1) 點(diǎn)對點(diǎn)協(xié)議。雖然IP數(shù)據(jù)報(bào)攜帶了源IP地址和目的IP地址,但是數(shù)據(jù)傳輸時(shí)的對端實(shí)體必須是相鄰設(shè)備(同一個(gè)網(wǎng)絡(luò))中的對端實(shí)體。(2)IP協(xié)議不保證傳輸?shù)目煽啃?,不對?shù)據(jù)進(jìn)行錯(cuò)誤校驗(yàn)和跟蹤。當(dāng)數(shù)據(jù)報(bào)損壞時(shí),它不會(huì)通知發(fā)送者。如果要求數(shù)據(jù)傳輸?shù)目煽啃?,IP上應(yīng)該使用TCP協(xié)議。得到保證。(3)IP協(xié)議提供無連接數(shù)據(jù)報(bào)服務(wù)。每個(gè)數(shù)據(jù)報(bào)都是獨(dú)立傳輸?shù)?,可能沿著不同的路徑到達(dá)目的地,也可能不按順序到達(dá)目的地。正因?yàn)镮P協(xié)議采用了盡力傳輸?shù)乃枷?,所以IP協(xié)議的效率很高,實(shí)現(xiàn)也比較簡單。隨著底層網(wǎng)絡(luò)質(zhì)量的日益提高,IP協(xié)議盡力傳輸?shù)暮锰幵絹碓矫黠@。IP層向下要面向各種物理網(wǎng)絡(luò),向上要提供統(tǒng)一

24、的數(shù)據(jù)傳輸服務(wù)。為此, IP層通過IP地址實(shí)現(xiàn)物理地址的統(tǒng)一;通過IP數(shù)據(jù)報(bào)實(shí)現(xiàn)物理數(shù)據(jù)幀的統(tǒng)一。 IP層通過以上兩方面的統(tǒng)一達(dá)到向上屏蔽底層差異的目的。IP數(shù)據(jù)報(bào)的格式如下表所示:表 2.4 IP 數(shù)據(jù)報(bào)格式場地版本標(biāo)頭長度服務(wù)類型總長度標(biāo)識(shí)標(biāo)識(shí)切片偏移生存時(shí)間協(xié)議標(biāo)頭校驗(yàn)和源 IP 地址目標(biāo) IP 地址選項(xiàng)數(shù)據(jù)少量448161631388163232正常的 IP 標(biāo)頭長度為 20 個(gè)字節(jié),如果包含選項(xiàng)字段,則最多為 60 個(gè)字節(jié)。IP 當(dāng)前的協(xié)議版本是 4,所以 IP 有時(shí)被稱為 IP V4 。頭長度字段為 4 位長,以 32 位字長(4 字節(jié))為單位表示數(shù)據(jù)報(bào)頭的長度。由于IP數(shù)據(jù)報(bào)頭包

25、含IP選項(xiàng)的變長字段,所以頭與數(shù)據(jù)的分界點(diǎn)需要由頭的長度來確定。用單片機(jī)實(shí)現(xiàn) TCP/IP 協(xié)議需要一些簡化,無論數(shù)據(jù)分片和優(yōu)先級(jí)如何。所以不討論服務(wù)類型、標(biāo)志和分片偏移量,填0即可。數(shù)據(jù)報(bào)總長度字段的長度為16位,總長度表示整個(gè)IP數(shù)據(jù)報(bào)的長度,以字節(jié)為單位。 IP 數(shù)據(jù)報(bào)的最大長度可達(dá)(即65535)字節(jié)。數(shù)據(jù)部分的長度可以由頭的長度和總長度計(jì)算得出。ID是數(shù)據(jù)包的ID號(hào),用來識(shí)別不同的IP數(shù)據(jù)包。生存時(shí)間 TTL 是一個(gè)數(shù)量級(jí)的概念,防止無用的數(shù)據(jù)包一直存在于網(wǎng)絡(luò)中。一般每經(jīng)過一個(gè)路由器就減1,因此可以通過TTL計(jì)算出數(shù)據(jù)包到達(dá)目的地的路由器數(shù)量。協(xié)議字段指示創(chuàng)建數(shù)據(jù)包的高級(jí)協(xié)議的類型。

26、如:1代表ICMP協(xié)議,6代表TCP協(xié)議,17代表UDP協(xié)議。頭校驗(yàn)和字段為 16 位。用于保證頭部數(shù)據(jù)的完整性。數(shù)據(jù)部分的正確性由高層協(xié)議保證。源 IP 地址是指發(fā)送方 IP 地址。目的IP地址是指接收者IP地址。選項(xiàng)字段是一個(gè)可變長度字段,它是傳輸數(shù)據(jù)報(bào)時(shí)可選的附加功能。用于控制數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸路徑,記錄數(shù)據(jù)報(bào)經(jīng)過的路由器,獲取數(shù)據(jù)報(bào)在途中經(jīng)過的路由器的時(shí)間戳。 IP 選項(xiàng)的長度受標(biāo)頭長度的限制4 。2.3.3ICMP Internet 控制消息協(xié)議TCP/IP的IP層在完成無連接數(shù)據(jù)報(bào)傳輸?shù)耐瑫r(shí)還實(shí)現(xiàn)了一些基本的控制功能。這些控制功能包括:錯(cuò)誤報(bào)告、擁塞控制、路徑控制以及對路由器和主機(jī)

27、信息的訪問。實(shí)現(xiàn)這些控制功能的協(xié)議是位于 IP 層的 Internet 控制消息協(xié)議 (ICMP)。ICMP 消息分為兩類,錯(cuò)誤報(bào)告消息和查詢消息。通常被認(rèn)為是 IP 層的一個(gè)組成部分。 ICMP 數(shù)據(jù)包首先被封裝成 IP 數(shù)據(jù)報(bào),然后傳遞到下一層。消息格式如表 2.5 所示:表 2.5 ICMP 消息格式8位類型8位代碼16 位校驗(yàn)和標(biāo)題的其他部分?jǐn)?shù)據(jù)數(shù)據(jù)首部ICMP 消息頭的一般部分由三個(gè)字段組成:類型、代碼和校驗(yàn)和。數(shù)據(jù)首部類型(TYPE):表示ICMP消息的類型。CODE:提供有關(guān)消息類型的更多信息。校驗(yàn)和(CHECKSUM):提供整個(gè) ICMP 消息的校驗(yàn)和。校驗(yàn)和算法與 IP 數(shù)據(jù)

28、報(bào)頭的校驗(yàn)和算法相同。與IP數(shù)據(jù)報(bào)頭的校驗(yàn)和不同的是,ICMP校驗(yàn)和是整個(gè)數(shù)據(jù)包的校驗(yàn)和。另外,使用校驗(yàn)和進(jìn)行驗(yàn)證的設(shè)備不是中間路由器,而是最終目的地。標(biāo)頭的另一部分是 4 個(gè)字節(jié)。大多數(shù)錯(cuò)誤報(bào)告消息不使用這部分。參數(shù)錯(cuò)誤報(bào)告消息使用字節(jié)之一作為指針。請求響應(yīng)消息使用這 4 個(gè)字節(jié)來匹配請求和請求?;貜?fù)消息。不使用時(shí),未使用的部分填“0”。報(bào)錯(cuò)時(shí),數(shù)據(jù)段部分?jǐn)y帶原始錯(cuò)誤數(shù)據(jù)報(bào)的頭部和數(shù)據(jù)的前8個(gè)字節(jié)。通常,這個(gè)信息包括數(shù)據(jù)報(bào)的關(guān)鍵信息(前8個(gè)字節(jié)一般是上層協(xié)議的頭信息);在請求和響應(yīng)包中,攜帶與請求和響應(yīng)相關(guān)的附加信息。所有數(shù)據(jù)包的前 4 個(gè)字節(jié)都相同,但其他字節(jié)的其余部分彼此不同。輸入單詞一

29、個(gè)段可以有 15 個(gè)不同的值來描述一種特定類型的 ICMP 消息。一些 ICMP 還使用代碼字段的值來進(jìn)一步描述不同的條件。 ICMP錯(cuò)誤報(bào)告消息的常見類型和含義如表2.6所示:表 2.6 ICMP 常用類型編號(hào)及其含義類型34511128 或 010 或 913 或 1417 或 18留言含義目的地?zé)o法到達(dá)源中斷重定向數(shù)據(jù)報(bào)超時(shí)數(shù)據(jù)報(bào)參數(shù)問題回顯請求和回復(fù)路由器查詢和通告時(shí)間戳請求或回復(fù)地址掩碼請求或應(yīng)答本主題只考慮ICMP消息的目的站不可達(dá),并回顯請求和響應(yīng)消息,如表2.7和表2.7所示。2.8分別是這兩種消息的格式。表 2.7 目的站不可達(dá)報(bào)文格式類型 3代碼 0-15校驗(yàn)和接收IP部分

30、,包括IP頭的前8個(gè)字節(jié)場地類型 8 或 0代碼校驗(yàn)和標(biāo)識(shí)符序列號(hào)可選數(shù)據(jù)少量88161616由請求消息發(fā)送,有重復(fù)的回復(fù)消息表 2.8 響應(yīng)請求和響應(yīng)消息的格式場地類型 8 和 0代碼校驗(yàn)和標(biāo)識(shí)符序列號(hào)可選數(shù)據(jù)少量88161616由請求消息發(fā)送,由響應(yīng)消息重復(fù)注意:類型 0 是響應(yīng)響應(yīng)消息,類型 8 是響應(yīng)請求消息。整個(gè)數(shù)據(jù)包都參與檢查。2.3.4TCP 傳輸控制協(xié)議傳輸層是 TCP/IP 協(xié)議中的關(guān)鍵層。網(wǎng)絡(luò)層將數(shù)據(jù)鏈路層的數(shù)據(jù)幀與IP數(shù)據(jù)報(bào)統(tǒng)一,將數(shù)據(jù)鏈路層的MAC地址與IP地址統(tǒng)一,但網(wǎng)絡(luò)層不進(jìn)行業(yè)務(wù)處理。團(tuán)結(jié)。傳輸層的目的是補(bǔ)充和增強(qiáng)通信子網(wǎng)服務(wù)。在TCP/IP協(xié)議的傳輸層,提供了面

31、向連接的傳輸控制協(xié)議TCP和無連接的用戶數(shù)據(jù)報(bào)協(xié)議UDP。就不同的底層網(wǎng)絡(luò)而言,TCP和UDP有不同的應(yīng)用范圍。 TCP適用于可靠性較差的廣域網(wǎng),UDP適用于可靠性高的廣域網(wǎng)。傳輸層以下的層只提供相鄰機(jī)器之間的點(diǎn)對點(diǎn)傳輸,而傳輸層提供端到端的數(shù)據(jù)傳輸。目標(biāo)進(jìn)程的端到端通信。TCP 使用協(xié)議端口來識(shí)別主機(jī)上的通信進(jìn)程。為了保證信息能正確到達(dá)指定端進(jìn)程,必須顯式給出宿端的全局唯一進(jìn)程標(biāo)識(shí)。一個(gè)主機(jī)可以通過一個(gè)IP地址來標(biāo)識(shí),這個(gè)IP地址是全局唯一的,并且給主機(jī)上的進(jìn)程一個(gè)本地唯一的標(biāo)識(shí)符(端口號(hào))。兩者相加形成進(jìn)程的全局唯一標(biāo)識(shí)符。每個(gè)應(yīng)用程序進(jìn)程之間的通信都是基于所謂的套接字套接字。 Socke

32、t Socket是系統(tǒng)提供的進(jìn)程通信編程接口,支持客戶端/服務(wù)器模型。它將應(yīng)用程序和端口關(guān)聯(lián)起來,并為每個(gè)端口分配多個(gè)通信端點(diǎn),這樣就可以實(shí)現(xiàn)同一個(gè)應(yīng)用程序的多進(jìn)程服務(wù)。套接字地址為進(jìn)程通信提供端點(diǎn)。在客戶端和服務(wù)器進(jìn)程通信之前,雙方首先創(chuàng)建一個(gè)端點(diǎn),形成自己的半關(guān)聯(lián)。每個(gè)套接字都有一個(gè)由操作系統(tǒng)分配的本地唯一套接字號(hào)??蛻舳巳缓蟾鶕?jù)服務(wù)器的眾所周知的地址建立一個(gè)套接字連接。一個(gè)套接字連接可以用一個(gè)完整的關(guān)聯(lián)來描述:(協(xié)議、本地主機(jī)地址、本地端口號(hào)、遠(yuǎn)程主機(jī)地址、遠(yuǎn)程端口號(hào))Socket 支持不同的傳輸層協(xié)議。當(dāng)使用 TCP 協(xié)議作為傳輸層協(xié)議時(shí),一個(gè)套接字連接就是一個(gè) TCP 連接。TCP是

33、面向流的協(xié)議,發(fā)送方以字節(jié)流的形式發(fā)送數(shù)據(jù),接收方以字節(jié)流的形式接收數(shù)據(jù)。數(shù)據(jù)通過已建立的連接按順序發(fā)送,并按順序到達(dá)接收器。圖 2.3 給出了 TCP 端口和字節(jié)流的直觀描述。應(yīng)用程序(應(yīng)用程序( )應(yīng)用程序( )臨時(shí)端口熟知端口TCPTCP主機(jī)A客戶主機(jī)B服務(wù)器IP地址:IP地址:字節(jié)流圖 2.3 進(jìn)程識(shí)別和流式傳輸TCP 連接的建立需要客戶端和服務(wù)器之間的三次握手。 TCP 數(shù)據(jù)包格式如表 2.9 所示。表 2.9 TCP 數(shù)據(jù)包格式場地源端口地址目的端口地址序列號(hào)確認(rèn)號(hào)碼標(biāo)頭長度預(yù)訂敦促確認(rèn)psh第一次同步鰭窗戶校驗(yàn)和緊急指針選項(xiàng)填充數(shù)據(jù)少量16163232466161616TCP報(bào)文

34、段格式中各個(gè)字段的含義和作用如下:源端口地址定義了發(fā)送此 TCP 段的主機(jī)上的應(yīng)用程序的端口號(hào)。目的端口地址定義了接收這個(gè) TCP 數(shù)據(jù)段的應(yīng)用程序的端口號(hào)。序號(hào)表示段的數(shù)據(jù)部分在發(fā)送方數(shù)據(jù)流中的位置。即傳輸數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào)。確認(rèn)號(hào)表示接收方希望在對方下次發(fā)送時(shí)接收到的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。該序號(hào)表示該序號(hào)之前的數(shù)據(jù)已被正確接收。報(bào)頭長度以 32 位字長(4 字節(jié))為單位表示段報(bào)頭的長度。保留字段長度為 6 位,保留以供將來使用??刂谱侄蔚拿恳晃欢加刑囟ǖ暮x,表示段的用途和內(nèi)容。窗口大小字段的長度為16位,用于通知對方當(dāng)前本地接收緩沖區(qū)的大?。ㄒ宰止?jié)為單位)。校驗(yàn)和范圍包括段頭、

35、數(shù)據(jù)和偽頭。其計(jì)算方法與IP數(shù)據(jù)報(bào)頭校驗(yàn)和的計(jì)算方法相同。TCP 選項(xiàng)是一個(gè)可變長度字段。它位于 TCP 報(bào)頭的末尾,由幾個(gè) 8 位字節(jié)組成。所有選項(xiàng)都參與校驗(yàn)和的計(jì)算。選項(xiàng)可以從任何字節(jié)邊界開始。格式有兩個(gè)選項(xiàng):(1) 只有選項(xiàng)類型的單字節(jié)選項(xiàng)。(2) 一字節(jié)期權(quán)類型、一字節(jié)期權(quán)長度和期權(quán)實(shí)際價(jià)值,期權(quán)長度的計(jì)算包括期權(quán)類型、期權(quán)長度和期權(quán)實(shí)際價(jià)值。2.3.5應(yīng)用層協(xié)議(協(xié)議)超文本傳輸控制協(xié)議( )用于分發(fā)超文本媒體信息,相當(dāng)靈活和快速,是目前通過 Internet 進(jìn)行信息交換的最主要方式。該協(xié)議建立在請求/響應(yīng)模型之上,每次發(fā)送請求都必須重新建立連接,即程序一次只處理一個(gè)請求??蛻舳伺c

36、服務(wù)器建立 TCP 連接并向服務(wù)器發(fā)送請求。請求包含請求方法、URI(Uniform Resource Identifier)、協(xié)議版本和相關(guān)的MIME-style信息(包括服務(wù)器信息、資源實(shí)體信息等)。信息和可能的資源)。1.0 為每個(gè)請求/響應(yīng)建立一個(gè)新的 TCP 連接,因此包含 HTML 內(nèi)容和圖像的頁面將需要建立多個(gè)短期 TCP 連接。 1.1 提出了長連接的實(shí)現(xiàn)方法。 1.1 TCP連接將只建立一次,并重復(fù)用于傳輸一系列請求/響應(yīng)消息,從而減少連接建立的次數(shù)和頻繁的連接開銷。但是嵌入式系統(tǒng)不需要連續(xù)連接,傳輸?shù)臄?shù)據(jù)量也不是很大,所以系統(tǒng)實(shí)現(xiàn)了1.0。具有以下特點(diǎn):請求/響應(yīng),一旦建立

37、傳輸會(huì)話,一端(通常是瀏覽器)必須向響應(yīng)的另一端發(fā)送請求。無狀態(tài)。每個(gè)請求都是自包含的,服務(wù)器不會(huì)保留先前請求或會(huì)話的歷史記錄。雙向傳輸。在大多數(shù)情況下,瀏覽器請求網(wǎng)頁,服務(wù)器將副本傳輸給瀏覽器。也允許從瀏覽器到服務(wù)器的傳輸(如果用戶提交所謂的“表單”)。談判能力。允許瀏覽器和服務(wù)器協(xié)商傳輸中使用的字符集等細(xì)節(jié),發(fā)送方指定它提供的功能,接收方指定它接收的功能。支持緩存。為了減少響應(yīng)時(shí)間,瀏覽器緩存它接收到的每個(gè)網(wǎng)頁的副本。如果用戶再次請求該頁面,則允許瀏覽器訪問服務(wù)器以確定該頁面的內(nèi)容自緩存后是否發(fā)生了變化。支持中介。允許從瀏覽器到服務(wù)器的路徑上的機(jī)器充當(dāng)代理服務(wù)器,緩存網(wǎng)頁并響應(yīng)來自它的瀏覽

38、器請求。應(yīng)用層。在應(yīng)用層上運(yùn)行。它使用穩(wěn)定的、面向連接的傳輸協(xié)議,例如 TCP,但不提供可靠性或重傳機(jī)制5 。第三章硬件實(shí)現(xiàn)3.1 物理層接口實(shí)現(xiàn)系統(tǒng)采用基于Internet的訪問方式,實(shí)現(xiàn)串行通信協(xié)議和以太網(wǎng)協(xié)議的轉(zhuǎn)換。與局域網(wǎng)的接口由Realtek公司的網(wǎng)絡(luò)接口控制器RTL8019AS實(shí)現(xiàn)。 RTL8019AS是一款100引腳、PQFP封裝、ISA接口以太網(wǎng)接口芯片,訪問速率為10Mb/s。串行接口可以實(shí)現(xiàn)RS-232。 RS-232選用MAXM公司的MAX232(A)。系統(tǒng)通過RTL8019AS與以太網(wǎng)相連,利用現(xiàn)有的局域網(wǎng)線路實(shí)現(xiàn)RS-232信號(hào)數(shù)據(jù)的遠(yuǎn)程傳輸。下面介紹物理層的接口實(shí)現(xiàn)

39、。3.1.1RTL8019AS簡介6RTL8019AS 是系統(tǒng)與以太網(wǎng)通信編制依據(jù)。用于實(shí)現(xiàn)系統(tǒng)與網(wǎng)絡(luò)上其他節(jié)點(diǎn)之間發(fā)送和接收消息的功能。它位于TCP/IP協(xié)議棧的數(shù)據(jù)鏈路層,是信息傳輸、控制和管理的功能。重要部分。其功能大致可分為以下兩種;通信數(shù)據(jù)的發(fā)送和接收。發(fā)送時(shí),將發(fā)送的數(shù)據(jù)按照特定格式組裝成幀,加上前導(dǎo)碼、幀定界燈,并進(jìn)行CRC校驗(yàn)。驗(yàn)證后,通過網(wǎng)線串行發(fā)送數(shù)據(jù)。接收時(shí)判斷報(bào)文的目的地址是否為本地地址,如果是則檢查報(bào)文。如果檢查無誤,則將消息發(fā)送到內(nèi)存中,發(fā)送一個(gè)ACK響應(yīng)幀。如果校驗(yàn)后發(fā)現(xiàn)報(bào)文有誤,則丟棄接收到的報(bào)文,并發(fā)送NAK否定確認(rèn)幀。載波信號(hào)的收發(fā)和控制。此功能包括載波偵聽

40、、傳輸時(shí)間等。準(zhǔn)確地說,網(wǎng)絡(luò)控制器是一個(gè)DTE(數(shù)據(jù)終端設(shè)備)。根據(jù)IEEE802.3協(xié)議的模型功能劃分,10Mb/s以太網(wǎng)控制器的功能模塊可分為介質(zhì)訪問控制(MAC)子層、訪問單元接口(AUI)、介質(zhì)訪問單元(MAU)和物理信號(hào)計(jì)(PLS)等4個(gè)部分,一般結(jié)構(gòu)框圖如圖3.1所示:地址寄存器地址寄存器MACPLS緩沖存儲(chǔ)器網(wǎng)絡(luò)接口AUIMAU系統(tǒng)總線圖 3.1 RTL8019AS 結(jié)構(gòu)框圖各單元的功能如下:MAC子層負(fù)責(zé)實(shí)現(xiàn)CSMA/CD協(xié)議,發(fā)送和接收數(shù)據(jù)包管理通信媒體,完成數(shù)據(jù)幀同步,接收數(shù)據(jù)幀時(shí)對數(shù)據(jù)幀進(jìn)行定界,檢測目的地址是否匹配處理沖突。PLS完成發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、載波監(jiān)聽、錯(cuò)誤檢

41、測等功能,所有這些功能都與通信介質(zhì)無關(guān)。 PLS將MAC傳輸?shù)腘RI(不歸零)編碼數(shù)據(jù)轉(zhuǎn)換成曼徹斯特編碼后通過AUI發(fā)送給MAU,或者通過AUI從MAU接收曼徹斯特編碼編碼的數(shù)據(jù),對數(shù)據(jù)進(jìn)行NRI翻譯后代碼發(fā)送,數(shù)據(jù)發(fā)送到MAC。AUI 為 PLS 功能和 MAU 之間的信號(hào)提供了一個(gè)通道。MAU與通信介質(zhì)直接相關(guān),是DTE與網(wǎng)絡(luò)介質(zhì)之間的功能、電氣和機(jī)械功能。機(jī)械接口。它會(huì)隨著通信介質(zhì)的不同而不同,用于完成發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、環(huán)回和碰撞檢測、SQE(Signal Quality Error)測試等功能。網(wǎng)絡(luò)沖突檢測、沖突避免與重傳、接收報(bào)文目的地址是否匹配、報(bào)文CRC校驗(yàn)檢測等均由硬件完成。

42、在該系統(tǒng)中,僅控制發(fā)送、接收、初始化、中斷處理、錯(cuò)誤處理和I/O操作等。3.1.2RTL8019AS部分結(jié)構(gòu)(1) RTL8019AS部門有兩個(gè)RAM區(qū)。一個(gè)塊的容量為16KB,地址為0 x40000 x7fff,用于發(fā)送和接收緩沖區(qū)。發(fā)送和接收緩沖區(qū)以頁為單位,每頁為256字節(jié),共64頁,對應(yīng)的頁碼為0 x400 x80。一般將前12頁(即地址為0 x40000 x4bff)作為發(fā)送緩沖區(qū),分為兩個(gè)6頁。兩個(gè)發(fā)送緩沖區(qū)交替使用,以提高發(fā)送效率。最后52頁(即地址為0 x 4c000 x7fff)作為接收緩沖區(qū)。為了有效地使用接收緩沖區(qū),接收緩沖區(qū)RAM形成了一個(gè)FIFO循環(huán)隊(duì)列結(jié)構(gòu)。要接收和

43、發(fā)送數(shù)據(jù)包,需要通過 DMA 對 RTL8019AS 的 16KB RAM 進(jìn)行讀寫。它實(shí)際上是一個(gè)雙口RAM,有兩組總線連接到Daao RAM:一組總線是RTL8019AS讀寫RAM,即本地DMA;(2) 另一個(gè)block只有32個(gè)字節(jié),地址為0 x00000 x 001f,稱為Prom page,存儲(chǔ)網(wǎng)卡芯片的以太網(wǎng)物理地址,其中地址0 x00000 x000b共12個(gè)字節(jié)來存儲(chǔ)以太網(wǎng)物理地址,后跟0 x000b地址存儲(chǔ)廠商代碼和產(chǎn)品識(shí)別碼。以太網(wǎng)物理地址為6個(gè)字節(jié),這里使用12個(gè)字節(jié),因?yàn)檫@12個(gè)字節(jié)是重復(fù)存儲(chǔ)的。比如0 x00000 x000b中存儲(chǔ)的物理地址0 x 50584AC21

44、9DF就是50505859ACACC 2C21919DFDF,可以看到單雙地址存儲(chǔ)是一樣的。制造商和產(chǎn)品識(shí)別碼也重復(fù)存儲(chǔ)在單地址和雙地址中。值得一提的是,網(wǎng)卡地址是唯一的,而且一旦網(wǎng)卡生產(chǎn)出來,網(wǎng)卡芯片的物理地址是固定不變的,無法更改。(3) RTL8019AS的I/O地址為32,地址偏移為0 x000 x 1f(對應(yīng)本例中的0 x3000 x 31f)。從 0 x00 到 0 x 的 16 個(gè)地址是寄存器地址。0f寄存器分為4個(gè)頁面:Page0Page3,要訪問的頁面由RTL8019AS的命令寄存器(CR)中的PS0和PS1決定。0 x100 x17為遠(yuǎn)程DMA地址,都可以作為遠(yuǎn)程DMA端口

45、,使用其中一個(gè)即可,本題選擇0 x10。這樣單片機(jī)就可以通過讀寫端口0 x10來訪問RTL8019AS的緩沖區(qū)。從 0 x18 到 0 x 的 8 個(gè)地址1f是復(fù)位端口。它們具有相同的功能,用于 RTL8019AS 的熱復(fù)位。只需使用其中之一。本主題選擇 0 x18。3.1.3RTL8019AS的寄存器介紹寄存器的設(shè)置和制作是RTL8019AS應(yīng)用的關(guān)鍵。 RTL8019AS的寄存器大致可以分為兩組,一組稱為NE2000寄存器組,另一組稱為PnP組。由于本設(shè)計(jì)不涉及即插即用功能,因此PnP寄存器不再詳述。NE2000 寄存器組分為 4 頁,由寄存器 CR 中的 PS0 和 PS1 選擇。其中0

46、 x000 x1f為控制寄存器。 0 x100 x17 為遠(yuǎn)程 DMA 控制寄存器。 0 x180 x1f為Reset寄存器,8個(gè)Reset端口功能相同。表3.1為RTL8019AS寄存器組及其地址分布表:表 3.1 RTL8019AS NE2000 寄存器組3.1.4與系統(tǒng)配置和操作相關(guān)的寄存器1、CR:命令寄存器(00H;類型:讀寫)該寄存器用于選擇寄存器頁、啟用或禁用遠(yuǎn)程 DMA 以及發(fā)出各種命令??赡苁蔷幊讨凶畛S玫募拇嫫?。少量象征簡要地7、6PS1、PS0代表一個(gè)注冊頁面。 02頁:兼容NE2000; 3 頁:RTL8019AS 配置53RD20000非法; 001遠(yuǎn)程讀??; 010

47、遠(yuǎn)程寫入; 011發(fā)送數(shù)據(jù)包; 1遠(yuǎn)程DMA完成/退出。2TXP發(fā)送數(shù)據(jù)包時(shí)必須設(shè)置。發(fā)送完成或退出時(shí)部分重置。寫零沒有效果。1STA無控制功能,只反映該位寫入的值,上電時(shí)為00直通式該位是停止命令。既不發(fā)送也不接收帖子。2、ISR:中斷狀態(tài)寄存器(O7H;類型:0頁讀寫)該寄存器反映了網(wǎng)絡(luò)接口控制器(NIC)的狀態(tài),主設(shè)備通過讀取其狀態(tài)來確定中斷的來源。少量象征簡要地7RST當(dāng)網(wǎng)絡(luò)接口控制器 (NIC) 進(jìn)入重置狀態(tài)時(shí)置位,并在向 CR 發(fā)出啟動(dòng)命令時(shí)清除。當(dāng)接收緩沖區(qū)溢出時(shí)也設(shè)置,當(dāng)從緩沖區(qū)讀取一個(gè)或多個(gè)數(shù)據(jù)包時(shí)清除。6研發(fā)中心遠(yuǎn)程 DMA 完成時(shí)設(shè)置5碳納米管當(dāng)一個(gè)或多個(gè)計(jì)數(shù)計(jì)數(shù)器的最高

48、有效位為 1 時(shí)設(shè)置4OVW當(dāng)接收緩沖區(qū)耗盡時(shí)置位3TXE發(fā)送錯(cuò)誤位,當(dāng)數(shù)據(jù)包由于太多沖突而被丟棄時(shí)設(shè)置2RXE當(dāng)接收到包含 CRC、幀對齊或幀丟失等錯(cuò)誤的數(shù)據(jù)包時(shí)設(shè)置1PTX表示數(shù)據(jù)包發(fā)送無誤0PRX表示接收到的數(shù)據(jù)包沒有錯(cuò)誤3. IMR:中斷屏蔽寄存器(0FH;類型:0頁寫,2頁讀)每一個(gè)都對應(yīng)于 ISR。上電時(shí)全為0,某個(gè)位置一個(gè)1打開對應(yīng)的中斷。4. DCR:數(shù)據(jù)配置寄存器(0EH;類型:0頁寫,2頁讀)5. TCR:發(fā)送配置寄存器(0DH;類型:0頁寫,2頁讀)少量76543210象征111OFSTATDPB1PB0CRC其中: CRC 禁用或允許發(fā)送時(shí)的 CRC 邏輯。6. TSR

49、:發(fā)送狀態(tài)寄存器(04H;類型:0頁讀?。┰摷拇嫫髦甘緮?shù)據(jù)包傳輸?shù)臓顟B(tài)。少量76543210象征OWCCDH1CRSABTCOL1PTX其中:ABT-表示網(wǎng)絡(luò)接口控制器因沖突過多而退出發(fā)送;COL表示傳輸與網(wǎng)絡(luò)中的其他站發(fā)生沖突;PTX 1 表示傳輸完成,沒有錯(cuò)誤。7. RCR:接收配置寄存器(0CH;類型:0頁寫,2頁讀)少量象征簡要地7總是 16總是 15星期一設(shè)置時(shí)為監(jiān)控模式,只檢查接收到的數(shù)據(jù)包,不緩存:清除時(shí),緩存。4專業(yè)版設(shè)置后,所有具有物理地址的數(shù)據(jù)包都被接受;清除后,僅接受與節(jié)點(diǎn)地址匹配的數(shù)據(jù)包3是設(shè)置時(shí)接受具有多個(gè)目標(biāo)地址的數(shù)據(jù)包,清除時(shí)拒絕具有多個(gè)目標(biāo)地址的數(shù)據(jù)包2AB設(shè)置

50、時(shí),接受具有廣播目標(biāo)地址的數(shù)據(jù)包,清除后,拒絕具有廣播目標(biāo)地址的數(shù)據(jù)包。1增強(qiáng)現(xiàn)實(shí)設(shè)置時(shí),接受長度小于 64 字節(jié)的數(shù)據(jù)包,清除時(shí)拒絕接受長度小于 64 字節(jié)的數(shù)據(jù)包。0九月設(shè)置時(shí),接受接收錯(cuò)誤的數(shù)據(jù)包,清除時(shí),拒絕接收錯(cuò)誤的數(shù)據(jù)包。8. RSR:接收狀態(tài)寄存器(0CH;類型:0頁讀?。┥倭肯笳骱喴?DFR延遲。當(dāng)檢測到載波或碰撞時(shí)設(shè)置6DIS禁止接待。當(dāng) NIC 處于監(jiān)視模式并且禁用接收時(shí)設(shè)置。允許退出監(jiān)控接收時(shí)清除。 .5物理層當(dāng)接收到的數(shù)據(jù)包是多播或廣播目的地址時(shí)設(shè)置;當(dāng)它是物理目標(biāo)地址時(shí)清除。4MPA丟包位。當(dāng)由于緩沖或監(jiān)控模式不足而無法接收傳入數(shù)據(jù)包時(shí)設(shè)置。3總是 12PAE幀對齊

51、錯(cuò)誤,表示輸入包沒有終止于字節(jié)邊界,CRC與邊界字節(jié)不匹配1CRCCRC 錯(cuò)誤0PRX收到的數(shù)據(jù)包沒有錯(cuò)誤3.1.5DMA相關(guān)寄存器1、CLDA0、1:當(dāng)前本地DMA寄存器(0lH和02H;類型:0頁讀?。┊?dāng)前本地 DMA 地址可以從這兩個(gè)寄存器中讀取。2. PSTART:起始頁寄存器(01H;類型:0頁寫,2頁讀)該寄存器設(shè)置接收環(huán)形緩沖區(qū)的起始頁地址。3. PSTOP:停止頁寄存器(02H;類型:0頁寫,2頁讀)該寄存器設(shè)置接收環(huán)形緩沖區(qū)的結(jié)束頁地址。4、BNRY:邊界寄存器(03H;類型:0頁讀寫)該寄存器用于防止環(huán)形緩沖區(qū)覆蓋。一般用作指針,表示主機(jī)有最后一個(gè)環(huán)形緩存頁面出局。5、TP

52、SR:發(fā)送起始頁寄存器(04H;類型:0頁寫)該寄存器設(shè)置發(fā)送數(shù)據(jù)包的起始頁地址。6 、TBCR0、1:發(fā)送字節(jié)數(shù)寄存器(05H&06H;類型:0頁寫)這兩個(gè)寄存器設(shè)置發(fā)送數(shù)據(jù)包的字節(jié)數(shù)。7. NCR:沖突數(shù)寄存器(05H;類型:0頁讀?。┰摷拇嫫饔涗浺粋€(gè)節(jié)點(diǎn)在數(shù)據(jù)包傳輸中遇到的沖突次數(shù)。8 、FIFO:先進(jìn)先出寄存器(06H;類型:0頁讀?。┰摷拇嫫髟试S主機(jī)在發(fā)生環(huán)回后查看 FIFO 內(nèi)容。9、CRDA0、l:當(dāng)前遠(yuǎn)程DMA地址寄存器(08H和09H:類型:0頁讀?。┻@兩個(gè)寄存器包含遠(yuǎn)程 DMA 的當(dāng)前地址。10、RSAR0,1:遠(yuǎn)程起始地址寄存器(08H&09H;類型:0頁寫)這兩個(gè)寄存器

53、設(shè)置遠(yuǎn)程 DMA 的起始地址。11. RBCR0,l:遠(yuǎn)程字節(jié)數(shù)寄存器(0AH&0BH;類型:0頁寫)這兩個(gè)寄存器設(shè)置遠(yuǎn)程 DMA 的數(shù)據(jù)字節(jié)數(shù)。12. CNTR0:幀對齊錯(cuò)誤計(jì)數(shù)器(0DH;類型:0頁讀?。?3. CNTR1:CRC錯(cuò)誤計(jì)數(shù)器(0EH:類型:0頁讀?。?4. CNTR2:丟包計(jì)數(shù)器(0FH;類型:0頁讀取)15、PAR05:物理地址寄存器(01H06H;類型:1頁讀寫)該寄存器保存該節(jié)點(diǎn)的地址,用于與接收到的數(shù)據(jù)包的目標(biāo)地址進(jìn)行比較,并決定接受或拒絕。16、CURR:當(dāng)前頁寄存器(07H;類型:1頁讀寫)該寄存器指向第一個(gè)緩存頁面的頁面地址以接受數(shù)據(jù)包。17、MAR0-7:多

54、發(fā)地址寄存器(08H0FH;類型:1頁讀寫)這些寄存器為由 CRC 邏輯散列壓縮的多重地址提供過濾位。3.2 硬件設(shè)計(jì)3.2.1硬件接口框圖單片機(jī)嵌入式TCP/IP的硬件部分涉及到單片機(jī)與網(wǎng)卡控制器的接口。它也屬于TCP/IP協(xié)議鏈路層設(shè)計(jì),是協(xié)議實(shí)現(xiàn)的硬件平臺(tái)。本課題選用的方案硬件電路簡單,外圍器件成本也相對較低7 。接口電路框圖如圖3.2所示(具體電路原理圖見附件1):X1 P2X1 P2X2單 片 機(jī)RXD P0TXD串行通信32KB RAM鎖存器網(wǎng)卡主芯片RTL8019AS網(wǎng)絡(luò)變壓器RJ-45接口以太網(wǎng)絡(luò)12MHZ22pF22pF圖 3.2 硬件接口框圖3.2.2主要成分:本例主要部件

55、包括:主處理器(51 MCU)、地址鎖存器、外部RAM、以太網(wǎng)控制芯片、EEPROM、隔離低通濾波器。主處理器采用愛特梅爾的51單片機(jī)芯片AT 89C52,可以滿足需要,而且非常常用,便宜又容易獲得。地址鎖存器用于實(shí)現(xiàn)單片機(jī)地址/數(shù)據(jù)總線的復(fù)用,選用常用的鎖存芯片74LS373。外部RAM選用32K字8位高速CMOS靜態(tài)RAM芯片HM62256。以太網(wǎng)芯片采用瑞昱公司的RTL8019AS,其功能和使用方法在3.1節(jié)中有詳細(xì)介紹。此外,以下組件也是必不可少的:(1) 網(wǎng)絡(luò)變壓器網(wǎng)卡控制器不能直接連接到以太網(wǎng)。它需要通過網(wǎng)絡(luò)變壓器。本項(xiàng)目采用漢仁HR61101G作為隔離濾芯。工作點(diǎn);同時(shí),高頻干擾

56、受限于變壓器本身的通帶。(2) 串行 E 2 PROMX5045本課題使用的X5045是一款帶串口E 2 PROM的CPU監(jiān)視器,具有FLASH、復(fù)位、看門狗三個(gè)功能。復(fù)位函數(shù)復(fù)位微控制器和網(wǎng)卡控制器。存儲(chǔ)功能存儲(chǔ)用戶的一些設(shè)置,如MAC地址、IP地址等。SI、SO、SCK引腳分別與單片機(jī)的INT1、T0、T1相連。 RESET 是開漏輸出,所以需要一個(gè)上拉電阻。(3)電平轉(zhuǎn)換芯片MAX232MAX232是一個(gè)串行電平轉(zhuǎn)換電路。負(fù)責(zé)單片機(jī)和PC之間的電平轉(zhuǎn)換。 232的T1IN腳接單片機(jī)的TXD,232的R1O腳接單片機(jī)的RXD。 PCRXD 和 PCTXD 是 RS-2 電平,是標(biāo)準(zhǔn)的串口電

57、平。數(shù)據(jù)可以從串口輸入到單片機(jī),單片機(jī)將數(shù)據(jù)傳送到8019,然后傳送到以太網(wǎng)。相反,從8019接收到的數(shù)據(jù)可以通過單片機(jī)從串口發(fā)送出去。第 4 章 軟件實(shí)現(xiàn)本課題的軟件部分分為兩部分:一是網(wǎng)卡芯片RTL8019AS驅(qū)動(dòng)的設(shè)計(jì);二是TCP/IP協(xié)議棧的嵌入。下面將分別介紹這兩個(gè)部分的設(shè)計(jì)思路。4.1 RTL8019AS驅(qū)動(dòng)設(shè)計(jì)從程序員的角度來看,8019 的工作流程非常簡單。驅(qū)動(dòng)程序?qū)⒁l(fā)送的數(shù)據(jù)包以指定的格式寫入芯片,并啟動(dòng)發(fā)送命令。 8019會(huì)自動(dòng)將數(shù)據(jù)包轉(zhuǎn)換成物理幀格式,在物理信道上傳輸。反之,8019接收到物理信號(hào)后,將其恢復(fù)為數(shù)據(jù),并按照規(guī)定的格式存儲(chǔ)在芯片RAM中,供主機(jī)程序訪問???/p>

58、之,8019完成了數(shù)據(jù)包與電信號(hào)的轉(zhuǎn)換:數(shù)據(jù)包電信號(hào)。以太網(wǎng)協(xié)議由芯片硬件自動(dòng)完成,對程序員透明。驅(qū)動(dòng)程序包括3個(gè)部分,分別由3個(gè)函數(shù)實(shí)現(xiàn):芯片初始化函數(shù)、消息發(fā)送函數(shù)、消息接收函數(shù)。下面將分別介紹其功能和實(shí)現(xiàn)。4.1.1RTL8019AS的初始化8初始化函數(shù)用于初始化 RTL8019AS。在初始化操作之前需要RTL8019AS 執(zhí)行熱復(fù)位操作和清除 ISR 寄存器。然后開始 RTL8019AS 的初始化操作。初始化步驟如下:CR=0 x21,選擇第0頁的寄存器;TPSR=0 x45,設(shè)置發(fā)送頁的起始頁地址,初始化為第一個(gè)發(fā)送緩沖區(qū)的頁,即0 x40;PSTART=0 x45,PSTOP=0

59、x80,構(gòu)造緩沖環(huán):0 x 4c0 x80;BNRY=0 x 4C,設(shè)置讀指針;RCR=0 xCC,設(shè)置接收配置寄存器,使用接收緩沖區(qū),只接收有自己地址的數(shù)據(jù)包(有廣播地址的數(shù)據(jù)包)和組播地址的包,小于64字節(jié)的包被丟棄,有錯(cuò)誤的數(shù)據(jù)包被檢查不接受。TCR=0 xE0,設(shè)置發(fā)送配置寄存器,使能自動(dòng)CRC生成和自動(dòng)校驗(yàn),工作在正常模式;DCR=0 x C8 ,設(shè)置數(shù)據(jù)配置寄存器,使用FIFO(Final Input Final Output)緩沖區(qū),普通模式,8位數(shù)據(jù)傳輸,字節(jié)順序?yàn)楦呶蛔止?jié)在前,低位字節(jié)在后;IMR=0 x00,設(shè)置中斷屏蔽寄存器屏蔽所有中斷;CR=0 x61,選擇第1頁的寄存

60、器;CURR=0 x4D,CURR為RTL8019AS寫入的指針,指向當(dāng)前正在寫入的頁的下一頁,初始化時(shí)指向0 x 4C+1=0 x4D;設(shè)置多地址寄存器MAR0MAR5,全部設(shè)置為0 x00;設(shè)置網(wǎng)卡地址寄存器PAR0PAR5;CR=0 x22,選擇第1頁的寄存器,進(jìn)入正常工作狀態(tài)。4.1.2消息發(fā)送本3.1.2節(jié)介紹RTL8019AS的RAM結(jié)構(gòu):它有16K字節(jié)的RAM,地址為0 x40000 x7FFF,每256字節(jié)稱為一頁,頁碼為0 x400 x80。系統(tǒng)使用 0 x400 x4B 作為發(fā)送緩沖區(qū),共 12 個(gè)頁面,可以存儲(chǔ)最大的 2 個(gè)以太網(wǎng)數(shù)據(jù)包。使用0 x4C0 x7F作為接收緩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論