网站首页  词典首页

请输入您要查询的论文:

 

标题 基于ARM平台的嵌入式Web服务器设计
范文 赵联政 王桂海


摘 要:由于嵌入式设备硬件资源有限,传统的Web服务搭建已不适用于现实需求。提出了基于Boa和CGI建立Web服务的理念,以解决远程控制、访问、监控嵌入式设备的问题。重点分析了嵌入式服务器的设计理念和Boa服务器的移植以及CGI的实现。将该设计应用于智能监控系统,使用结果表明:该嵌入式服务器运行稳定、速度相对较快、简单安全,达到了预期目标。
关键词:嵌入式;Web服务;智能监控;Boa;CGI
DOIDOI:10.11907/rjdk.151283
中图分类号:TP303 文献标识码:A 文章编号文章编号:1672-7800(2015)007-0010-03
0 引言
随着互联网技术的发展,越来越多的电子设备和个人电脑通过网络进行互联。嵌入式系统和设备近几年进入了高速发展时期,在工业控制和智能家居等领域得到了广泛应用。将嵌入式设备通过网络接入因特网或局域网以实现远程管理和监控,需要用到专门针对于嵌入式的Web服务器。用户可以使用浏览器作为接口来访问嵌入式设备,这样不仅能使嵌入式设备易用性大大提高,而且方便统一管理[1]。
1 嵌入式Web服务器设计
1.1 设计原理
嵌入式系统的特点就是软硬件可裁剪,以及功能的专用性[2],在处理器以及RAM和ROM受限的情况下,传统的Web服务器搭建在嵌入式设备上已不再适用。有的嵌入式系统没有文件系统或TCP/IP协议栈,在嵌入式设备资源受限的情况下,保证嵌入式Web服务器正常运行十分困难。为解决以上问题,结合当前嵌入式Web服务器的设计需求提出如下方案:将Boa服务器移植到嵌入式设备中,使其具备嵌入式Web服务器功能,并借助通用网关接口(Common Gateway Interface,CGI)技术连入到互联网,实现现场数据与嵌入式Web服务器之间的实时动态交互。
1.2 Boa与CGI组合实现原理
Boa是一款非常小巧的Web服务器,源代码开放、性能优秀,支持CGI通用网关接口技术,特别适合应用在嵌入式系统中。Boa服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通过网络对嵌入式设备进行监控、并将反馈信息自动上传给主控设备的目的。它基于HTTP超文本传输协议,Web网页是Web服务最基本的传输单元。嵌入式Web服务的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,也即著名的B/S结构。
运行于客户端的浏览器首先要与嵌入式Web服务器Boa端建立连接:打开一个套接字虚拟文件,此文件建立标志着SOCKET连接建立成功。然后客户端浏览器通过套接字SOCKET以GET或者POST参数传递方式向Web服务器提交请求,Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到请求后,根据请求的不同进行事务处理,返回HTML文件或者通过CGI调用外部应用程序,返回处理结果。服务器通过CGI与外部应用程序和脚本之间进行交互,根据客户端浏览器在请求时所采用的方法,服务器会搜集客户提供的信息,并将该部分信息发送给指定的CGI扩展程序,CGI扩展程序进行信息处理并将结果返回给服务器。然后服务器对信息进行分析,并将结果发送回客户端在浏览器上显示出来,其工作原理如图1所示。
2 嵌入式系统功能实现
2.1 Boa配置及在ARM上的移植流程
Boa的源程序从boa.c中的main( )主函数开始执行。在该源程序中对Web服务器进行配置:为了在用户访问Web服务器时能确定根目录的位置,首先需要指定服务器的根目录路径服务器,fixup_server root( )函数用来设置该服务器的根目录;接着read_config_files( )函数对其它服务器所需的参数进行配置,比如服务器端口server_port、服务器名server_name、根文件目录document_root等,其余大部分参数要专门从boa.conf文件中读取,然后为CGI脚本设置环境变量。
这些配置都正确完成后,就为Boa创建套接字,使用TCP/IP协议,创建一个特别适合嵌入式系统的Web服务器。Boa移植流程如图2所示。
2.2 Html页面设计
一般来说,浏览器只能通过HTTP请求,从服务器端获取静态页面,若用户想要通过浏览器提交一些数据或者参数给服务器处理,并要得到处理结果,达到用户和服务器的双向交互,就需要HTML表单,即form[3]。
HTML表单是专门用于用户从浏览器提交数据到服务器的一种常用方式,它由普通的HTML元素组成。用户通过填写或操作页面空间,通过提交表单的方式发送到服务器端进行处理。以下是一个表单示例:
从上述HTML设计中可以看出,该表单的功能是:通过“POST”方式,将表单中的内容上传到服务器,由于表单里的数据需要服务器进行验证,就指定调用cgi-bin目录下的set_msg.cgi脚本进行处理。本文以验证填写的报警电话号码格式是否正确为例,介绍服务器端CGI程序如何对浏览器提交的电话号码进行验证。
2.3 CGI程序编写
用CGIC对CGI程序进行C语言开发时,可以用模块替换CGIC,或者直接将编写的CGI程序和cgic.c以及cgic.h共同编译。cgic.c是整个CGIC函数库的本质。从cgic.c可以了解到,其已经对main函数进行了定义,对于CGI程序要使用CGIC进行编写,都是从cgic.c中的代码入口,在库函数进行了一系列初始化操作之后(获取系统环境变量、解析参数等等),才能够调用用户编写的代码。所以在开发CGI程序时,要调用CGIC库,不能继续使用main(),而是要使用CGIC提供的cgiMain()来开始程序[4]。
CGI程序可以采用任何读写标准输入/输出语言,比如C、C++或者Java等,由于嵌入式系统的特殊性,一般选用C语言进行编程。下面是一个CGI程序部分示例:
该程序是响应上一节浏览器验证电话号码的程序,返回的结果是弹出新页面提示验证成功。
3 嵌入式Web服务器在智能监控系统中的应用
嵌入式Web服务器在智能家居与智能监控领域应用
广泛。在远程PC机打开网页,输入正确的地址,就可以随时查看服务器端信息采集的结果,其界面如图3所示。
图3 智能监控系统
4 结语
嵌入式Web服务器是实现嵌入式系统通过Web方式与因特网互联的关键,对其进行研究对嵌入式互联网技术的发展有重要意义。本文介绍了嵌入式Web服务器设计的理念和流程,重点阐述了Boa与CGI的实现原理,通过一个智能监控项目的部分模块成功实现了该设计。随着物联网和嵌入式技术的发展,该嵌入式网络技术将会得到更加广泛的应用和发展。
参考文献:
[1] 谢仕义,徐兵.嵌入式 Web服务器的设计及其CGI 实现[J].计算机工程与设计,2007(7):1598-1599.
[2] 范延滨,于忠清,郑立爱. 嵌入式系统原理与开发[M].北京:机械工业出版社,2010.
[3] 任作为.嵌入式Web服务器的设计与实现[D]. 荆州:长江大学,2013.
[4] 雷娟娟,赵诣. 嵌入式Web服务器的设计及其CGI实现[J].电子技术与软件工程,2014(7):235-236.
责任编辑(责任编辑:杜能钢)
随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2024/12/23 4:21:28