單片機與以太網接口設計說明_第1頁
單片機與以太網接口設計說明_第2頁
單片機與以太網接口設計說明_第3頁
單片機與以太網接口設計說明_第4頁
單片機與以太網接口設計說明_第5頁
已閱讀5頁,還剩50頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、. . . . 目 錄中文摘要1英文摘要2第1章緒論31.1 嵌入式系統31.2 課題研究的意義31.3 課題最終實現目的3第2章 TCP/IP協議(棧)簡介52.1 TCP/IP協議的分層結構52.2 TCP/IP協議的封裝與分用62.2.1什么是封裝62.2.2 什么是分用62.2.3 以太網幀格式72.3 TCP/IP的子協議82.3.1 ARP協議82.3.2 IP協議102.3.3 ICMP網際控制報文協議122.3.4 TCP傳輸控制協議142.3.5 應用層協議(協議)17第3章硬件實現183.1 物理層接口實現183.1.1 RTL8019AS簡介203.1.2 RTL8019

2、AS的部結構203.1.3 RTL8019AS部寄存器簡介203.1.4 與系統配置和運行有關的寄存器213.1.5 與DMA有關的寄存器233.2 硬件設計253.2.1 硬件接口框圖253.2.2 主要器件說明25第4章軟件實現274.1 RTL8019AS驅動程序設計274.1.1 RTL8019AS的初始化2752 / 554.1.2 報文的發送284.1.3 報文的接收304.2 TCP/IP協議棧的實現314.2.1 地址解析協議ARP的實現314.2.2 網絡層IP協議的實現3 IP包處理3 發送IP報文354.2.3 差錯控制報文ICMP的實現3

3、64.2.4 傳輸控制協議TCP的實現3 TCP報文的處理(接收)3 發送TCP報文404.2.5 應用層(協議)的實現414.3 輕量級TCP/IP協議棧uIP的嵌入424.3.1uIP的架構4 uIP在系統中的位置4 uIP協議棧提供的主要接口444.3.2 uIP在MCS-51單片機上的移植4 移植步驟4 uIP的主控制循環(main函數)46結論50致51參考文獻52附 錄: 硬件電路圖54單片機與以太網接口設計摘要:現實生活中,許多的嵌入式系統設備已被廣泛地應用,由于當前硬件設計的 問題,

4、未嵌入網絡連接模塊,使得這些嵌入式系統在使用上受到限制,而添置新設備又需要很高的成本。本文設計的網絡接入模塊解決了嵌入式設備與以太網絡的連接問題,在不改變嵌入式設備本身結構的情況下,用戶終端可以通過這個模塊將現有的各種串口設備快速方便地接入網絡,從而實現儀器的遠程控制、遠程數據終端的數據通信等功能。本設計方案利用8位單片機AT89C52提供的系統資源和處理能力,加上ISA接口的10 Mb/s網卡芯片RTL8019AS,通過編寫一套精簡的協議棧,并實現可靠的數據通信,從而達到低成本、可靠連接網絡的目的1。關鍵詞:以太網,單片機,RTL8019AS,AT89C52The Interface Des

5、ign of MCU and EthernetAbstract:In the real life, many embedded system devices have been widely used, but they have not embedded the network module owing to the current design problem. It makes these embedded systems limited in use and high expense will have to be paid if new devices should be added

6、.The network access module designed in this thesis solved the problem of the connection between the embedded devices and the Ethernet. Under the circumstance that the structure of the embedded systems will not be changed, the user terminal can access the network fast and conveniently through the var

7、ious serial devices existing in this module, thus realizing the remote control of the devices, the data communication of remote data terminal and other functions.This design scheme takes advantage of the system resources and the process ability provided by an 8-bit-MCU AT89C52 and 10 Mb/s LAN chip R

8、TL8019AS with ISA interface. Through code a concise set of protocol stack, reliable data communication realized and it also achieved the goal of low cost and reliable network connection. Keywords:Ethernet network, MCU, RTL8019AS, AT89C52第1章 緒論1.1嵌入式系統嵌入式系統是指嵌入式計算機與其應用系統,是指嵌入于各種設備與應用產品部的計算機系統,它主要完成信號

9、控制的功能,體積小,結構緊湊,可作為一個部件埋藏于所控制的裝置中,它提供用戶接口、管理有關信息的輸入輸出、監控設備工作,使設備與應用系統有較高的智能和性價比。嵌入式系統由嵌入式硬件與嵌入式軟件組成,硬件以芯片、模板、組件、控制器形式埋藏于設備部,軟件是實時多任務操作系統和各種專用軟件,一般固化在ROM或閃存中。軟硬件可裁剪,適用于對功能、體積、成本、可靠性、功耗有嚴格要求的計算機系統中。嵌入式計算機系統,最早出現在60年代的武器控制中,后來用于軍事指揮控制和通信系統,現在廣泛應用于民用機電一體化產品中。1.2課題研究的意義隨著Internet技術的普與,信息共享的程度越來越提高。TCP/IP協

10、議棧使得嵌入式系統可以通過Internet將通信距離無限擴展。以太網使得大量數據的快速傳輸成為可能。這樣,除了可以充分利用PC機上各種資源,完成數據的存儲、分析、統計工作外,還可以實現測控系統間的數據交換,對于智能化、模塊化的嵌入式設備集群的實現提供了另一種途徑。PPP協議可以通過調制解調器實現遠程的數據交換、狀態控制等功能,為嵌入式系統提供了更為靈活的控制、監測方式。因此,基于單片機的嵌入式系統如何控制以太網網卡控制器進行數據傳輸,如何嵌入TCP/IP協議連接到互聯網,這些都具有深遠的意義2。1.3課題最終實現目的本課題主要實現將TCP/IP協議嵌入 8位單片機中,單片機上網研究最多的一種方

11、案就是用單片機驅動ISA總線網卡或者是驅動基于ISA總線的以太網(局域網組網規) 控制芯片,考慮到在實際的網絡應用中以太網在局域網中占有主導地位,本文采用后者。單片機上網的困難在于TCP/IP協議是一組龐大的協議集,而8位單片機自身資源有限,其存儲容量、運行速度和總線寬度等不能像PC機那樣通過標準的硬件和軟件接口實現TCP/IP。本文將介紹利用Atmel公司的51單片機芯片AT89C52,它能夠滿足需求,而且極為常用,價格便宜,易于獲取。網卡芯片采用Realtek公司生產的10Mbps ISA總線的以太網控制芯片RTL8019AS,嵌入T CP協議以實現單片機上網。第2章 TCP/IP協議(棧

12、)簡介2.1 TCP/IP協議的分層結構TCP協議和IP協議是使計算機能相互通信的一組協議中的兩個重要協議,通常就用TCP/IP來代表這一組協議。該協議是用于通信的一個規則或標準,由計算機傳送數據時使用,保證Internet上數據的準確快速傳輸。本文采用TCP/IP的一種簡化的四層模型,分別為:應用層、傳輸層、網絡層、鏈路層。如表2.1所示。表2.1 TCP/IP協議的分層結構層主要協議應用層FTP 、TELNET、 SMTP、 SNTP、 傳輸層TCP、UDP網絡層IP、ARP、RARP、IGMP、ICMP鏈路層接口層協議鏈路層:有時也稱作數據鏈路層或網絡接口層,定義計算機怎樣連接網絡,數據

13、必須通過對網絡的連接才能傳出去,它提供物理介質(如網卡芯片)與單片機的接口,將原始數據轉換成上一層能識別的邏輯幀。網絡層: 負責處理從原發送方到目的地的報文地址和路由信息,以便讓信息可以發送到相鄰的TCP/IP網絡上的任意主機上。IP協議就是層中傳送數據的機制。這一層使用的主要協議還有:地址轉換協議(ARP協議)、反向地址解析協議(RARP協議)、網際控制報文協議(ICMP協議)和Internet組管理協議(IGMP協議)。傳輸層: 主要為兩臺主機上的應用程序提供發送端到目的端的通信。這一層的協議有兩個,基于可靠傳輸的傳輸控制協議(TCP協議)和不可靠傳輸的用戶數據報協議(UDP)。應用層:負

14、責對接收的數據提供解釋服務。對嵌入式系統來說,有兩個協議是非常重要的,即超文本協議( 協議)和文件傳輸協議(FTP協議)。超文本傳輸協議用于將文件從一個主機傳送到另一個主機,并在請求方主機上顯示文字、文件;文件傳輸協議用于將文件從一個主機傳送到另一個主機,并將文件存儲在發出請求的主機。它傳送的只是一個拷貝,不是原文件。其它的協議還有遠程登錄、簡單傳輸協議、簡單網絡管理協議等3。2.2 TCP/IP協議的封裝和分用TCP/IP協議采用分層結構,實現也采用分層實現的方法。在實現的過程中首先要了解封裝和分用的概念。2.2.1 什么是封裝當應用程序用TCP傳送數據時,數據被送入協議棧中,然后逐個通過每

15、一層,直到被當作一串比特流送入網絡。其中每一層對收到的數據都要增加一些首部信息(有時還要增加尾部信息),這個過程稱作封裝。如圖2.1所示:app1首部數據IP首部TCP首部幀首部TCP數據IP數據以太網幀數據幀尾部TCP報文IP報文以太網幀圖2.1 數據進入協議棧時的封裝過程2.2.2 什么是分用當目的主機收到一個以太網數據幀時,數據就開始從協議棧底層向上升,同時去掉各層協議加上的報文首部。以太網幀要檢查首部中的幀類型字段,IP要檢查首部中的協議字段,TCP和UDP要檢查首部中的端口號來確定數據屬于哪一層,這個過程稱作分用。如圖2.2所示:ARPIPRARP以太網幀TCPIGMPUDPICMP

16、應用程序應用程序應用程序應用程序根據首部中的協議值分根據首部中的幀類型分根據首部中的端口號分圖2.2 以太網數據幀的分用過程2.2.3 以太網幀格式各種通訊協議都有自己的報文格式,TCP/IP也不例外,它也有自己單獨的報文格式。對TCP/IP協議編程,首先要清楚其報文格式。由于TCP/IP協議采用分層結構,各層都有專用的,下面先介紹以太網的物理幀格式,TCP/IP其它各層的幀格式講座2.3節介紹。以太網協議不止一種,本課題使用的是802.3協議,物理信道上的收發操作均使用此協議的幀格式。一個標準的以太網物理傳輸幀由前導列PR、分隔位SD、目的地址DA、源地址SA、類型字段Type、數據段Dat

17、a、填充位PAD和幀校驗序列FCS共8部分組成。幀結構如表2.2所示。表2.2 802.3協議以太網物理幀結構PRSDDASATypeDataPADFCS56位8位48位48位16位461500字節DATA小于46字節時補032位PR:同步位,用于收發雙方的時鐘同步,同時也指明了傳輸的速率(10M和100M的時鐘頻率不一樣,所以100M網卡可以兼容10M網卡),是56位的二進制數0.。SD:分隔位,表示下面跟著的是真正的數據,而不是同步時鐘,為8位的10101011,跟同步位不同的是最后2位是11而不是10。DA:目的地址,以太網的地址為48位(6個字節)二進制地址,表明該幀傳輸給哪個網卡。如

18、果為FFFFFFFFFFFF,則是廣播地址,廣播地址的數據可以被任何網卡接收到。SA:源地址,48位,表明該幀的數據是哪個網卡發的,即發送端的網卡地址,同樣是6個字節。 TYPE:類型字段,表明該幀的數據是什么類型的數據,不同的協議的類型字段不同。如:0800H 表示數據為IP包,0806H 表示數據為ARP包,814CH是SNMP包,8137H為IPX/SPX包,(小于0600H的值是用于IEEE802的,表示數據包的長度。)DATA:數據段 ,該段數據不能超過1500字節。因為以太網規定整個傳輸包的最大長度不能超過1514字節。(14字節為DA,SA,TYPE)PAD:填充位。由于以太網幀

19、傳輸的數據包最小不能小于60字節,除去(DA,SA,TYPE 14字節),還必須傳輸46字節的數據,當數據段的數據不足46字節時,后面補000000.(當然也可以補其它值)FCS:32位數據校驗位.為32位的CRC校驗,該校驗由網卡自動計算,自動生成,自動校驗,自動在數據段后面填入。對于數據的校驗算法,我們無需了解。數據幀傳輸時,除了數據段的長度不定以外,其他部分的長度固定不變。數據段為461500字節。以太網規定整個傳輸包的最大長度不能超過1514字節(14字節為DA、SA、Type),最小不能小于60字節。除去DA、SA和Type共14字節以外,還最少必須傳輸46字節的數據,當數據段的數據

20、不足46字節時需填充,填充字符的個數不包括在長度字段里,超過1500字節,需要拆成多個幀傳送。事實上,發送數據時,PR、SD、FCS與填充字段這幾個數據段由以太網控制器自動產生;而接收數據時,PR、SD被跳過,它們只被控制器檢測,而不被作為接收數據接收,控制器一旦檢測到有效的前序字段(即PR和SD),就認為接收數據開始。2.3 TCP/IP的子協議2.3.1 ARP協議ARP是Address Resolution Protocol的縮寫,中文譯作“地址解析協議”。本質是完成網絡地址到物理地址的映射。從概念上講就是找到一個映射方法f,使得“物理地=f(網絡地址)”。 物理地址有兩種基本類型:以太

21、網類型和ProNET令牌網類型,前者有大型的固定的物理地址,后者有小型的易于配置的物理地址,網絡地址特指IP地址。 地址解析協議ARP是IP能夠獲得與某個給定IP地址相關的主機物理地址。ARP的功能分為兩部分:一部分在發送數據包時請求獲得目的主機的物理地址;另一部分向請求物理地址的主機發送解析結果。 地址解析原理:當主機A需要向同一物理網絡中的主機B發送IP數據報時,主機A的IP層要將IP數據報傳給數據鏈路層進行幀封裝,封裝時要求給出目的主機的物理地址。因此,IP層發送IP數據報時通常將產生以下事件:(1) IP調用ARP,請求IP地址為IB的目的主機B的物理地址為PA。(2) ARP創建一個

22、ARP請求幀,請求IP地址IB對應的物理地址。ARP請求將包括如下信息:l 請求主機的物理地址PA;l 請求主機的IP地址IA;l 目的主機的IP地址IB。(3) 主機A在本地網絡中廣播ARP請求幀,請求幀的目的地址為廣播地址(全為“1” )。(4) 該網絡中的所有主機都能接收ARP請求幀,并將該幀中的目的地址IP地址IB和自己的IP地址進行比較。其地址IB不匹配的主機將忽略這個幀。(5) 如果主機發現請求中的目的主機IP地址IB與自己的IP地址一樣,就產生一個包含其物理地址PB的ARP應答幀。 (6) ARP應答幀直接發回給發送ARP請求的主機A(ARP應答幀不以廣播方式發送)。ARP應答幀

23、包含以下信息:l 應答主機的物理地址PB;l 應答主機的IP地址IB;l 請求主機的物理地址PA;l 請求主機的IP地址IA。(7) 利用從應答幀中得到的目的主機的物理地址PB完成IP數據報的幀封裝,并將該幀發送給主機B。 這里需要注意一下兩點:(1) ARP請求幀在物理網絡中是以廣播方式發送的,因此此時還不知道目的主機的物理地址。ARP應答幀是以單播方式發送的,因為應答方從請求幀中可以得到對方的物理地址。(2) 目的主機必須與源主機位于同一物理網絡中。由于ARP采用的是物理網絡中的廣播,IP路由器不會對該廣播進行轉發,因而不能用ARP確定遠程網絡中主機的物理地址,而且也沒有必要知道遠程地址的

24、物理地址。如果目的主機位于遠程網絡中,IP會將數據報先發送給路由器,然后又路由器進行轉發。在這種情況下,IP只需要利用ARP確定路由器的物理地址就可以了,而路由器將逐級向前轉發數據報。以下是ARP地址解析報文的幀格式:表2.3 地址解析報文的幀格式字段以太網首部硬件類型協議類型硬件地址長度協議地址長度OP發送端以太網地址發送端IP地址目的以太網地址目的IP地址位161616881648324832l 以太網首部:幀封裝時加在ARP報文的首部。ARP報文作為以太網幀的數據部分進行發送。以太網幀結構參見2.2.3節。l 硬件類型:16比特,定義物理網絡類型。物理網絡的類型用一個整數值以太網的硬件類

25、型值為“1”。l 協議類型:16比特,定義使用ARP協議的類型。如0x0800表示IPV4。l 硬件地址長度:8比特,以字節為單位定義物理地址長度。以太網為6。l 協議地址長度:8比特,以字節為單位定義物理地址長度。IPV4為4。l 操作類型:16比特,定義報文的類型(“1”為ARP請求,“2”為ARP應答,“3”為RARP請求,“4”為RARP應答)。l 發送方以太網地址:定義發送方的物理地址。l 發送方IP地址:定義發送方的網絡地址。l 目的以太網地址:定義目的設備的物理地址。l 目的IP地址:定義目的設備的網絡地址。2.3.2 IP協議正像TCP/IP協議的名稱所表達的信息那樣,因特網的

26、核心協議是IP和TCP兩大協議。IP協議作為TCP/IP協議簇中的核心協議,提供了網絡數據傳輸的最基本的服務,同時也是實現網絡互連的基本協議。除了ARP和RARP報文以外的幾乎所有的數據都要經過IP協議進行發送。IP協議位于網絡層,位于同一層次的協議還有ARP和RARP以與上面的因特網控制報文協議ICMP和因特網組管理協議IGMP。ARP和RARP報文沒有封裝在IP數據報中,而ICMP和IGMP的數據則要封裝在IP數據報中進行傳輸。由于IP協議在網絡層中具有重要的地位,人們又將TCP/IP協議的網絡層稱為IP層。IP是不可靠的無連接數據報協議,提供盡力而為(best-effort)的傳輸服務。

27、IP協議具有以下特點:(1)是點對點協議,雖然IP數據報攜帶源IP地址和目的IP地址,但進行數據傳輸時的對等實體一定是相鄰設備(同一網絡)中的對等實體。(2)IP協議不保證傳輸的可靠性,不對數據進行差錯校驗和跟蹤,當數據報發生損壞時不向發送方通告,如果要求數據傳輸具有可靠性,則要在IP的上面使用TCP協議加以保證。(3)IP協議提供無連接數據報服務,各個數據報獨立傳輸,可能沿著不同的路徑到達目的地,也可能不會按序到達目的地。正因為IP協議采用盡力傳輸的思想,所以使得IP協議的效率非常高,實現起來也比較簡單。隨著底層網絡質量的日益提高,IP協議的盡力傳輸的好處也體現得更加明顯。IP層向下要面對各

28、種不同的物理網絡,向上卻要提供一個統一的數據傳輸服務。為此,IP層通過IP地址實現物理地址的統一;通過IP數據報實現了物理數據幀的統一。IP層通過對以上兩個方面的統一達到了向上屏蔽底層差異的目的。IP數據報文格式如下表所示:表2.4 IP數據報格式字段版本首部長度服務類型總長度標識標志片偏移生存時間協議頭校驗和源IP地址目的IP地址選項數據位448161631388163232普通的IP首部長為20字節,如果包括選項字段可達60字節。l IP目前的協議版本為4,因此有時IP也稱為IPV4。l 首部長度字段長度為4比特,指出以32位字長(4字節)為單位的數據報首部長度。由于IP數據報首部包含了I

29、P選項這一變長的字段,所以需要通過首部長度確定首部和數據的分界點。l 用單片機實現TCP/IP協議要作一些簡化,不考慮數據分片和優先權。因此不討論服務類型、標志和片偏移,只需填0即可。l 數據報總長度字段的長度為16比特,總長度以字節為單位指示整個IP數據報的長度。IP數據報最大長度可達(即65535)個字節。根據首部長度和總長度可以計算出數據部分的長度。l 標識是數據包的ID號,用于識別不同的IP數據包。l 生存時間TTL是個數量級的概念,防止無用數據包一直存在網絡中。一般每經過一個路由器減1,因此通過TTL可以算出數據包到達目的地所經過的路由器的個數。l 協議字段表示創建該數據包的高級協議

30、的類型。如:1表示ICMP協議,6表示TCP協議,17表示UDP協議。l 頭校驗和字段為16比特。用于保證首部數據的完整性。數據部分的正確性則由高層協議予以保證。l 源IP地址指發送方IP地址。l 目的IP地址指接收方IP地址。l 選項字段為變長字段,是在傳輸數據報時可選的附加功能,用于控制數據在網絡中的傳輸路徑、記錄數據報經過的路由器以與獲取數據報在途中經過的路由器的時間戳。IP選項長度受首部長度限制4。2.3.3 ICMP網際控制報文協議TCP/IP的IP層在完成無連接數據報傳輸的同時,還實現一些基本的控制功能。這些控制功能包括:差錯報告、擁塞控制、路徑控制以與路由器和主機信息的獲取等。實

31、現這些控制功能的協議是位于IP層的因特網控制報文協議ICMP(Internet Control Massage Protocol)。ICMP報文分為兩大類,差錯報告報文和查詢報文。經常被認為是IP層的一個組成部分。ICMP報文首先要封裝成IP數據報,然后再傳遞給下一層。報文格式見表2.5所示:表2.5 ICMP報文格式8位類型8位代碼16位校驗和首部其它部分數據數據首部ICMP報文首部的通用部分由類型、代碼和校驗和3個字段構成。l 類型(TYPE):指示ICMP報文的類型。l 代碼(CODE):提供關于報文類型的進一步信息。l 校驗和(CHECKSUM):提供ICMP整個報文的校驗和,校驗和算

32、法與IP數據報首部校驗和算法一樣。與IP數據報首部校驗和不同的地方是,ICMP校驗和是整個報文的校驗和,另外使用校驗和進行校驗的設備不是中間的路由器,而是最終的目的地。l 首部其它部分為4個字節,大部分差錯報告報文未用到這一部分,參數錯報告報文用到其中的一個字節作為指針,請求應答報文對利用這4個字節匹配請求與應答報文。不使用時將不使用部分填“0” 。l 數據段部分在報告差錯時,攜帶原始出錯數據報的首部和數據的前8個字節,通常這些信息包括了該數據報的關鍵信息(前8個字節一般為上層協議的首部信息);在請求和應答報文中,攜帶與請求和應答相關的額外信息。所有報文的前4個字節都是一樣的,但是剩下的其他字

33、節則互不一樣。類型字段可以有15個不同的值,以描述特定類型的ICMP報文。有些ICMP還使用代碼字段的值來進一步描述不同的條件。ICMP差錯報告報文常見類型和含義見表2.6所示:表2.6 ICMP常見類型號與其含義類型34511128或010或913或1417或18報文含義目的地不可達源中斷重定向數據報超時數據報參數有問題回送請求和應答路由器詢問和通告時間戳請求或應答地址屏蔽請求或回答本課題只考慮ICMP報文的目的站不可達和回送請求與應答報文,表2.7和表2.8分別為這兩種報文的格式。表2.7 目的站不可達報文格式類型3代碼0-15校驗和收到IP一部分,包括IP首部以與前8字節字段類型8或0代

34、碼檢驗和標識符序號可選數據位88161616由請求報文發送,有應答報文重復表2.8 回應請求與應答報文格式 字段類型8和0代碼檢驗和標識符序號可選數據位88161616由請求報文發送,由應答報文重復注:類型0為回應應答報文,8為回應請求報。整個數據包均參與檢驗。2.3.4 TCP傳輸控制協議傳輸層是TCP/IP協議中的一個舉足輕重的層次,網絡層用IP數據報統一了數據鏈路層的數據幀,用IP地址統一了數據鏈路層的MAC地址,但網絡層沒有對服務進行統一。傳輸層的目的在于彌補和加強通信子網服務。在TCP/IP協議的傳輸層,提供了面向連接的傳輸控制協議TCP和無連接的用戶數據報協議UDP。就不同的底層網

35、絡而言,TCP和UDP有不同的適用圍,TCP適用于可靠性較差的廣域網,UDP則使用于可靠性較高的廣域網。傳輸層以下各層只提供相鄰機器的點到點傳輸,而傳輸層提供了端到端的數據傳輸,這里的端到端不僅指源主機到目的主機的端到端通信,而且指源進程到目的進程的端到端通信。 TCP采用協議端口來標識某一主機上的通信進程。為了保證信息能夠正確地到達指定的端進程,必須顯示地給出全局惟一的信宿端得進程表示符。主機可以用IP地址進行標識,IP地址是全局惟一的,再給主機上的進程賦予一個本地惟一的標識符(端口號),二者加起來,便形成了進程的全局惟一標識符。每個應用進程之間的通信都是基于所謂的socket套接字。套接字

36、socket是系統提供的進程通信編程界面,支持客戶/服務器模型。它關聯了應用程序和端口,并且為每一個端口分配多個通信端點,從而可以實現同一應用程序的多進程服務。socket地址提供了進程通信的端點。客戶和服務器進程通信之前,雙方先各自創建一個端點,構成各自的半關聯。每個socket都有一個操作系統分配的本地惟一的socket號。然后客戶根據服務器的熟知地址建立socket連接。可以用一個完整的關聯描述一個socket連接:(協議,本地主機地址,本地端口號,遠程主機地址,遠程端口號)socket支持不同的傳輸層協議,當使用TCP協議作為傳輸層協議時,一個socket連接就是一個TCP連接。TCP

37、是面向流的協議,發送方以字節流發送數據,接收方以字節流接收數據。數據在建立的連接上按順序發送,并且按順序達到信宿機。圖2.3給出了TCP端口和字節流的直觀描述。應用程序( )應用程序( )臨時端口熟知端口TCPTCP主機A客戶主機B服務器IP地址:IP地址:字節流圖2.3 進程標識與流傳輸一個TCP連接的建立過程需要經過客戶端與服務器之間的三次握手。TCP報文格式見表2.9所示。表2.9 TCP報文格式字段源端口地址目的端口地址序號確認號首部長度保留urgackpshrstsynfin窗口檢驗和緊急指針選項填充數據位16163232466161616

38、TCP段格式中各個字段的含義和作用如下:l 源端口地址定義主機中發送本TCP數據段的應用程序的端口號。l 目的端口地址定義接收本TCP數據段的應用程序的端口號。l 序號指出段中的數據部分在發送方數據流中的位置。也就是發送的數據部分第一個字節的序號。l 確認號指出接收方希望收到對方下次發送的數據的第一個字節的序號。這個序號表明該序號以前的數據已經被正確接收。l 首部長度指出以32比特字長(4字節)為單位的段首部長度。l 保留字段長度為6比特,留作將來使用。l 控制字段的每一位都有特定的含義,指出段的目的和容。l 窗口大小字段長度為16比特,用于向對方通告當前本機的接收緩沖區的大小(以字節為單位)

39、。l 校驗和的校驗圍包括段首部、數據以與偽首部。其計算方法與IP數據報首部校驗和的計算方法一樣。l TCP選項是變長字段,位于TCP報頭的最后,由若干8位比特的字節組成,所有的選項都參與校驗和的計算,選項可以開始于任何一個字節邊界,有兩種選項的格式:(1)只有選項類型的單字節選項。(2)一字節的選項類型,一字節的選項長度和實際選項值,選項長度的計算包括選項類型,選項長度和實際選項值。2.3.5 應用層協議( 協議)超文本傳輸控制協議( )用來分發超文本媒體信息,相當靈活和迅速,是目前通過Internet進行信息交換的最主要方式。 協議是建立在請求/響應模型上的,每次發送請求時必須重新建立連接,

40、也就是程序每次只處理一個請求。客戶機建立一條與服務器的TCP連接,并發送一個請求到服務器,請求中包含請求方法、URI(統一資源標志符)、協議版本以與相關的MIME式樣的信息(包含服務器的信息、資源實體的信息和可能的資源容)。 1.0為每一次 請求/響應建立一條新 TCP連接,因此一個包含HTML容和圖片的頁面將需要建立多次的短期TCP連接。 1.1提出了可持續連接的實現方法, 1.1將只建立一次TCP的連接而重復地使用它傳輸一系列的請求/應答消息,因此減少了連接建立的次數和經常性的連接開銷。但是在嵌入式系統中不要求 的持續連接,而且傳輸的數據量也不是很大,所以系統實現了 1.0。 有以下幾個特

41、點:1) 請求/響應,一旦建立了傳輸會話,一端(通常是瀏覽器)必須向響應的另一端發送 請求。2) 無狀態。每個 請求都是自包含的,服務器不保留以前的請求或會話的歷史記錄。3) 雙向傳輸。在大多數情況下,瀏覽器請求Web頁,服務器把副本傳輸給瀏覽器。 也允許從瀏覽器向服務器傳輸(如果用戶提交所謂“表單”的話)。4) 協商能力。 允許瀏覽器和服務器協商一些細節,如在傳輸中使用的字符集,發送方指定它提供的能力,接收方指定它接收的能力。5) 支持高速緩存。為了減少響應時間,瀏覽器將它接收的每個Web頁的副本放入高速緩存。如果用戶再次請求該頁,則 允許瀏覽器訪問服務器,確定自從高速緩存之后該頁的容是否已

42、經改變。6) 支持中介。 允許在瀏覽器到服務器之間路徑上的機器作為代理服務器,將Web頁放入高速緩存并從中應答瀏覽器的請求。7) 應用層。 在應用層上操作。它采用一種穩定的,面向連接的傳輸協議,如TCP,但是不提供可靠性或重傳機制5。第3章 硬件實現3.1 物理層接口實現系統采用基于因特網的接入方式,實現串行通訊協議和以太網協議的轉換。與局域網額接口采用Realtek公司的網絡接口控制器RTL8019AS實現。RTL8019AS是100腳、PQFP封裝、ISA接口的以太網接口芯片,接入速率10Mb/s。串行接口可以實現RS-232。RS-232選用MAXM公司的MAX232(A)。系統通過RT

43、L8019AS接入以太網,利用現有的局域網線路,實現RS-232信號數據的遠程傳輸。下面分別介紹物理層的接口實現。3.1.1 RTL8019AS簡介6RTL8019AS是本系統與以太網通訊的基礎,它用以實現系統與網絡上其他節點之間的報文發送與接收功能,處于TCP/IP協議棧的數據鏈路層,是信息傳送、控制和管理的重要環節。其功能大致可分為以下兩種;(1) 通信數據的發送和接收。發送時,將發送來的數據按照特定的格式并加上前導碼、幀定界符燈裝配成幀,并進行CRC校驗。校驗后,將數據串行的從網線上發送出去。接收時,判斷報文的目的地址是否為本機地址,如果是,對報文進行校驗。校驗正確,則將報文發往存儲器本

44、發送一個ACK應答幀。如果校驗后發現報文錯誤,則將收到的報文丟棄并發送一個NAK否定應答幀。(2) 載波信號的收發和控制。這項功能包括載波監聽、發送時間等。確切的說,網絡控制器是一個DTE(數據終端設備)。按照IEEE802.3協議的模型功能劃分,可將10Mb/s以太網控制器的功能模塊劃分為介質存取控制(MAC)子層、接入單元接口(AUI)、介質接入單元(MAU)和物理信號規(PLS)等4部分,其大體結構框圖如圖3.1所示:地址寄存器MACPLS緩沖存儲器網絡接口AUIMAU系統總線圖3.1 RTL8019AS結構框圖各單元的功能如下:(1) MAC子層負責執行CSMA/CD協議,負責發送和接

45、收數據封包以與通信媒體管理、完成數據幀同步、接收數據幀時給數據幀定界、檢測目的地址是否匹配以與沖突處理等功能。(2) PLS完成發送數據、接收數據、載波監聽、錯誤檢測等功能,這些功能都與通訊媒介無關。PLS將MAC傳送來的NRI(不歸零編碼)編碼的數據轉換成曼徹斯特編碼后并將數據通過AUI發送到MAU,或通過AUI從MAU接收以曼徹斯特編碼方式編碼的數據,并將數據進行NRI譯碼后將數據發送到MAC。(3) AUI提供PLS功能與MAU之間信號的通道。(4) MAU與通訊媒介直接相關,是DTE與網絡介質之間的功能、電氣與機(5) 械的接口。它將隨著通信媒介的不同而不同,用于完成發送數據、接收數據

46、、回環以與沖突檢測、SQE(信號質量錯誤)測試等功能。網絡的沖突檢測、沖突退避重發、檢測接收報文目的地址是否匹配、檢測報文CRC校驗等工作都由硬件來完成,本系統中只要對發送、接收、初始化、中斷處理、出錯處理和I/O操作等進行控制。3.1.2 RTL8019AS的部結構(1)RTL8019AS部有兩塊RAM區。一塊容量為16KB,地址為0x40000x7fff,用于收發緩沖。收發緩沖以頁為單位,每頁256字節,共64頁,對應的頁號為0x400x80。一般將前12頁(即地址為0x40000x4bff)作為發送緩沖區,且分為兩個6頁。這兩個發送緩沖區交替使用,可提高發送效率。后52頁(即地址為0x4

47、c000x7fff)作為接收緩沖區。為了有效利用接收緩沖區,將接收緩沖區RAM構成FIFO循環隊列結構。要接收和發送數據包就必須通過DMA讀寫RTL8019AS部的16KB RAM。它實際上是雙端口的RAM,有兩套總線連接大奧該RAM:一套總線是RTL8019AS讀寫該RAM,即本地DMA;另一套總線是單片機讀寫該RAM,即遠程DMA。(2)另一塊只有32字節,地址為0x00000x001f,稱為Prom頁,存儲有本網卡芯片的以太網物理地址,其中地址0x00000x000b共12個字節存放以太網物理地址,0x000b后面的地址存儲的是生產廠商的代碼和產品標識代碼。以太網物理地址是6個字節的,這

48、里使用12字節是因為這12字節是重復存儲的,例如物理地址0x50584AC219DF存儲在0x00000x000b里是50505859ACACC2C21919DFDF,可以看到單和雙的地址存儲的是一樣的。生產廠商和產品標識代碼也是單雙地址重復存儲的。值得一提的是網卡地址是唯一的,且一旦某一網卡生產出來之后,該網卡芯片的物理地址就固定了,是不能改變的。(3)RTL8019AS具有32為I/O地址,地址偏移量為0x000x1f(本例中對應于0x3000x31f)。(4)其中0x000x0f共16個地址為寄存器地址。寄存器分為4頁:Page0Page3,由RTL8019AS的命令寄存器(CR)中的P

49、S0、PS1為來決定要訪問的頁。0x100x17為遠程DMA地址,都可以用來作為遠程DMA端口,使用其中一個即可,本課題選用0x10。這樣,微控制器通過讀寫端口0x10即可實現對RTL8019AS部緩沖區的訪問。0x180x1f共8個地址為復位端口,它們功能一樣,用于對RTL8019AS的熱復位,使用其中一個即可,本課題選用0x18。3.1.3 RTL8019AS部寄存器簡介寄存器的設置和使是RTL8019AS應用的關鍵。RTL8019AS的寄存器大致可分為兩組,一組稱為NE2000寄存器組,另一組稱為PnP組。因為本設計不涉與即插即用功能,故PnP寄存器不予詳細敘述。 NE2000寄存器組分

50、為4頁,由寄存器CR中的PS0和PS1加以選擇。其中0x000x1f是控制寄存器。0x100x17是遠程DMA控制寄存器。0x180x1f是Reset寄存器,8個Reset口的作用是一樣的。表3.1是RTL8019AS寄存器組與其地址分布表:表3.1 RTL8019AS的NE2000寄存器組3.1.4與系統配置和運行有關的寄存器1. CR:命令寄存器(00H;類型:讀寫)該寄存器用于選擇寄存器頁,允許或禁止遠程DMA以與發出各種命令。可能是編程中使用最頻繁的寄存器。位符號簡述7、6PS1、PS0表示寄存器頁。02頁:NE2000兼容;3頁:RTL8019AS配置53RD20000非法;001遠

51、程讀;010遠程寫;011發送包; 1××遠程DMA完成/退出。2TXP發送包時必須置位。發送完成或退出時部復位。寫零無效。1STA無控制作用,僅反映此位的寫入值,上電時為00STP該位為停止命令。職位時既不發送也不接收。2. ISR:中斷狀態寄存器(O7H;類型:0頁讀寫)該寄存器反映網絡接口控制器(NIC)的狀態,主控機通過讀取其狀態定中斷源。位符號簡述7RST當網絡接口控制器(NIC)進入復位狀態時置位,而向CR發出啟動命令時清零。此外在接收緩存溢出時置位,而在一個和多個包被從緩存中讀出時清零。6RDC遠程DMA完成時置位5CNT在一個或多個網絡故障計數器(tally

52、 counters)的最高位為1時置位4OVW接收緩存用盡時置位3TXE發送出錯位,當一個包由于沖突過多而退出時置位2RXE當包接收出現CRC、幀對位或幀丟失等錯誤時置位1PTX表示包發送無誤0PRX表示包接收無誤3. IMR:中斷屏蔽寄存器(0FH;類型:0頁寫,2頁讀)各位與ISR對應。上電時全0,某位置1開放對應的中斷。4. DCR:數據配置寄存器(0EH;類型:0頁寫,2頁讀)5. TCR:發送配置寄存器(0DH;類型:0頁寫,2頁讀)位76543210符號111OFSTATDPB1PB0CRC其中:CRC禁止或允許發送時的CRC邏輯。6. TSR:發送狀態寄存器(04H;類型:0頁讀

53、)該寄存器表示包發送的狀態。位76543210符號OWCCDH1CRSABTCOL1PTX其中:ABT一表示網絡接口控制器由于過多沖突而退出發送;COL一表示發送與網絡中其它站點發生碰撞;PTX一表示發送完成無誤。7. RCR:接收配置寄存器(0CH;類型:0頁寫,2頁讀)位符號簡述7總是16總是15MON置位時為監控模式,對接收包只檢查不緩存:清零時則緩存。4PRO置位時所以具有物理地址的包均接受;清零時只接受與節點地址匹配的包3AM置位時接受具有多發目標地址的包,清零時拒絕接受多發目標地址址包2AB置位時接受具有廣播目標地址的包,清零時拒絕接受廣播目標地址包。1AR置位時接受長度少于64字

54、節的包,清零時拒絕接受長度少于64字節的包。0SEP置位時接受有接收錯誤的包,清零時拒絕接受有接收錯誤的包。8. RSR:接收狀態寄存器(0CH;類型:0頁讀)位符號簡述7DFR延遲。檢測到載波或碰撞時置位6DIS禁止接收。當NIC處于監控模式時置位且禁止接收。退出監控允許接收時清零。5PHY接收包為多發或廣播目標地址時置位;為物理目標地址時清零。4MPA包丟失位。由于緩存不足或處于監控模式而不能接收輸入包時置位。3總為12PAE幀對齊出錯,表示輸入包未在字節邊界終止,CRC與邊界字節不符1CRCCRC出錯0PRX包接收無誤3.1.5 與DMA有關的寄存器1. CLDA0,1:當前本地DMA寄存器(0lH與02H;類型:0頁讀)從這兩個寄存器可讀出當前本地DMA地

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論