TCP/IP協(xié)議在A T91RM9200上的實現(xiàn)
——
摘要:介紹了AT91RM9200[1]芯片與DM9161E[2]的硬件接口電路設計以及驅動程序開發(fā)。在此基礎上討論了TCP/IP[3]分層實現(xiàn)方法,并根據(jù)實際情況進行簡化。最后詳細論述了TCP
/IP協(xié)議在AT91RM9200上的具體實現(xiàn)過程。
關鍵詞:TCP/IP協(xié)議;AT91RM9200;
Implement TCP/IP Protocol In AT91RM9200
Lin YunBiao1 Wu Chengke1 Li Yunsong1
(School of Communication Engineering, National Key Lab. of Integrated Service Networks, Xidian University., Xi’an 710071, China)
Abstract: This Paper firstly introduces the design of the hardware interface circuit of The At91RM9200 and DM9161E, and then discusses how to embed the TCP/IP protocol into the AT91RM9200; Secondly, It discusses the delamination realize of the TCP/IP protocol, and According to the needs of the application take some measures to simplify the protocol. Finally, it describes the process of realizing TCP/IP in AT91RM9200.
Keywords: TCP/IP Protocol; AT91RM9200;
1 引言
隨著internet的飛速發(fā)展,人們對網(wǎng)絡的要求也日益增多。尤其隨著集成電路的發(fā)展像ARM[7]那種低功耗,多功能芯片不斷出現(xiàn)。人們自然而然要求在它們上面實現(xiàn)上網(wǎng)功能,從而使它們的應用領域變得更加廣泛。本文采用了ATMEL公司的AT91RM9200 ARM芯片設計與DM9161E的硬件接口電路,并且在AT91RM9100上實現(xiàn)了TCP/IP協(xié)議,使它具有了上網(wǎng)功能,最終能夠實現(xiàn)與其他的設備進行網(wǎng)上數(shù)據(jù)業(yè)務。
2 芯片簡介
AT91RM9200是ATMEL公司推出一款基于AT920T處理器的片上系統(tǒng),內部集成了豐富的標準接口,包括USB主/從設備接口、串口、10/100M以太網(wǎng)媒體接入控制器、SPI、TWI[1]、擴展總線接口(EBI[1])等。AT91RM9200內嵌以太網(wǎng)控制器可以半雙工或全雙工模式在10M/100Mbps速率下工作。在半雙工模式下,控制器支持IEEE802.3 CSMA/CD 協(xié)議;在全雙工模式下,它支持具有流控控制的IEEE802.3 MAC控制層。以太網(wǎng)控制器的MAC層支持MII[ 1 ](Media Independent Interface)和BDI[ 1 ](Buffered DMA Interface), MII 遵
循ISO/IEC802.3 中物理層與MAC 層分離的媒體獨立標準。物理層接口(PHY)完成所有輸入輸出數(shù)據(jù)的編碼解碼:10Base-T采用Manchester 編碼、100Base-X 采用4B/5B 編碼、100Base-T4 采用8B/6T 編碼。在接收數(shù)據(jù)時,MII 接收前綴和末尾都加CRC 的原始數(shù)據(jù)包。在發(fā)送數(shù)據(jù)時,MII 給數(shù)據(jù)包加上前綴和末尾的CRC,MAC層還產生填充數(shù)據(jù)并傳給PHY。
DM9161E是DAVICOM公司推出的一款能夠工作在1000BASE-TX和10BASE-TX的物理層收發(fā)器。在媒體方面,它提供了直接跟非屏蔽五類雙絞線的接口。通過MII接口,DM9161E可以跟AT91RM9200的MAC層進行通信。
3 硬件設計
AT91RM9200與DM9161E的硬件接口電路如圖1所示:
圖 1 AT91RM9200與DM9161E的硬件接口電路
在該系統(tǒng)中 AT91RM9200內部集成了以太網(wǎng)控制器(EMAC),DM9161E負責物理層通信,HR901103A負責電平濾波與屏蔽五類雙絞線接口。
如圖1所示AT91RM9200與DM9161E之間是通過RMII接口進行通信。AT91RM9200的 PA15/EMDC,PA16/EMDIO分別接DM9161E的MDC[1]與 MDIO[1],這樣可以對DM9161E內部寄存器進行操作,包括配置DM9161E物理地址,子網(wǎng)掩碼等。
PA10/ETX1,PA9/ETX0,PA8/TXEN分別接DM9161E的TXD1,TXD0,TXEN進行數(shù)據(jù)發(fā)送控制。
PA13/ERX1與PA12/ERX0分別接DM9161E的RXD1與RXD0進行數(shù)據(jù)接收。AT91
RM9200的NRST接DM9161E RESET腳可以對DM9161E進行同步復位。
DM9161E的MDINT接AT91RM9200的PC4可以實現(xiàn)當DM9161E接收到足夠多網(wǎng)絡數(shù)據(jù)包時向AT91RM9200以太網(wǎng)控制器發(fā)接收中斷信號,通知AT91RM9200對接收數(shù)據(jù)處理。
DM9161E 的RXEN接高電平,表示接收一直有效。而TXEN則由AT91RM9200進行控制,只有有數(shù)據(jù)才有效。
AT91RM9200的PA11/ECRSDV與PA14/ERXER分別接DM9161E的RXDV與RXER,可以監(jiān)控接收到的數(shù)據(jù)的狀態(tài)。
4 軟件設計
4.1設備驅動設計
設備驅動程序設計包括如下幾個部分:
(1) 設備初始化:為了使DM9161E收發(fā)數(shù)據(jù),必須對它內部寄存器進行配置,這些配置包括物理地址、IP地址。為了實現(xiàn)整個TCP/IP協(xié)議,還要有一個定時器。
(2) 中斷服務程序:由于網(wǎng)絡服務中是否有數(shù)據(jù)是未知的,所以必須有一個中斷服務程序,負責處理DM9161E接收到數(shù)據(jù)包時向AT91RM9200EMAC控制器發(fā)出中斷請求,并分析每一個數(shù)據(jù)包,根據(jù)包類型向相應得上層協(xié)議層發(fā)送。
(3) 幀數(shù)據(jù)發(fā)送:為了能使數(shù)據(jù)在網(wǎng)絡上傳輸,還要將IP層過來的數(shù)據(jù)進行裝幀.在每個數(shù)據(jù)包前面加入接收端以太網(wǎng)地址、發(fā)送端以太網(wǎng)地址、服務類型、校驗碼。然后把裝幀后的數(shù)據(jù)包送到DM9161E發(fā)送緩沖區(qū),配置相應發(fā)送寄存器:發(fā)送數(shù)據(jù)包緩沖區(qū)地址、數(shù)據(jù)包長度。寫完長度寄存器后DM9161E就開始啟動發(fā)送。
(4) 幀數(shù)據(jù)接收:將中斷服務程序送過來的數(shù)據(jù)包進行分析,如果是ARP包則將該包交給ARP模塊處理。如果是IP包則將該包發(fā)送給IP模塊處理。
4.2 TCP/IP的具體實現(xiàn)
由于傳統(tǒng)PC機內存資源豐富,而且還是多任務系統(tǒng),所以在傳統(tǒng)PC機上能夠實現(xiàn)完整TCP/IP協(xié)議。但在AT91RM9200實現(xiàn)的嵌入式系統(tǒng)中,由于受到內存和處理速度限制,不可能實現(xiàn)完整TCP/IP。因此必須對TCP/IP根據(jù)實際情況進行簡化。本文在AT91RM9200上面實現(xiàn)ARP、IP、ICMP、UDP和TCP,并對它們按層(圖2 所示)進行了簡化。
在數(shù)據(jù)鏈路層實現(xiàn)ARP協(xié)議。該模塊由ARPRequest、ARPInput、ARPTimer組成。ARPRequest負責主機在向網(wǎng)絡發(fā)送數(shù)據(jù)時發(fā)送ARP請求以確定目的地址的以太網(wǎng)地址。ARPInput判斷ARP包類型是網(wǎng)絡上其它機子發(fā)送過來的請求包或是回送給本機的響應包、判斷其合法性并進行相應的處理。如果是請求包則交換目的地址和源地址的以太網(wǎng)地址跟IP地址,然后計算校驗碼,打包發(fā)送出去。如果是返回給本機ARP響應包,則將數(shù)據(jù)包里面的IP地址存到路由表里,以便往后發(fā)送數(shù)據(jù)時可以查詢目的以太網(wǎng)地址。
在網(wǎng)絡層實現(xiàn)IP協(xié)議和ICMP協(xié)議。IP模塊由IPInput和IPoutput組成。IPInput負責接收IP數(shù)據(jù)包,IPoutput負責發(fā)送IP數(shù)據(jù)包。IPInput首先判斷版本號、校驗和、IP頭長度是否為正確,如果不正確則丟棄數(shù)據(jù)包,反之判斷目的地址是否為當前主機的IP地址,如果不是則將在路由表里尋找目的地址,如果找到則轉發(fā)該數(shù)據(jù)包。如果目的地址是當前主機IP地址就判斷數(shù)據(jù)包的類型,如果是ICMP則將它發(fā)送到ICMP協(xié)議層,如果是TCP包則將它送到TCP協(xié)議層。IPoutput負責發(fā)送IP數(shù)據(jù)包,接收上層協(xié)議傳遞下來的數(shù)據(jù),加上20字節(jié)IP首部,正確設置源IP地址和目的IP地址、協(xié)議類型,計算檢驗和,交給下面的鏈路層發(fā)送。ICMP協(xié)議負責傳遞差錯報文以及其它需要注意的信息,且由ICMP首部8位類型字段和8位代碼字段決定信息種類。在AT91RM9200中只實現(xiàn)對回顯請求(類型代碼為80)報文處理,從IP層接收到ICMP包后,判斷其類型代碼段是否為80。如果是將這兩個字段設置為00(回顯應答),計算檢驗和,再交給IP層發(fā)送;如果不是則丟棄;從而實現(xiàn)對ping功能支持。
在傳輸層上實現(xiàn)TCP協(xié)議。它提供一種面向連接的可靠的字節(jié)流服務。主要由TCPInput、TCPOutput、TCPTimer、TCB隊列組成,并根據(jù)具體需要進行簡化。TCP控制塊TCB用結構體來實現(xiàn),每一個TCB包含一條TCP連接所有控制和狀態(tài)信息,全部的TCB形成了一個雙向鏈表,有利于在所有TCP連接中進行搜索。TCPTimer負責管理TCP協(xié)議中各種狀態(tài)信息,定時刷新各個TCB狀態(tài),這里僅僅實現(xiàn)了一個500ms慢速定時器[5]。TCPInput負責接收從下層IP模塊接收到的TCP數(shù)據(jù)包,并根據(jù)TCP連接的狀態(tài)信息以及TCP首部各個標志位進行分支處理,將數(shù)據(jù)交給對應端口的上層應用程序,并調用其它函數(shù)實現(xiàn)對TCP包的響應和狀態(tài)變遷。TCPOutput負責TCP報文發(fā)送,當接收到上層應用程序數(shù)據(jù)時,首先發(fā)送SYN[4]幀,與目標主機三次握手建立連接,之后加上TCP首部,交給下層IP模塊發(fā)送,并通過重傳定時器實現(xiàn)超時重發(fā)、持續(xù)定時器發(fā)送窗口探測幀等功能,待所有數(shù)據(jù)發(fā)送完畢并得到確認后發(fā)送FIN[4]幀,通過四次握手關閉連接,TCPOutput還可在不同狀態(tài)和事件下被其它程序調用發(fā)送ACK幀、RST幀等其它TCP報文;在PC機上往往可以同時維護多條TCP連接;但在ARM上,由于ARM速度和RAM容量的限制,只支持一條TCP連接;這樣大大簡化了程序復雜度,同時也滿足了實際需要。
圖 2 AT91RM9200上TCP/IP體系結構
5 結論
在信息化今天,Internet技術給人們生活、工作、交流都提供了很大便利,它不僅解決了人與人之間的信息交流,還解決了企業(yè)之間信息交流。Internet技術目前已經深入到了日常生活中的電子設備中如視頻監(jiān)控等。各國信息界同仁都在關注并研究電子設備與Internet的連接問題。ARM網(wǎng)絡中TCP/IP協(xié)議研究解決了以ARM為核心的處理系統(tǒng)與Internet的連接問題,為ARM設備的應用開辟了更為廣闊前景。
參考文獻:
[1] ATMEL AT91RM9200 datasheet.2003
[2] DAVICOM DM9161E datasheet.2001
[3] Douglas E.Comer. TCP/IP進行網(wǎng)際互聯(lián)(卷1). 林瑤等譯.北京電子工業(yè)出版社.2001
[4] 王罡,林立志編著. 基于Windows的TCP/IP編程. 北京: 清華大學出版社, 2000
[5] W. Richard Stevens. TCP/IP Illustrated, Volume 1The Protocols . 2001
[6] Gary R. Wright, Wright Gary R., W. Richard Stevens, TCP/IP Illustrated, Volume 2 : The Implementation, 2001
[7] 杜春雷. ARM體系結構與編程 .北京: 清華大學出版社, 2003
tcp/ip相關文章:tcp/ip是什么
雙絞線傳輸器相關文章:雙絞線傳輸器原理
評論