基于FS8610 Web服务器应用设计

时间:2022-08-31 12:15:49

基于FS8610 Web服务器应用设计

摘要:该文主要介绍了一款内嵌硬件TCP/IP协议栈的高速网络芯片FS8610,及其构建Web服务器的过程。该过程包括硬件连接,TCP/IP协议的实现以及服务器的构建。

关键词:FS8610;Web服务器;TCP/IP

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)35-2116-02

Web Server Application Design Base on FS8610

WANG Xin,JIANG Xiao-feng

(School of Computer Science & Technology, Soochow University,Suzhou 215006,China)

Abstract: This paper gives introduction to a Fast Ethernet chip-FS8610 Within Hardware TCP/IP engine,and also describes the process of building a Web Server.The process include hardware connection, actualize TCP/IP engine and build Web Server.

Key words: FS8610;web server;TCP/IP

1 引言

随着嵌入式技术的迅速发展,嵌入式系统的应用越来越广泛。而网络通信的发展,使得B/S(服务器/客户端)应用模式成为一种趋势。嵌入式Web服务器是目前比较热门的应用方案之一。本方案就是通过FameG的8-bit高速以太网网络微处理芯片FS8610以及Realtek公司的RTL8201CP组建一个Web服务器。它具有成本低廉,体积小,设计灵活等特点。

2 FS8610概述

FS8610是一颗内嵌硬件TCP/IP协议栈的8位高速网络微控制器芯片,可以提供硬件处理的Ethernet/ARP/RARP/IPv4/ICMP/IGMPv2/TCP/UDP/PPPoE等网络协议。MCU使用1T RISC架构的8051处理器,在完全兼容标准8051指令集的基础上,可以提供超高速的处理能力(最高可运行在160MHz)。

芯片的主要功能如下:内嵌高性能RISC E8051D,完全兼容标准8051系统时钟;支持MII接口,兼容IEEE802.3 100BASE-TX and 10BASE-T;支持全双工和半双工模式;支持ARP/RARP/IP/ICMP/IGMP/TCP/UDP[1]硬件处理;支持PPPoE over xDSL;支持DMA数据传输功能;提供UART,GPIO,Timer等接口;提供SRAM标准接口,用来与外部数据存储器、程序存储器或者其他应用芯片进行连接;支持在线调试功能。其功能结构框图如图1所示。

3 嵌入式Web服务器的实现

3.1 硬件设计

Web服务器的重要功能就是可以通过局域网或者Internet网络访问服务器上的资源。因此,Web服务器必须提供一个标准的RJ45接口和可靠的网络传输质量。FS8610已经内置了MAC访问控制协议,而RTL8201CP提供了MII接口,可以支持MAC[2]。因此FS8610和RTL8201CP可以无缝对接,从FS8610传过来的数据比特流,在MDIO的控制下,通过RTL8201CP转换成以太网物理层能接收的模拟信号,并经过HY601680的耦合隔离变压器的转换和滤波,最后通过RJ45头传输到因特网中。其具体硬件原理图如图2所示。

3.2 软件设计

3.2.1 网络通信的实现

TCP/IP 协议[3]作为一种成熟的网际互联手段和事实标准,毫无疑问成为了嵌入式系统连入互联网的首选协议。但是在嵌入式系统中,硬件资源较少,通常缺乏足够的处理器和存储器资源以支持整个TCP/IP 协议族,因此嵌入式的TCP/IP技术与常规的TCP/IP 实现有很大的不同。嵌入式系统中实现的协议要根据系统自身的特点及功能来设计自己的协议族,因此,在嵌入式Web 服务器中并非TCP/IP 协议族中所有的协议都要实现,必须针对不同的网络应用对协议栈进行删减,保留其基本功能,以满足网络应用的需要。考虑到嵌入式Web 服务器的硬件处理速度慢并且存储容量相对较小的条件限制,在TCP/IP 协议栈中主要能够实现ARP,IP,ICMP,TCP 协议即可。

具体分析如下:以太网数据的传输是采用MAC 地址来识别的,而ARP 协议提供IP 地址和数据链路层使用的MAC 地址之间的转换功能,为了保证系统在以太网的通信,首先要实现ARP 协议;由于嵌入式Web服务器要能在Internet 上通信,在网络层一定要实现IP 协议,还要实现能报告数据传送差错等情况的ICMP 协议;同时,Web 服务器同Web 浏览器之间的通信是通过HTTP 协议进行的,在传输层采用TCP 协议,能保证可靠的数据传输,进而实现其基础之上的HTTP 协议。

在TCP/IP参考模型里,应用层下面的各层提供了可靠的传输,实现网络应用的是应用层的各类协议,但是它们并不直接为用户服务,所以我们还必须定义一些自定义协议。当网络向PC传送数据时,需要以某种共同约定的方式来通知PC数据开始传送了,数据的长度是多少;这些都需要自定义协议来实现。自定义协议,简而言之就是为了正确传输自定义的内容而定义的“网络传输规则”,包含特殊的命令或者特定的二进制位元。对于本系统而言,自定义协议要做的是将要传输的数据当作TCP或UDP包的“数据”,通过自定义的命令组成自定义协议,来正确的接收和处理这些数据,从而实现网络的通信。

3.2.2 嵌入式Web服务器的实现

以FS8610为核心构建其Web服务器时,充分利用了其内嵌硬件TCP/IP协议栈的特点,在Kernel层库函数和应用层协议的基础上,编写了Web服务器主要程序模块:HTTP包的解析、HTML文件的搜索、HTML文件的参数管理以及HTTP包的响应。其体系结构如图3所示。

嵌入式Web服务器需要根据浏览器发出的http请求及时更新网页或从头创建网页,因此需要用动态交互技术实现。到目前为止要实现动态网页,只能采用CGI,因为还不支持ASP, PHP等动态网页技术。公共网关接口――CGI是一种服务器与浏览器信息、交换的标准接口。CGI建立在浏览器/服务器机制上,为外部扩展的应用程序与Web服务器交互提供了一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端输入的工作数据,完成客户端与服务器的交互操作等。

客户端的用户通过浏览器完成一定输入工作后,向服务器发出HTTP请求(称为CGI请求),服务器守护进程接收到该请求后,就创建一个子进程(称为CGI子进程)。该CGI子进程将CGI请求的有关数据设置成环境变量,在CGI程序与服务器间建立两条数据通道,然后启动URL指定的CGI程序。子进程通过标准输出流将处理结果传递给服务器守护进程,守护进程再将处理结果作为应答消息回送到客户端。

一般的静态网页只能满足客户端浏览网页的功能,无法满足客户端与服务器端的数据交互,因此在诸如远程监控等许多场合实用性不强。而使用CGI接口,浏览器可以在HTTP内部调用函数并以网页的形式接收结果,即实现动态网页的功能,能够有效解决客户端与服务器端数据交互的问题。设计中相应的CGI文件(*. cgi)必须包含文本字符串"%xx",其中"%"是控制代码,"xx"代表两位变量标识符,其值为0~99。当HTTP服务器调用CGI文件,遇到这个文本字符串时,它将除去"%",并将"xx"提取出来,交给相应函数进行处理。本设计中浏览器使用HTML GET的方法以及多个参数来调用函数,服务器对其进行解析并使用实际方法的代码和它的参数来调用主应用程序,在服务器的应用程序中设计了相应的代码来实现回调函数,从而实现网页的的动态连接。

4 结束语

该文介绍的基于FS8610 Web服务器对TCP/IP 协议栈进行了精简,既兼顾了TCP/IP 协议的主要功能的实现,又照顾到嵌入式系统本身的弱点,利用嵌入式TCP/IP协议栈能扩展许多非智能设备的网络功能,使之方便接入Internet,具有很高的实用价值。该Web服务器还可以应用到各种网络产品中,不仅成本低廉、设计简单,而且运行稳定,可见福华公司的FS8610在网络应用方面将具有很好的前景。

参考文献:

[1] 福华先进微电子.FS8610 L4MCU Design Target Specification.

[2] Http://.tw,RTL8201CP Datasheet.

[3] Http://.TCP-IP详解卷1-协议.

上一篇:基于UDP 协议的Socket网络编程 下一篇:基于PC104的某型测试设备的设计实现