实时内核μC/OS-II下的网络监控系统的设计 02
![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
![](http://images.eccn.com/silabs/silicon_chip_980x60_202203.jpg)
实时内核μC/OS-II下的网络监控系统的设计 02
当信号量RxSemPost到来时,开始接收数据。如果数据帧正确,就根据数据包的大小申请合适的内存空间存放该数据,然后根据接收帧的目的地址的正确与否决定是否将该帧提交给上层应用程序。若无误则解析数据报头,进行相应处理。
4.2 RTL8019驱动
RTL8019AS完成数据包和电信号之间的相互转换。驱动程序主要包括芯片初始化、收包、发包三部分。物理信道上的收发操作采用以太网协议802.3帧格式[4]。系统收发数据包的原理是单片机先将待发送的数据包存入RTL8019芯片RAM,给出发送缓冲区首地址和数据包长度(写入TPSR、TBCR0,1)后,启动发送命令(CR=0x3E),即可实现RTL8019的发送功能。RTL8019会自动按以太网协议完成发送并将结果写入状态寄存器。RTL8019芯片接收缓冲区构成一个循环FIFO队列,PSTART、PSTOP两个寄存器限定了循环队列的开始和结束页,CURR为写入指针,受芯片控制,BNRY为读出指针,由主机程序控制。根据CURR==BNRY+1?可以判断出是否收到新的数据包,新收到的数据包存于以CURR指出的地址为首址的RAM中。当CURR==BNRY时,芯片停止接收数据包。
4.3 网络协议栈的实现
基于TCP/IP协议可以实现多种功能,本文主要讨论HTTP协议[5],也就是Web服务器在应用层的主要构成协议。由于TCP/IP协议栈本身是一种层式结构,所以在协议栈的设计上采用模块化思想,逐层实现,然后通过对各层接口函数的调用实现完整的协议栈。实现TCP/IP协议栈的大致流程如图4所示。
![](http://embed.chinaitlab.com/UploadFiles_4615/200904/20090410114009775.gif)
要想将嵌入式系统作为一个终端并用TCP/IP连接起来,就必须设定IP地址、网关和子网掩码等信息。为了增强系统的灵活性,需要一种自动配置能力,即系统自动从中心服务器获得IP地址等信息。实现这一功能的标准方法是通过主机动态配置协议(DHCP)[5]。DHCP是基于UDP层之上的应用,采用端口68和67以广播的形式进行通讯,它的工作主要包括探查、赋予、请求、确认等操作。
HTTP协议选择定义请求-应答机制获得Web服务器上的文件。当用户访问Web服务器中的网页时,一个HTTP请求就会以多行字符串的形式从浏览器发送到Web服务器,第一行指定一个方法GET,后面跟着一串参数。服务器对客户端的应答需包含HTTP报文头,如果请求成功,还包括文档本身,这些信息沿TCP连接发送,直至传送完成断开连接。含最少量信息的报文头包含成功或失败状态及传输文档的内容类型(文本、HTML、GIF图形等)。所有连接的相关信息如IP地址、客户端口号、序列号、应答号及TCP状态等被放入一个结构体,结构体的每个元素均可看作一个连接状态。服务器进程关闭连接表示本次响应结束。网页信息以HTML文本格式存储于EEROM中,Web服务器创建局部变量以匹配文档中的特殊字符,这些信息通过HTTP协议沿TCP连接发送到浏览器,服务器在应答文档中碰到合适的字符,就替换一个变量值,实现动态网页。
为了在服务器和客户端之间传递HTTP请求和应答信息,需要一个可靠的通信信道,这由传输控制协议TCP提供。
TCP提供一种面向连接的可靠的数据流服务,它的主要任务是创建进程到进程的通信。数据传输分三个阶段进行:建立连接、传输数据、断开连接,实现起来相对复杂。由于嵌入式系统是服务器端,总是对客户的连接请求给予响应,从不主动发起连接请求,因此只要在保证嵌入式系统能够对TCP分组进行正确响应的前提下,就可以对TCP协议进行大幅度简化。嵌入式系统总是响应客户连接,始终是被动地打开连接,所以只需为建立连接过程中的嵌入式系统提供 LISTEN、SYN_RCVD两种状态即可。虽然比标准状态变迁图中缺少了CLOSED、SYN_SENT状态,但LISTEN、SYN_RCVD足以描述系统建立连接时的状态。当系统在传最后一个数据包时,设置FIN,要求终止当前连接。连接主动关闭和同时关闭两种情况都是可能发生的,因此只需为系统提供主动关闭和同时关闭涉及到的状态即可。
为了在主机之间传递TCP段,需要实现IP协议。IP协议的实现比较复杂,但是从实现Web服务器这一特定的要求出发,主要需把握如下两点设计思想:第一,对接收到的IP数据报进行处理,向上层协议进行提交;第二,负责对TCP报文、ICMP报文进行封装,交给数据链路层进行装帧。实际上这是IP协议最基本的功能,也是Web服务器在网络层必需的功能。ICMP协议负责传递差错报文及其它需要注意的信息, |
|
|
|
|
|