可配置IP地址的微型嵌入式WEB服务器设计

2014-07-03 03:33李小勇娄颜超
单片机与嵌入式系统应用 2014年11期
关键词:嵌入式客户端解析

李小勇,娄颜超

(喀什师范学院,喀什844006)

引 言

随着信息技术、网络技术和嵌入式系统的飞速发展,微型化嵌入式设备接入互联网是大势所趋。相对于中小型WEB服务器,微型嵌入式 WEB服务器的优点显而易见。其体积小、价格低,最重要的是功耗非常低,携带和部署方便、快捷。在远距离分布式测控系统中,希望控制节点具有接入网络的功能,这样可以方便地实现基于网络的分布式测控;同时,出于成本考虑,也希望控制节点经济、高效。本文针对分布式测控系统中对于监控节点的需求而设计,考虑以一种实用的方式实现定制化的微型嵌入式WEB服务器。网络通信功能采用开源微型TCP/IP协议栈uIP实现,嵌入式WEB服务器以uIP协议栈作为基础,采用SSI(服务器端包含)技术实现。当嵌入式WEB服务器上电运行后,可实现以动态的方式将包含有传感器、执行器信息的HTTP数据发送给客户端,客户端也能够以HTTP请求的方式向服务器端发出控制命令。此外,设计了可配置网络参数的功能,以方便部署服务器。

1 硬件设计

1.1 系统硬件总体设计

硬件部分由8位模数混合型单片机C8051F340、10/100 Mbps自适应以太网控制器CP2200、网络转接器、传感器与接口电路、执行器与驱动电路、电源组成。系统硬件组成框图如图1所示。

1.2 网络通信硬件电路设计

网络通信电路设计分成两个部分:一部分为C8051F340[1]与 CP2200[2]的硬件接口电路设计,另一部分为CP2200与RJ45网络转接器的硬件接口电路设计。网络通信硬件接口电路如图2所示。

1.2.1 C8051F340与CP2200硬件接口电路设计

将CP2200的MOTEN和MUXEN引脚接地,使CP2200工作在非复用Intel总线模式。单片机P3口作为地址线,P4口作为数据线分别与CP2200地址线和数据线相连。CP2200的读写控制信号线分别与单片机的P1.6、P1.7两引脚相连。C8051F340的P0.2引脚被分配给,与CP2200芯片的中断信号相连。当CP2200的14个中断事件中的任何一个产生中断时,CP2200将中断状态寄存器中相应的标志位置1,并将引脚驱动到低电平来通知主机。在被允许的中断的所有中断标志位都被主机清0之前引脚将一直保持低电平。

图1 系统硬件总体框图

图2 网络通信硬件电路接口设计

1.2.2 CP2200与RJ45网络转接器硬件

CP2200与RJ45连接时使用的引脚有RX+、RX-、TX+、TX-,利用 RJ45实现与网络的连接。CP2200的LINK和ACT引脚与LINK LED和ACT LED引脚相连,用来指示网络状态,其中LINK是当检测到有效连接脉冲时有效,ACT则是发送或接收一个数据包时有效。

2 软件系统设计

2.1 软件总体设计

软件设计总体上采用层次式设计结构,是组合式嵌入式软件设计方法[3]的一种实现方式。从TCP/IP模型的角度看,Ethernet初始化模块和ARP协议模块位于网络接入层,完成以太网控制器的物理层初始化(PHY)、媒体访问控制层初始化(MAC)和网络地址解析(ARP),该层负责为上层提供通信接口和收发通信链路上的比特流信号。TCP/IP协议栈模块分为两个部分,以IP协议为核心的部分位于TCP/IP的网际互连层,以TCP协议为核心的部分位于TCP/IP模型的传输层。基于SSI技术的WEB服务器位于TCP/IP模型的应用层。软件总体设计示意图如图3所示。

图3 软件总体设计示意图

2.2 TCP/IP协议栈的移植

对于8位单片机,硬件资源是十分有限的,采用RTOS结合TCP/IP的设计方法用来接入网络,目前没有实际应用意义,而仅移植TCP/IP协议栈来实现网络接入可以获得良好的实时通信效果。在本设计中,移植目前常用的开源微型网络协议栈uIP[4-6],版本采用uIP 0.6。图4为网络数据包接收处理总体流程。

2.3 TCP消息处理

图4 网络数据包接收处理过程

当从uIP接收到原始TCP消息后,需要调用TCP协议解析函数对消息体解析。由于HTTP协议是基于TCP的协议,因而只需检查TCP消息体中是否包含HTTP协议。如果包含HTTP协议,则进入该协议处理流程中;如果不包含,则放弃目前的消息,继续接收和解析下一个TCP消息体。

TCP消息处理流程如图5所示,该流程对应于图4中处理TCP消息部分。WEB服务器设计基于TCP协议,并采用 HTTP[7-8]协议实现。

图5 TCP消息处理流程

2.4 基于SSI的动态网页生成技术

SSI[9-10](服务器端包含)技术是动态生成网页的一种技术实现方式。当需要在响应的WEB页面中增加小段动态信息时,采用SSI技术是一种合适的选择。在8位单片机上构建基于SSI机制的嵌入式WEB服务器,需要编写专门的WEB模板解析函数,用以在HTML模板中生成动态信息。SSI解析功能与参与HTTP响应的流程关系如图6所示。

要实现WEB服务器内容动态响应客户端请求的效果,需要做到实时改变HTTP消息头和HTTP消息正文中WEB页面特定内容的数据。在采用SSI技术达到这个目标时,本设计并未实现SSI全部功能,原因是解析SSI所有类型脚本需要编写标准的SSI解析引擎,要占据大量的代码空间,同时对于8位单片机的运行效率也是一个挑战,故在脚本类型的实现上作了很大的简化。SSI解析函数仅处理一种嵌入式SSI脚本类型,即显示变量值。SSI脚本的一般通用格式为:<!--#element attribute=value attribute=value...-->。其中,element为脚本命令类型,attribute为脚本变量,value为变量名。命令类型和变量不同,解析方式也不同。

图6 SSI解析参与HTTP响应流程

2.5 WEB模板设计

WEB模板文件通常在单片机code区定义,该区仅具有只读属性,适合存放静态的数据。WEB模板文件是一种符合HTML标准[11]的数据格式定义。如要增加数据动态显示功能,需将动态显示数值的地方插入SSI脚本。例如,在 WEB模板文件Test.html中需要动态显示当前温度的位置,插入一个名为<!--#echo var="TEMPERATURE"-->的标签。模板定义示例如下:

(1)HTTP1.1协议响应头模板定义

(2)Test.html的 WEB模板文件体定义

2.6 HTTP请求与响应

处理来自客户端的HTTP1.1请求。HTTP请求由3部分组成,分别是:请求行、消息报头、请求正文。在本文中,被处理的HTTP请求包括GET方式和POST方式。GET方式请求用来获取服务器中特定WEB页面,如果GET请求URL中附加用户信息,服务器不作出处理。POST请求正文一般带有用户附加信息,服务器接收请求后要对这些信息进行处理。

2.6.1 处理GET方式HTTP请求

当有客户端向服务器地址为192.168.131.112发送GET方式HTTP请求,获取一个WEB文件名为Test.html的页面时,通常发送一个包含但不限于如下内容的HTTP1.1请求:

TCP协议解析程序、HTTP协议解析程序分别识别这个网络数据为TCP消息,同时是HTTP1.1 GET方式请求。当判断存在Test.html网页时,WEB服务器启动SSI解析函数,置换这个网页的模板文件和HTTP1.1协议响应头模板中所有嵌入的SSI脚本,然后以HTTP响应的形式发送给客户端。

2.6.2 处理POST方式HTTP请求

当有客户端向服务器地址为192.168.131.112发送POST方式HTTP请求,表示要通过表单向服务器提交数据。如向服务器提交新的网络参数表单,通常发送一个包含但不限于如下内容的HTTP1.1请求:

服务器端通过协议解析程序判断这是一个HTTP1.1 POST方式请求。当判断存在IpConfig.html页面时,服务器从请求正文中获取新的网络参数信息,并更新当前的网络参数。当客户端再次向服务器发起HTTP请求时,需要使用新的主机地址,这个示例新地址为192.168.131.113。同样的,通过POST请求方式也可以用来向服务器发出控制指令,服务器根据指令完成动作。

2.7 连通性稳定性测试

设定局域网路由器网络参数:IP地址为192.168.131.1,子网掩码为255.255.255.0。设定局域网内PC机IP地址:192.168.131.100。设定嵌入式 WEB服务器IP地址:192.168.131.112。子网掩码均相同。将嵌入式 WEB服务器接入局域网中,通过PC机ping WEB服务器检查服务器的响应速度和丢包率,实验结果如图7和图8所示。

图7 网络连通性测试

图8 网络通信稳定性测试

结 语

通过实际运行与调试,基本达到了预期目的。客户端发送HTTP GET方式请求获取动态WEB页面,发送POST方式请求时,在请求正文附加表单数据,服务器通过处理表单数据完成对应的动作。

[1]Silicon Semiconductor Inc.C8051f34X datasheet[EB/OL].(2006-08)[2014-06].http://www.silabs.com/products/mcu/Pages/8-Bit-Microcontrollers.aspx.

[2]Silicon Laboratories Inc.Single chip ethernet controller CP2200/1[EB/OL].(2001-05)[2014-06].http://www.silabs.com.

[3]王博.可组合嵌入式软件建模与验证技术研究综述[J].软件学报,2014,25(2):234-253.

[4]Adam Dunkels.Full TCP/IP for 8 Bit Architectures[C]//In Proceedings of the First ACM/Usenix International Conference on Mobile Systems,Applications and Services.San Francisco:May 2003.

[5]A Dunkels.uIP-a TCP/IP stack for 8-and 16-bit microcontrollers[EB/OL].(2003-03)[2014-06].http://www.sics.se/~adam/publications.html.

[6]赵国锋,邱作雨,张毅.基于单片机的嵌入式TCP/IP协议栈的设计与实现[J].计算机技术与发展,2009(3):137-140.

[7]The World Wide Web Consortium (W3C),Network Working Group.RFC 2616.Hypertext Transfer Protocol-HTTP/1.1[EB/OL].(1999-06)[2014-06].http://www.w3.org/Protocols/rfc2616/rfc2616.html.

[8]高嵩.基于HTTP协议的嵌入式远程监控系统的研究[D].北京:北京工业大学,2013.

[9]The Apache Software Foundation.Apache Tutorial:Introduction to Server Side Includes[EB/OL].[2014-06].http://httpd.apache.org/docs/2.2/howto/ssi.html.

[10]潘琢金,王秋实.嵌入式Web服务器中动态 Web技术的研究[J].计算机工程与设计,2010,31(18):3975-3978.

[11]W3C org.W3C Recommendation for HTML[EB/OL].(2011-11)[2014-06].http://www.w3.org/community/webed/wiki/HTML.

猜你喜欢
嵌入式客户端解析
三角函数解析式中ω的几种求法
如何看待传统媒体新闻客户端的“断舍离”?
TS系列红外传感器在嵌入式控制系统中的应用
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
搭建基于Qt的嵌入式开发平台
睡梦解析仪
电竞初解析
嵌入式软PLC在电镀生产流程控制系统中的应用