以太网控制器接□模块的设计思路

时间:2008-11-25

  1 硬件部分

  大部分嵌入式系统都有一个用来进行状态和系统诊断的外部界面,传统上是用串口终端的形式实现的,但在⊥业控制巾远程诊断有很大优势。因为Web浏览器使用广泛,所以它是用户界面的合理选择。从技术上讲,浏览器就是Web客户端,这就意味着嵌入式系统必须是Web服务器。本模块是一个微型、可用的Web服务器,它可以监控连接在系统LO口总线上的家用电器和各种传感器的状态。

  在本模块中,微处理器选择Microchip公司的8位单片机PlC16F877。为了驱动以太网控制器,微拄制器必须模拟PC ISA总线的读写周期。

  (l)设昔地址.

  尽管以太网控制器有20条地址线(A0~A19),但除了5条以外都能以硬连接方式进行调塑,以捉供信号或接地,剩下的5条线用来选择感兴趣的寄存器。

  (2)设置数据线.

  在 个读周期里,微控制器的数据线一定作为输入;在一个写周期里它们一定是输出,并且设置为数据的字节值。

  (3)维持读或写的信号。

  信号是活动低电平,所以无论读或写都必须设置为低电平。

  (4)读获取数据。

  如果是读周期,获取数据。如果读数据线维持信号并且地址正确,以太网控制器将驱动数据总线,于是就 可以读取数据。

  (5)撤销读写信号。

  如果是一个读周期,以太网控制器将会停止驱动数据总线;如果是写周期,将会锁住从微控制器接收来的 数据。

  (6)取消对数据线的设置。

  使微控制器输出驱动程序无效,为其他应用释放数据总线。

  微控制器上需要下列I/O线:

  · 1条读输出线和1条写输出线:

  · 5条地址输出线,它们只有在以太网芯片被访问时才有意义,因此也可以被用作其他用途;

  · 8条双向数据线,同样地,它们也只有在以太网芯片被访问时才有意义。

  2.软件部分

  由于本实例采用的是一个单片机系统,处理速度和存储容量都十分有限,所以,在TCP/IP协议的选用方面 ,采用下列4种TCP/IP协议。

  (1)ARP协议。

  在以太网上把报文从一台机器发送到另一台机器,如果不知道目的机器的物理地址就会发生问题。为了解 决这个问题,开发了地址解析协议(ARP)。ARP的任务是把IP地址转化成物理地址,这样做就消除了应用程 序需要知道物理地址的必要性。

  ARP请求是以广播的形式发送的。因此,同一网络的所有主机都能接收到ARP请求。当NIC接收到网络上的广 播帧并经过判断是ARP请求后,要进一步判断是否是目的IP,是否与自己的IP地址一致。如果是,发出ARP应 答,否则,丢弃该帧。

  本模块中,嵌入式Web服务器不会主动向某一P地址发出数据帧,因为它是被动的,它只接收来自客户的服 务请求,为客户提供服务。因此,Web服务器只需处理ARP请求,发回ARP应答即可。

  在ARP协议中,只对ARP应答部分进行实现。在ARP数据报中,将以太网首部算在内也只有42字节,首先将其 向PIC单片机的内置RAM中发送,然后按照ARP协议,如果是自己的IP请求的话,将ARP应答送出。

  (2)IP协议。

  IP协议是TCP/IP协议族中为的协议。其他的协议都要靠IP传送或接收数据,亦即不管数据的终应 用,所有流进流出的数据都要经过IP。

  针对嵌入式Web服务器的特点,对IP协议作如下处理。

  首先对接收到的IP数据报进行处理,向上层协议进行提交。

  然后对rap报文、ICMP报文进行封装,交给数据链路层进行装帧。当网卡收到发给自己的数据帧后,对以太 网首部中的帧类型字段进行判断,如果该字段为0x0800,说明后面的数据为IP数据报,将该数据报交IP层处理。P协议判断此数据报的IP首部中目的IP地址字段与本地IP地址是 否一致,如不一致,丢弃该数据包;如一致,进行P首部校验和检查,当其无误时,去掉IP首部,将数据提 交上层处理。

  在本模块中,首先从RTL8019AS中将IP首部的1个字节发送,在该首部1个字节中,记录有IP首部的长度, 然后,继续发送剩余部分字节。虽然IP首部通常有20个字节,但如果包含选项字段的话,其首部将会变长, 因此,必须检查IP首部的长度。接收IP首部后,根据IP首部中的协议字段决定交给ICMP协议还是rap协议处 理。

  (3)ICMP协议。

  ICMP是Internet控制报文协议,是IP的一个附件,用于帮助网络上所有节点实现简单的诊断并返回错误消 息。它传递差错报文以及其他需要注意的信息。ICMP报文通常被P层或更高层协议(TCP或UDP)使用。

  Ping程序是对两个TCP/IP系统连通性进行测试的工具。它只利用ICMP回显请求和应答报文。构造回显应答 报文比较简单,代码字段总是0,标识符和序号字段设置成请求的发送方,回答中也不作修改。源系统可以 用这些字段匹配请求和回答。

  在本模块中,从RTL8019AS中,将ICMP首部数据发送,检查其是否为echo要求(Ping要求)。如果是echo 要求的话,将echo应答首部和接收的数据发送至源端。

  (4)tCPi办议。               ˇ

  rap提供了一种可靠的、面向连接的字节流运输层服务。面向连接意味着两个使用rap的应用(通常是一个 客户和一个服务器)在彼此交换数据之前必须先建立一个rap连接。

  在一个TCP连接中,仅有两方进行彼此通信。TCP通过下列方式来提供可靠性。

  · 应用数据被分割成rap认为适合发送的数据块,由TOP传递给IP的信息单位称为报文段(Segment)。

  · 当rap发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确 认,将重发这个报文段。

  · 当rap收到发自TOP连接的另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几 分之一秒。

  · rap将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的变化。 如果收到段的检验和有差错,rap将丢弃这个报文段并不确认收到此报文段。

  · 既然rap报文段作为IP数据报传送,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失 序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。

  · IP数据报会发生重复,TOP的接收端必须丢弃重复的数据。

  · rap还能提供流量控制。rap连接的每一方都有固定大小的缓冲空间。TOP的接收端只允许另一端发送接 收端缓冲区所能接纳的数据,这将防止较快主机至使较慢主机的缓冲区溢出。

  · TCP协议的接收应答机制、乱序到达数据的顺序化及接收受损报文的重传机制确保了TCP协议的可靠性 。

  本模块在技术数据上,并不要求其自身建立TCP/IP连接,所以采用只存在Web服务器的TCP状态迁移图。


图1 Web服务器的TCP状态迁移图

  由图可知,可以同时建立5个http连接,它非常类似于多重连接的5个部分。LISTEN、SYN RCVD、ESTAB0为TCP的3路状态交换。

  ESTAB0~ESTAB9是确立连接后,表示将html text向浏览器发送的状态。有多个ESTAB状态的原因,是为了限制以太网帧的长度,不能将所有的html text全部发送,而是分4个数据包送出。的CLASE WAIT1、CLOSE WAIT2是关闭的状态迁移。

  无论在哪个状态,都有定时重置功能,一旦发生通信错误或网线断开等情况,为避免发生停滞(在某一状态返回不到LISTEN的情况),本模块中,15s后将自动返回到LISTEN状态。从RTL8019AS中,发送TCP首部,如果是其端口号80,跳至http接收处理程序。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com


  
上一篇:看门狗简介
下一篇:看门狗工作原理

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料