微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM7的嵌入式Web服务器设计技术

ARM7的嵌入式Web服务器设计技术

时间:09-30 来源:互联网 点击:

摘要:主要介绍嵌入式Web服务器技术的设计思想和软件设计流程,以及应用程序文件系统的构造,将网页文件转化为可编译的数据结构;并以32位ARM7微处理器LPC2210为硬件平台,在源码公开的ZLG/IP软件包的支持下,给出了一个嵌入式Web服务器的应用实例。
关键词:Web服务器;应用程序文件系统;LPC2210;ZLG/IP软件包

1 概述
随着嵌入式技术和网络技术的发展,嵌入式设备通过网络接入局域网或者Internet逐步成为一种发展趋势。嵌入式Web服务器技术以其良好的通用性和交互性为嵌入式设备提供网络接口,对嵌入式设备实现远程管理和控制,是实现嵌入式设备网络化的重要技术。
本设计提出的基于ARM7的嵌入式Web服务器设计有三大技术亮点:
①采用浏览器/服务器(B/S)通信架构。与客户机/服务器通信架构相比,B/S架构无需在客户端上开发专门的应用软件,只需从浏览器上输入IP地址,直接对设备进行远程监控。
②传统的Web服务器需要一个数据库系统的支持用来保存内容,因而对用于存储的硬件设备要求更高,增加了成本。本设计只需构建一个简单的文件系统对网页文件进行管理,通过网页转换程序将网页文件转换为十六进制的可编译的数据结构,是一种直接绑定在一个应用程序
上面的文件系统。
③本设计构造的Web服务器提供动态内容和动态表单的支持,能满足一般嵌入式设备的应用要求。

2 HTTP协议讨论
HTTP(超文本传输协议)是一种应用层协议。Web服务器是基于HTTP协议运行的,Web服务器和Web客户机之间通过HTTP协议来进行通信。在进行通信前,先要建立客户机与服务器之间的连接:启动Web服务器,启动后服务器将监听80端口号,Web客户机发送一个动态随机产生的连接端口号连上服务器,从而建立一个通信通道。
HTTP协议基于请求/响应模式。一个客户机与服务器建立好连接后,向服务器发送一个请求报文,服务器接到请求后给予相应的响应信息。响应信息的格式为一个状态行(包括信息的HTTP协议版本号、一个成功或错误的代码),再跟上MIME信息(包括某些通用且详细的有关应答的信息,如可选报头、报文报体等)。HTTP协议结构如图1所示。

3 嵌入式Web服务器的设计
3.1 嵌入式Web服务器设计思想
嵌入式Web服务器主要有以下2个用途:根据Web客户机的请求为其提供设备运行状态、参数;从客户机提取控制信息,更改设备运行参数等。由于嵌入式系统资源的有限性,本文设计的Web服务器具有很强的针对性,具体包含以下性能:
①对动态内容和动态表单的支持,Web服务器只需处理GET和POST请求方法,无需提供对其他请求方法的支持。
②用于内容保存的“应用程序”文件系统,即将内容文件转换成数据结构,直接绑定在一个应用程序上面。
③嵌入式Web服务器只实现与系统控制相关的页面。
嵌入式Web服务器模型层次如图2所示。


3.2 对动态内容和动态表单的实现
先编写一个包含DATA x>动态标志和表单的HTML文件,再分别编写动态内容处理功能函数和表单分析处理函数。在建立HTTP服务器套接字之前,需要先安装好自己句柄,将网页中的动态标识与其对应的动态内容处理功能函数,以及表单标识与表单分析处理函数相关联。图2中的动态内容/句柄API就是用来提供变量名/表单名与用户定义功能之间的联系。
动态内容安装句柄:
addDynamicContent(“temperature”,&getTemper);
表单安装句柄:
addDynamicHandler(/control,&myHandler);
其中,temperature和/control分别为网页中的动态内容标识和表单标识,getTemper和myHandler分别为动态内容处理功能函数和表单分析处理函数。
这样,每当有GET请求时,动态内容处理功能函数的返回值将替代动态标志的值嵌入到内容流中。每当有POST请求时,表单分析处理函数调用parseVarialbe功能,简单地在内容中查找变量名。一旦发现,这个值便被复制到用户缓冲器中,直到发现分界符“&”。POST构造一个包括报体的HTTP请求报文,发送给Web服务器。该报文按照键值对其进行组装,使用符号“&”分隔。
3.3 嵌入式Web服务器主程序
嵌入式Web服务器主程序流程如图3所示。本设计中使用的Web服务器套接字是典型的TCP流套接字。通过socket()创建一个套接字,使用bind()将该套接字绑定在80端口上,通过listen()设定监听的连接数,最后调用accept()等待Web客户机的连接请求。一个套接字支持一个请求,不能支持永久型连接。当服务器接收到一个连接时,功能函数handleConnection()对用户请求进行解析,根据返回的内容关闭客户机套接字,然后等待另一个套接字请求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top