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