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