一、引言
嵌入式Web服务器(Embedded Web Server,EWS)是指将Web服务器嵌入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,Web技术为核心的基于互联网的网络测试和控制设备。嵌入式Web服务器简化了传统服务器的系统结构,在嵌入式设备上它同时实现信息传输和网络接口的功能。嵌入式Web服务器基于HTTP协议运作,有标准的接口形式和通信协议。它可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面。Web技术的开放性和平台独立特性能够降低开发难度,减少软件系统和通信系统的设计维护工作量,提高了现场测试和控制设备的管理水平。
二、嵌入式WEB服务器总体设计方案
接入Internet有很多种接入方式:电话拨号接入、ISDN, ADSL、以太网接入等,其中以太网作为一种廉价、高效的Internet接入方式,已经得到了非常广泛的应用,本文的Internet接入采用以太网方式。
将TCP/IP协议栈嵌入到单片机中,使用网络控制芯片实现单片机的上网和数据传输。利用网络单片机(嵌入了TCP/IP协议栈的单片机)可以实现很多功能,嵌入式Web服务器就是其中的一种。通过Web服务器,客户端浏览器可以浏览这些设备的动态信息,并且还可以实现与系统的交互功能。
(一)嵌入式Web服务器的一般结构
嵌入式Web服务器的设计通常以通用Web服务器系统结构为蓝本,根据嵌入式系统的特性进行优化。嵌入式Web服务器的硬件系统包含了Web通信功能的微处理器或者微控制器系统,它可以和前端的应用系统直接集成在一起,也可以通过现场总线与应用系统相连。
一个完整的硬件系统由微型处理器、FLASH存储器、DRAM存储器、网络接口和前端应用系统硬件所组成。微型处理器负责全局的运行和管理,FLASH存储器用来存储实时操作系统的系统内核、TCP/IP协议栈、各种Web文档;DRAM存储器在系统运行时使用;网络接口实现与Internet的连接;前端应用系统的硬件完成传统意义上的应用功能。
由于嵌入式系统硬件资源有限,嵌入式Web服务器的硬件结构不能很复杂,实时操作系统的系统内核、TCP/IP协议栈、各种Web文档都必须存储在FLASH中,这对软件系统设计提出了较高的要求。嵌入式Web服务器应用系统的硬件结构如图1所示:
网络接口
微处理器
SDRAM
FLASH
前端应用系统硬件
图1嵌入式W比服务器应用系统的硬件结构
(二)系统的硬件设计方案
LPC2132微控制器是所设计的嵌入式Web服务器的核心,一方面LPC2132微控制器内部要实现TCP/IP协议栈,并驱动网络接口控制器ENC28J60,经耦合隔离变压器H1102和以太网以实现Internet接入;另一方面,LPC2132微控制器又是相应控制系统的控制单元。
由于以太网的广泛使用,本文选择了最为常用的Internet接入方式,即通过以太网接入Internet。由美国Microchip公司生产的以太网控制芯片ENC28J60是本设计所选择的网络接口控制器,它集成了介质访问控制子层和物理层的功能,主要完成网络接口层中数据帧的发送和接收。
H1102是一款耦合隔离变压器,用来对网络上的脉冲进行转换和滤波。H1102联接RJ45接头,可以直接接入以太网。
串行电平转换模块选用了Maxim公司出品的MAXSP3232E芯片。该芯片内部含有倍增电路和转换电路,只需+5V电源供电即可实现TTL电平到RS232C电平的转换。RS232串口一方面是作为开发调试用的,一方面可以作为相应的通信应用。
I/O口扩展包括系统的LED显示电路、JTAG调试电路以及其他测试电路等。
(三)系统的软件设计方案
Web服务器是在嵌入式TCP/IP协议栈的基础上实现的一种应用程序。从系统软件工作过程来看,可将系统分三部分:第一部分,以太网控制器驱动程序的实现;第二部分:嵌入式TCP/IP协议的实现,这部分内容在第一部分的基础上,结合系统具体环境,对标准TCP/IP协议进行简化并在ARM7单片机上进行移植;第三部分:应用层部分,通过嵌入式TCP/IP协议对用户数据进行收发处理。这里是在应用层实现HTTP协议来完成Web服务器功能的。
所以系统软件设计部分主要包括了以太网控制器的驱动程序、嵌入式TCP/IP协议栈以及动态web网页的实现等几个模块:
(1)以太网控制器驱动程序是指LPC2132微控制器对ENC28J60芯片的驱动、控制过程。
(2)在LPC2132微控制器内部嵌入TCP/IP协议栈是系统实现的关键,它主要包括了ARP, ICMP, IP, TCP和HTTP协议的设计与实现。
(3)动态网页的实现。使用CGI技术,可以实现动态信息的交换,从而达到远程监视、控制的目的。
软件设计中的另一任务是确定开发语言。对于嵌入式系统来说,掌握汇编语言的编程是至关重要的,即使使用高级语言来进行编程,通过阅读编译出来的汇编代码,也可以发现高级语言编程时需要优化的地方,从而提高高级语言所编写代码的执行效率。同时嵌入式系统的资源紧张,要合理利用资源,提高运行效率,关键部分、时间要求严格的部分还是需要使用汇编语言来完成。但汇编语言在代码编写和维护上效率较低,通用性不强,在复杂的项目上还是选用高级语言比较合理。在本设计中,采用汇编语言编写ARM7内核的启动代码(boot loader),其它的程序采用C语言作为设计语言。它有很明显的优势:C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,有丰富的库函数、运算速度快,而且可以直接实现对系统硬件的控制,较汇编语言有更好的可读性。
三、嵌入式Web服务器的实现
(一)主程序流程
在主程序流程中,主要设计实现包括两大部分:第一是对接收到的以太网数据帧进行解包:第二则是对要发送的数据进行封装并发送。
系统初始化模块主要包括了LPC2I32微控制器的初始化、网络接口芯片ENC28J60的初始化、TCP/IP协议栈中各标志的初始化等:
ARP处理模块主要完成接收ARP请求并发送ARP响应;
ICMP处理模块主要完成接收ICMP回显请求并发送ICMP回显响应;
TCP数据处理模块主要完成对TCP数据报及HTTP数据的处理。
当程序运行时,首先对系统初始化,这时系统处于等待状态,直到有数据帧到达。ENC28J60接收完数据帧以后,首先去除帧头,然后判断该数据帧的报文是否为ARP包,若是,则进行ARP数据包处理,若不是,则检查数据报头,看IP数据包的报文是否为ICMP数据包,若是ICMP数据包,则转到ICMP数据处理子程序。若不是ICMP数据包,就继续进行判断,看是否为TCP数据包,若为TCP数据包则转入TCP数据处理子程序,若此时即不是ICMP数据包也不是TCP数据包,则将该包丢弃。
子程序的设计是为了完成TCP/IP协议体系的每一层的功能的,TCP/IP协议的每一层都是相互联系的,但也是相对独立的,具体由下面7个部分实现:以太网驱动程序、以太网层程序、ARP协议处理程序、IP协议处理程序、ICMP协议处理程序、TCP协议处理程序、HTTP协议处理程序。
(二)嵌入式Web服务器的实现
1、网络接口的实现
网络接口是Web服务器与外界交流的接口。操作系统提供网络协议栈的支持,最主要是TCP/IP以及socket套接字系统函数库。网络接口使用操作系统提供的socket函数族建立可远程通信的套接字。它分两部分,一部分在系统初始化的时候建立,另一部分在HTTP引擎模块里面实现。网络接口模块的功能描述为:首先建立socket。socket是BSO Unix提出的进程间通信(IPC)机制,它是一种双向的通信接口,使得可以在两个不同进程(通常是网络上的不同节点的进程)之间可以直接通信。
2、中心处理模块
中心处理模块是嵌入式Web服务器的核心。它进行全局的控制和管理。它通过accept()接收HTTP请求,调用read将请求接收到本地,然后进行请求解析。根据请求的内容,判断是属于动态内容还是静态内容,如果是动态内容则调用相应的动态处理函数,如果是静态内容则访问VFS获得相应的内容。然后将获得的内容包装成为HTTP响应,返回给客户端。中心处理模块还实现控制管理信息和容错机制。
3、动态文件预处理器
Web服务器必须有交互能力才是有实际意义的服务器程序。目前大多数的Web服务器都是利用CGI (Common Gateway Interface,通用网关接口)来实现应用程序的接口。本论文从嵌入式系统的角度出发,实现了一种内部的应用程序接口。
动态文件预处理器所实现的功能是将普通的Web动态资源转变成为可编译的函数代码。设动态文档为f.dtm,它包含内容{x, f(a)}。其中x为静态的内容,F()为应用程序,a为通过解析HTTP请求得出的参数。动态文件预处理器将f.dtm转变成为f_dtm.c。它的内容为(f_dtm ( )},它是一个函数,实现功能为输出{x', f(a)}.其中f(a)是f(a)的实际输出,而x'是输出静态内容的动作。
四、嵌入式Web服务器的主要应用
嵌入式Web服务器是应用在嵌入式系统上的Web服务器架构。它的主要应用是设备管理和应用程序的网络扩展。
嵌入式Web服务器作为一个后台程序直接在嵌入式设备上运行,用户通过网络对设备配置、控制、监测,保证设备安全、有效地运作。
Web接口使得用户可以在任何一台有互联网接入能力的带有Web浏览器的设备访问到该嵌入式设备。Web服务器提供应用程序接口可以扩展Web的应用。这种设备管理方式不仅起到监测、控制的功能,而且根据设备的特点可以更加入性化和智能化。它使对远程设备的操作从监控(Monitor)变成为管理(Manage )。其中基于嵌入式WEB服务器的视频监控系统现已成为视频监控系统的主流技术,在嵌入式系统中集成嵌入式 Web视频服务器,采用嵌入式实时多任务操作系统;内置一个嵌入式Web服务器。摄像头送来的视频信号数字化后由高效压缩芯片压缩,通过内部总线送到内置的Web服务器,网络上用户可以直接用浏览器观看Web服务器上的摄像机图像,授权用户还可以控制摄像机、云台、镜头的动作或对系统配置进行操作。
另一个应用是应用程序网络扩展。Web服务已成为支撑现代应用程序技术和系统核心组件,现今约87%的企业用户都希望为他们的程序添加上基于Web的用户接口。嵌入式Web服务器很好地提供了Internet网络的接口,将应用程序和Web接口结合起来,是应用程序网络扩展的解决方案。
参考文献:
1嵌入式Web服务器的设计与实现宋凯 计算机工程与设计 2009/04
2嵌入式Linux下WEB服务器的设计与实现 吴玉成 数据通信 2008/06
3基于ARM-LINUX的嵌入式Web服务器设计 梁银会 成都信息工程学院学报 2008/05