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