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
评论
查看更多