嵌入式Web服务器技术的发展

嵌入式Web服务器技术的发展

 

0概述   集群通信系统是一种高级专业指挥调度系统,它在使用、系统入网、系统维护管理及多区联网等方面具有较齐全的功能。其中系统维护管理的主要功能有:统计功能———统计每个信道的话务量、每条中继线话务量、系统内不同组用户的话务量;修改运行参数———可根据业务需要,修改运行参数,如用户分组、用户限时参数、优先级别和接续权限;监视信道忙闲状态———可通过操作终端显示出系统内各信道的忙闲;基站无人职守;系统自我诊断———包括周期性检验控制器的运行情况,周期性检验基站收发信机及接口的运行情况,周期性检验供电情况等。该文以单基站集群通信系统为例,论述系统维护管理终端的设计与实现。系统控制中心由集群控制管理模块、转发器接口电路、电话互连器、交换单元及电源等组成。控制中心主控板是一个嵌入式系统。对基站调度维护的传统方法即是通过系统管理终端的1台计算机及其所包含的控制台程序与主控板连接(一般通过RS-232C接口)。还有一种Telnet方法对系统控制中心实施管理。   这2种方法各有缺陷。使用控制台程序的方法不能实现远程管理嵌入式系统,Telnet方法虽然可以远程管理嵌入式系统,但Telnet的命令行界面使用户管理极不方便。而现在主流的基于Web的网络管理方法不仅可以利用浏览器提供的丰富的图形用户界面实现远程管理、监控嵌入式系统的功能,并且可以在服务器端进行进一步开发,提高设计效率。基于Web的网络管理(WBM:Web-BasedManagement)允许管理人员使用任何一种Web浏览器在网络的任何节点上方便迅速地配置、控制以及存取网络和它的各个部分。WBM有2种实现策略,它们之间平行发展而互不干涉。第一种是方案,也就是将Web服务器加到一个内部工作站()上,这个设备轮流与端设备通信,浏览器用户通过HTTP协议与通信,通过SNMP协议与端设备通信;第二种方案是嵌入式方式,将Web能力真正嵌入到网络设备中,管理人员可以轻松地通过浏览器访问到该设备实现网络管理功能。方式保留了现存的基于工作站的网管系统的全部优点,同时增加了访问的灵活性,适合大型机构进行全部网络的网络监测与管理。与此同时,嵌入式方式对于小规模的环境更为理想,文中讨论的就是以嵌入式的方式实现WBM。   1系统软硬件体系结构   1.1系统组成   以嵌入式方式实现WBM,即在嵌入式系统中安装嵌入式Web服务器(EWS:EmbeddedWebServ-er),EWS包含HTTP引擎、API模块、虚拟文件系统、配置模块、安全模块等,通过普通的浏览器就能与EWS取得连接,进行交互来完成相应的管理功能。经过对各类微处理器的比较与测试,课题组使用包含PowerQUICC系列微处理器的HHPPC8270开发板作为主控板开发硬件。HHPPC8270开发板适合于集成控制和推进处理的高端网络和通信设备,每个芯片都集成了2个处理单元:一个嵌入式Pow-erPC603e核,一个精简指令集(RISC)的通讯处理模块(CPM)。8270HHPPC开发板提供了3个高速的百兆以太网接口、16M的FLASH、128M的SDRAM、1个2线RS232串口,HDD(PCI)支持电子盘、IDE、SATA、SCSI硬盘(阵列)存储,同时提供2个PCI插槽可以方便扩展多种PCI接口卡,实现硬盘存储、无线通讯、图像采集/显示等功能。EWS操作系统采用嵌入式实时操作系统VxWorks,系统中运行的Web服务器软件是GoAheadWebServer。它负责接受、处理和应答客户端提出的请求,传递用户请求的静态页面、调用后台的通用网关接口(CGI)程序或者GoAheadWebServer自带的内存中的CGI处理GoForms,CGI程序以及GoForms负责调用具体的控制程序对设备进行管理,CGI程、GoForms处理后的结果以HTML的方式返回客户端。   1.2软件体系结构   系统用到的主要软件有:嵌入式操作系统Vx-Works及其来发环境Tornado和公开源码的Web服务器软件GoAheadWebServer。VxWorks系统运行环境支持的CPU包括:PowerPC、68K、CPU32、x86等。VxWorks的微内核是一个具有较高性能的、标准的嵌入式实时操作系统内核,其主要特点包括:快速多任务切换、抢占式任务调度、任务间通信手段多样化等。该内核具有任务间切换时间短、中断延迟小、网络流量大等特点,与其他嵌入式实时操作系统相比具有一定的优势。TornadoⅡ是一个友好的开发环境,它可以运行在多种主机上,包括:Sun、HP、Dec、Mips等;主机操作系统则支持UNIX、WindowsNT、WindowsXP等。系统的各项配置由于使用较为流行的图形界面而方便使用者较快地理解和掌握。GoAheadWebServer是一个开放源码、功能强大、可以运行在WindowsCE、ECOS、LINUX、MACOSX、QNX、VXWORKS等多个平台。GoAheadWebServer的主要特征有:支持ASP,嵌入式的javascript,标准的CGI执行,内存中的CGI处理GoForms,扩展的API,如果不包含SSI仅要求60K内存;包含SSI要求500K内存,web页面可存在ROM或文件系统中。   2系统实现关键技术   2.1GoAheadWebServer的移植   步骤1:网络上下载最新的GoAheadWebServer源码文件夹webs218,即GoAhead2.1.8。   步骤2:运行TornadoⅡ建立一个Downloadable工程,编译GoAheadWebServer的源码。(1)把webs218文件夹下所有的源文件(*.c和*.h文件)以及VxWorks文件夹下的main.c文件添加到所建立的工程中,注意其中不要加入webSSL.c和webcomp.c文件,否则会报错。webSSL.c文件用在SSL上,如果需要使用SSL的话,还需要下载openSSL系列的文件,此处省略。webcomp.c文件用于web文档压缩,在没有文件系统的环境在使用。(2)参考../VxWorks/makefile来修改工程的makefile。在工程中增加宏定义:-DWEBS-DUEMF-DOS="VXWORKS"-DVXWORKS-g-mapcs-32-mlittle-endian-march=ar-mv4-ansi-fno-builtin-DARMEL-I.-IG:/Tornado2.0/target/h/-DCPU=ARM7TDMI-DTOOL_FAMILY=gnu-DTOOL=gnu。如果需要增加用户管理、存取控制支持,则还需增加-DUSER_MANAGEMENT_SUPPORT和-DDI-GEST_ACCESS_SUPPORT。(3)根据实际系统要求修改main.c文件:设定根目录名,例如:#defineROOT_DIRT("/tffs0/");设定WEB页面的路径,例如:Staticchar_t*rootweb=T("webs");设定安全密码,例如:Staticchar_t*password=T("1234");设定服务端口,例如:Staticintport=80;设定默认访问的页面,例如:websSetDefaultPage(wp,T("home.asp"));利用搜索工具查找home.asp可能不止一处,将碰到的都修改完成。#p#分页标题#e#   步骤3:复制网页文件及程序等相关文件到指定文件夹:网页文件路径:/tffs0/webs/;程序文件路径:/tffs0/cgi_bin/;图片文件路径:/tffs0/jpeg/;记录数据的txt文件路径:/tffs0/counter/;   步骤4:在浏览器端键入目标板网口IP地址就可以访问home.asp了。   2.2系统实现的其他关键技术   VxWorks中提供TFFS对闪存的块设备接口,TFFS应用程序能从闪存中读写,其过程如同从磁性介质的机械硬盘驱动器上的MS-DOS文件系统分中读写一样。TFFS由3层实现:翻译层(FTL)、MTD层和Socket层。FTL为上层软件提供标准的快设备接口,实现如块映射、平均使用、垃圾回收和数据保护等;MTD层和具体芯片相关,用于Flash存储器的相关操作指令序列;Socket层为具体的硬板提供接口,实现电压控制、基地址设置、写保护控制等。Socket层要修改sysTffs.c和Config.c。在sysTffs.c主要添加自己的MTD宏定义,设置Flash存储器基址和大小,屏蔽无关的写保护操作,Config.c的修改就是要向mtdTable[]表注册自己的MTD。TFFS驱动的工作主要集中在MTD上,MTD和具体的Flash存储器有关,实现读、写、擦除等基本操作。这可以参照芯片手册来编写。实现了Socket层和MTD层并格式化Flash后就可以在Vxworks中加载TFFS文件系统。   GoAheadWebServer支持基本认证BAA(BasicAccessAuthentication),用户密码从客户端经过Base64方式加密后传到浏览器端,虽然不是以明文传输,但这种方法显然很容易被破译。实现BAA需要对GoAheadWebServer源码中security.c预定义部分进行,如下:#ifndefUSER_MANAGEMENT_SUPPORT#defineumGetAccessMethodForURL(url)AM_BASIC#defineumUserExists(userid)1#defineumUserCanAccessURL(userid,url)1#defineumGetUserPassword(userid)websGetPassword()#defineumGetAccessLimitSecure(accessLimit)0#defineumGetAccessLimit(url)(char*)1#endif注释掉:bfree(B_L,accessLimit);做了上述修改,访问home.asp则服务器会自动返回一个登陆窗口,要求验证用户名和密码。GoAheadWebServer还支持DAA(DigestAc-cessAuthentication),DAA应答中包含一个有效的校验和,即摘要。DAA假定客户方和服务器都知道一个有权使用资源的用户名和用户密码,相对于基本认证,它不要求客户方向服务器端提供显式的用户密码,从而避免了密码被窃。系统管理员通过Web页面完全添加用户、用户组、用户访问权限的设置,在完成这些配置后,只有拥有相应操作权限的用户才可以访问相应的服务器资源。   GoAheadWebServer支持GoForms。GoForms是GoAhead公司自创的一种表单技术,它的任务直接运行在内存,而非像传统CGI程序,每一次和服务器连接都要产生新的任务。通过和Web服务任务共享地址空间,GoForms进程能直接访问所请求的内容。当GoAheadWebServer运行时,若解析到URL包含有"/goform"时即开始调用执行某个表单处理程序。URL字段中"/goform"之后的信息定义了该表单的名称和具体参数。GoAheadWebServer支持标准CGI。CGI是在WEB服务器上运行的程序代码,它的工作就是控制信息要求产生和传回所需结果。用留言簿程序来解释其流程:用户在客户端输入一些信息,如名字和E-mail。用户按下"留言"按钮,浏览器将信息传给服务器端的特定CGI程序,该程序按照预定方法处理,把用户传来的信息存入指定文件夹。CGI程序可以给客户端返回一个信息,表示请求任务已完成。编写CGI的语言有很多:Perl、C、C++、CShell和VB。Perl以其强大的字符窜处理能力成为编写CGI的最佳选择。但嵌入式系统大都不支持安装Perl解释器,基于GoAheadWebServer源代码都是用C编写,所以本文也都用C编写CGI程序,用C编写的程序特点是运行速度快、通用性好、易于移植。CGI程序相比goform具有更广范的功能,它可以把HTML语言嵌入在程序中,输出图像、表格、表单。而goform只能以字符的形式输出。   2.3调度维护功能的实现   (1)系统管理:建立连接、用户登陆。(2)配置管理:配置基站控制器各种参数(通过文件上传、下载实现整体配置;也可通过页面表单实现具体参数的单个配置)。(3)维护和告警管理:对基站控制器进行监视、设置基站控制器各种参数、管理移动台数据、基站系统号管理、查看告警信息等。(4)调度管理:实现单呼、组呼、全呼、文件发送等。   3结束语   随着嵌入式Web服务器技术的发展和成熟,其广泛应用将会大大提高设备性能,从根本上改变设备运行管理方式。基于嵌入式Web服务器技术建立的新型控制系统,将有效地降低运行和维护费用,提高系统的管理水平。实验表明基于VxWorks的Web-Server系统具有运行可靠,维护、更新简易的特点,所述方法对嵌入式远程控制具有一定的参考价值。