GoAhead WebServer的VxWorks实现与应用

时间:2022-06-21 11:00:37

GoAhead WebServer的VxWorks实现与应用

摘 要

VxWorks操作系统以高实时性和稳定性在现阶段被广泛地应用于通信和军事领域,但是由于界面开发的复杂性,开发人员一般通过上位机软件来进行设备的配置和系统状态的获取。本文通过GoAhead WebServer的VxWorks嵌入,使用户通过网页与设备进行友好交互。

【关键词】VxWorks GoAhead WebServer 嵌入式

有线通信设备是用于远距离传输的通信设备,不具有人机交互界面。实现有线通信设备的配置只能通过pc进行。传统配置方法是采用基于pc的上位机软件通过网口或者串口来进行。此方法虽然能满足配置需求,但是存在开发、调试周期长,不便于用户安装等不足。针对MPC860以及VxWorks操作系统的特点,在系统中嵌入GoAhead WebServer,可以在web浏览器中实现有线通信设备参数配置以及设备状态的获取。

1 问题的提出及分析

有线通信设备处理器采用飞思卡尔出品的MPC860。MPC860采用双核结构,由控制模块和通信处理模块组成。MPC860同时带有多个串行通信控制器、以太网控制器,支持多种通信协议,故主要用于通信领域。操作系统采用VxWorks。该系统是美国风河公司出品的嵌入式硬实时操作系统。该系统因为具有高实时性,高性能,内核容易裁剪被应用在通信、军事、航空、航天等对实时性要求特别高的的行业中。

现阶段流行的WebServer软件主要有:BOA,Thttpd,MIni_httpd, GoAhead,httpd等,但是可以满足要求且便于开发只有GoAhead是最佳的选择。

GoAhead具有以下主要特点:

(1)支持多种嵌入式操作系统;

(2)支持ASP及JavaScript;

(3) 支持标准的CGI以及GoForm;

(4)反应迅速,最快请求处理速度可超过65p/s;

(5) 支持SSL及用户管理。

Asp,CGI是GoAhead提供的人机交互的两种方法。它们本质上是在设备端与系统内的某个C函数绑定在一起。Asp主要用来生成显示在web页面中的动态数据,CGI则用来处理响应用户输入来更新系统设置参数或者执行用户设置的指令。开发者在GoAhead一般使用GoForms来处理web页面中表单提供的内容。GoForm与传统的CGI方法不尽相同。GoForm不是为每个web连接都创建一个新的进程,而是通过与GoAhead服务器共享地址空间直接访问请求上下文。GoForm可以自动解析和访问用户传递的数据。

GoAhead内核支持使用SSL进行数据加密和认证,支持摘要认证机制。同时用户管理功能允许不同的用户具有不同级别的访问权限。

2 GoAhead的VxWorks嵌入过程

GoAhead支持多种操作系统,因此基于VxWorks的应用也比较简单。我们可以在tornado 底下建一个GoAhead的库文件便于我们的链接调用。首先要建一个download类型的工程,选择工程管理目录下Builds选项卡,右键选择Buid模式中的properties,在rules选项里选输出格式archive,这样就可以生成需要的库文件。我们接下来在工程目录下添加从官方下载的GoAhead源文件:asp.c、websuemf.c 等。此外我们还要编写main.c文件为用户提供使用接口。我们还需在系统宏定义选项卡里加上对GoAhead系统定义。具体内容为:

-D WEBS -D UEMF -D VXWORKS -D OS="VXWORKS" -D USER_MANAGEMENT_SUPPORT -D DIGEST_ACCESS_SUPPORT。编译、链接,default文件夹下会出现生成的*.a的库文件。设备使用的VxWorks工程中加载此库文件,即可将GoAhead模块编译进映像。最后在主函数中通过taskSpawn 初始化GoAhead任务的主函数websvxmain即可实现WebServer随设备启动。

3 Web网页设计

3.1 系统状态显示

GoAhead支持ASP动态网页。内容可以采用嵌入式JavaScript来进行设计。如果在创建动态网页的过程中要生成动态页面,首先要生成扩展名为asp的web文件,此文件是显示系统动态信息的主文件;然后在此文件中需要嵌入应用函数aa()的地方使用(假定aa()函数是web文件中显示系统动态信息);再把aa()函数注册到main.c文件中的initWebs()函数中:websAspDefine(T("aa"), bb)(假定bb()函数是我们VxWorks系统内部的函数,同样用于动态显示系统信息)。在执行web文件过程中,当出现aa()时系统就会调用bb()来生成新的显示信息反馈到页面中。必须注意bb()函数的格式:int bb(int ejid, webs_t wp, int argc, chart_t **argv); ejid参数作为JavaScript解释器句柄,用来调用JavaScript相关函数。wp参数作为浏览器连接的句柄,用来调用GoAhead服务器函数,前面这两个参数不能改动。argc和argv包含传递给asp过程的实参个数和内容。

3.2 配置系统参数

GoAhead使用GoForm来进行用户配置信息的传递。在使用时需要在web文件中加上表单: 其中cc为GoAhead的注册函数。当用户提交form时会自动调用cc对应的系统函数并将用户的配置参数传递进函数,来达到交互的目的。

4 加载web文件到VxWorks系统

为了能够使用户直接在web浏览器中进行系统状态的读取和系统参数的配置,在使用之前应将先前制作的web文件加载到系统。我们可以采用以下两种方式实现:

4.1 将文件拷贝到文件系统

VxWorks支持tffs文件系统,我们可以在文件系统中建立一个web文件的专属文件夹。通过ftp工具将我们设计的web文件system.asp下载进("/tffs0/web")。设置文件的根目录#define ROOT_DIR T("/tffs0/webs"),设置缺省主页websSetDefaultPage (T("system.asp"));通过web浏览器键入 http:// 192.168. 200. 36 就可以访问到system.asp 文件(设定有线通信设备默认地址为192.168.200.36)。

通过此种方式可以实时地将web下载进文件系统并进行访问,适用于调试及生产阶段。

4.2 生成rom网页

GoAhead支持Rom网页设计,并且专门为用户的web文件压缩进数组写了一个文件合并程序。我们要先进入源代码文件夹WIN下编译webcomp.dsp生成webcomp.exe;然后将所用到的web文件和生成的webcomp.exe文件放到同一文件夹下;制作filelist.txt文件,将用户所用到的网页文件名以文本方式罗列如下:

System.asp

about.htm

Help.htm

每个文件扩展名只能以回车键结束。在windows系统中打开命令行,在其中输入:webcomp.exe n filelist.txt > webrom.c 然后会生成所用到的web文件的固化数组文件webrom.c(n 为网页文件的个数);然后将源文件中的同名文件替换即可;再编译WIN文件夹下的webs.dsp可以生成windows系统下使用的webserver。通过运行这个可执行文件来测试我们生成数组文件是否可用。测试完成后我们还要进行头文件Header.h的修改来支持rom网页,即加上#define WEBS_PAGE_ROM。在tornado下编译即可得到所需要的VxWorks映像文件。此映像文件包含网页内容,不需要文件系统的支持。下载到有线通信设备,同样通过web浏览器键入 http://192.168.200.36就可以访问到system.asp 文件。

采用此种方法不必局限于文件系统的限制,而且所占空间远远小于使用文件系统,但是缺点是下载、编译web文件麻烦,适用于生产阶段以及没有文件系统的设备。

参考文献

[1]Rover2.GoAhead websever 移植小结[EB/OL].http://.cn,2005-10.

[3]GoAhead Overview[DB/OL].http:///products/webserver/default.aspx.

[3]刘妮.基于VxWorks和嵌入式Web服务器的远程实时控制的实现[D].天津大学,硕士学位论文,2006-12.

作者单位

1.烟台北方星空自控科技有限公司 山东省烟台市 210000

2.中国联合网络通信有限公司烟台市分公司 山东省烟台市 210000

上一篇:浅析新时期电子政务系统的规划、设计和管理 下一篇:大数据环境下医疗数据隐私保护面临的挑战及相...