覃斌毅1,2,邱杰3,郑金存1,董积有4
(1.玉林师范学院电子与通信工程学院,广西玉林537000;2.西安电子科技大学机电工程学院,陕西西安710071;
3.玉林师范学院计算机科学与工程学院,广西玉林537000;4.玉林师范学院学生工作处,广西玉林537000)
摘要:LXI总线是继GPIB、VXI和PXI等传统总线技术之后发展起来的新一代仪器总线技术,具有传统测试仪器总线无法比拟的优势。其中,Web页面是LXI总线技术中的一个关键。通过对LXI仪器的Web页面的研究,搭建LXI仪器Web接口的硬件平台,并以IEEE1588同步配置页面的实现为例,提出了一种在LXI仪器中实现Web页面的方法。该方法将boa服务器和SQLite数据库移植到Linux中,同时采用CGI局部刷新技术代替传统的CGI全局刷新,实现LXI仪器Web页面。最后进行系统验证,通过浏览器对LXI仪器进行远程访问控制。实验结果表明,系统能正确实现IEEE1588同步配置页面。
中图分类号:TP316
文献标识码:A
DOI:10.16157/
中文引用格式:覃斌毅,邱杰,郑金存,等.基于LXI总线的Web关键技术研究与实现[J].电子技术应用,2016,42(3):74-77.
英文引用格式:QinBinyi,QiuJie,ZhengJincun,[J].ApplicationofElectronicTechnique,2016,42(3):74-77.
0引言
LXI的全称是仪器在局域网扩展(LANeXtensionsforInstrumentation),它是继GPIB、VXI和PXI等传统总线技术之后发展起来的新一代仪器总线技术。LXI总线具有无处不在的LAN接口、不受距离和节点数目的限制、精确时间同步技术以及远程网页访问等特点。因此,在组建网络化、分布式自动化测试系统时,LXI总线拥有传统测试仪器总线技术无法比拟的优势[1]。
LXI仪器是指符合LXI标准的新型仪器。LXI标准中明确提出LXI仪器必须提供能够被W3C兼容浏览器访问的Web页面,用户可以通过浏览器对仪器进行远程访问、控制以及故障排查,不需要传统仪器的前面板即可实现单台仪器的所有功能。其中,LXI总线B类仪器需要提供的基本Web页面主要包括:主页面、LAN配置页面、IEEE1588同步配置页面、仪器功能页面以及事件日志访问页面[2]。因此,Web页面的实现是LXI总线技术中的一个关键。本文以LXI总线中IEEE1588同步配置页面为例,提出了一种实现LXI仪器Web页面的方法。
1LXI仪器Web接口硬件设计
为了实现LXI仪器的Web接口,本设计使用ARM+DM9000+DP83640的架构,其中,选用三星公司的S3C2440处理器为主控制器,DM9000为MAC层芯片,DP83640为物理层芯片[3]。LXI仪器Web接口硬件系统框图如图1所示。
2LXI仪器Web接口软件设计
本设计操作系统选用Linux系统,在系统中搭建嵌入式服务器,结合HTML、CGI以及SQLite数据库技术,实现了IEEE1588同步配置页面。整个LXI仪器Web接口软件系统如图2所示。
系统工作过程为:用户在客户端发送HTTP请求消息,boa服务器对接收到的请求消息进行解析,解析的内容包括:读取请求URL、区分客户端请求的资源是静态页面还是CGI应用程序。若用户请求的是静态页面,则服务器读取相应的HTML的内容,并将其作为HTTP响应消息中的实体返回给客户端浏览器;若客户端请求的是CGI应用程序,则服务器将创建相应的CGI应用程序进程,并将所需信息按CGI规范传递给CGI应用程序进程,此后由CGI应用程序接管控制。CGI应用程序对接收到的信息进行解码,解码后调用设备驱动程序对硬件进行控制,必要时将解码的参数利用嵌入式数据库进行保存,同时CGI将结果在客户端浏览器上显示。
2.1Web页面构成
IEEE1588同步配置页面是LXI总线B类仪器Web系统中的重要组成部分,用于对IEEE1588时钟同步状态监控和对输出触发信号动态配置。它由2个Web网页构成:IEEE1588基本信息页面和IEEE1588同步参数配置页面。
IEEE1588基本信息页面用于显示IEEE1588中的参数,如当前超主时钟的MAC地址、父时钟的MAC地址、时钟端口状态、当前PTP时间、PTP子域、IEEE1588协议版本[4]。
IEEE1588同步参数配置页面可对IEEE1588中的参数进行设置,如可对PTP子域、PTP首选主时钟、同步时间间隔、PTP时间、IEEE1588触发时间、IEEE1588触发信号类型等进行设置。
2.2嵌入式Web服务器的移植
嵌入式设备常用的Web服务器有Lighttpd、thttpd、shttpd、apache、boa[5]。本设计采用boa作为嵌入式Web服务器,它具有小巧、高效、支持CGI技术的特点。
boa服务器是开源的,要将其用于Linux系统需要进行移植,移植的步骤如下:
(1)从官方网站下载boa发布版源码,本设计选择版本为,在命令终端执行解压命令,将其解压到PClinux虚拟机下。
(2)进入src目录下执行命令./configure,产生一个make-file文件。修改makefile文件:将CC=gcc改为CC=arm-linux-gcc,将CPP=gcc-E改为CPP=arm-linux-g++-E。
(3)修改src目录下文件,找到头文件中的defineTIMEZONE_OFFSET(foo)(foo)-tm_gmtoff。
(4)执行make命令进行编译,然后把编译得到的boa可执行文件拷贝到嵌入式设备文件系统的“sbin/”目录下;把“/”目录下的文件拷贝到文件系统的“etc/boa/”目录下。
(5)修改boa配置文件,主要修改内容有:
Port80//端口
Userroot
Grouproot
ServerNameGUET//服务器名
DocumentRoot/www//存放html文档主目录
MimeTypes/etc///指明文件位置
DefaultTypetext/plain
CGIPath/bin:/usr/bin:/usr/sbin:/sbin
ScriptAlias/cgi-bin//www/cgi-bin/
以上为关键设置部分,其他部分采用默认设置。设置完成后,保存退出,然后,拷贝PC机Linux系统etc/目录下的到文件系统etc/目录下。至此,boa服务器在Linux系统上的移植完成。最后,将HTML文件放在文件系统的/www文件夹中,将CGI脚本程序放在/www/cgi-bin文件夹中即可以实现网络访问。
2.3嵌入式数据库的移植
数据库主要用于数据存储和查询,在本设计中,嵌入式数据库是客户端浏览器与PTP程序(PTP程序是指实现IEEE1588协议的应用程序)进行通信的桥梁,如图3所示。
IEEE1588同步配置页面利用嵌入式数据库实现两个方面的作用:一方面是对一些IEEE1588配置参数进行存储,PTP程序可以通过数据库API访问这些参数;另一方面是PTP程序在运行过程中可以动态存储重要的状态信息,客户端可以通过调用CGI应用程序实现对这些信息的访问。本设计选用在嵌入式系统中应用最广的SQLite进行移植。
移植嵌入式数据库SQLite到Linux系统中的步骤如下:
(1)从官方网站下载SQLite数据库源码压缩包,本设计选择的版本是。
(2)压缩包将其解压到PC虚拟机Linux系统的opt目录中,会生成一个名为的文件夹。
(3)在根目录下新建目录_install。
(4)配置SQLite,生成Makefile文件。
(5)执行make和makeinstall命令,编译安装结束后,在/_install目录下生成bin、lib、include目录。
(6)把bin目录下的sqlite3和sqlite_test文件拷贝到嵌入式Linux文件系统中的bin目录下,把lib目录下的库文件拷贝到文件系统的lib目录下,这样在嵌入式Linux中就可以使用SQLite数据库了。
(7)把include目录下面的数据库头文件拷贝到交叉编译器的include目录下,把lib目录下的库文件拷贝到交叉编译器的lib目录下,让交叉编译器支持sqlite3数据库。
为实现相关的数据存储,建立了一个数据库文件,存放在文件系统的mnt文件夹中。使用“createtable”语句创建2个用于存放1588参数信息的表:config1588和parameters。其中,config1588存放PTP子域、首选主时钟、同步间隔等;parameters存放超主时钟的MAC地址、父时钟的MAC地址、端口状态等。
2.4CGI动态网页的实现
嵌入式系统由于自身软硬件资源的限制,Web服务器无法支持功能强大的脚本语言实现动态网页。因此,在嵌入式Web服务器中通常使用CGI实现动态网页。
CGI(公共网关接口)是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。例如,可以通过编写CGI程序访问数据库以及通过设备驱动接口访问硬件等[6]。
CGI程序可以用任何脚本语言或者独立编程语言实现,只要该语言可以在系统上运行。传统的使用CGI实现动态网页的方法步骤如下:
(1)浏览器通过表单把请求数据发送到Web服务器。
(2)CGI程序从环境变量或者标准输入中提取表单数据,并进行相应的处理。
(3)用printf函数输出整个HTML页面代码,将结果返回给浏览器。
这种方法虽然可行,但是用CGI程序将整个HTML静态页面全部通过printf输出,会使得CGI代码混乱不堪,并且难以实现复杂的HTML页面。另外,还有一个缺点就是接到每一次请求都会将整个HTML页面重传一遍,增加了服务器的负担。在已经打开一个网页进行操作的过程中,每次请求往往只需要更新页面中少部分数据即可,没有必要重传整个页面。
为解决上述问题,本设计参照了AJAX技术,使用局部动态网页刷新的方法实现动态网页。AJAX主要由JavaScript、XMLHTTPREQUEST、XML三部分组成。其中JavaScript用于页面数据传递、刷新局部页面;XMLHTTPREQUEST用于向服务器提交请求,与服务器响应;XML是服务器返回数据的格式。由于boa服务器不支持XMLHTTPRE-QUEST发出的请求,因此仍使用CGI实现请求的提交与响应,数据格式可以任意定义。具体实现方法如下:
(1)参照大型服务器Web动态网页的实现方法,先建立一个HTML静态网页框架。
(2)对每一个表单请求创建一个CGI响应程序,CGI只对需要返回的数据用printf函数输出。
(3)采用HTML内联框架技术将CGI响应的HTML页面进行隐藏。
(4)使用JavaScript脚本语言从CGI响应的HTML页面中取出服务器返回的数据,并将其显示在主HTML页面的指定位置。
3LXI仪器Web接口功能验证
为了对LXI仪器Web接口功能进行测试,搭建图4所示的测试平台。其中,美国安捷伦公司的触发盒E5818A与待测LXI仪器通过交换机相连,同时,PC也通过交换机接入到局域网中,PC可通过网页访问对待测LXI仪器进行控制。将触发盒和待测LXI仪器的触发输出口分别接到示波器的两个通道,用于测量同步误差[7]。
3.1IEEE1588基本信息页面的验证
首先,通过交换机将PC与LXI测试仪器相连,设置PC和LXI仪器在同一局域网内,然后在浏览器中输入网址:http://192.168.1.6/,打开网页,界面如图5所示。
经验证,PC可通过浏览器访问嵌入式系统中的IEEE1588基本信息页面,在页面正确显示了IEEE1588的相关参数。
3.2IEEE1588同步参数配置页面的验证
通过交换机将PC与LXI测试仪器相连,设置PC和LXI仪器在同一局域网内,然后在浏览器器中输入网址:,界面如图6所示。
经验证,PC可通过浏览器访问嵌入式系统中的IEEE1588同步参数配置页面。
通过对触发时间、触发周期、触发源等参数进行设置,可在指定的时刻输出触发信号。为了验证同步触发功能,分别通过网页设置E5818A和待测LXI仪器在同一时刻触发输出脉冲信号,用示波器检测这两路输出信号。图7是在指定时刻下,示波器测得的同步触发的信号,从图7可得同步误差时间是258ns。
4结束语
本设计使用ARM+DM9000+DP83640的架构实现了LXI仪器Web硬件接口;将boa服务器和sQList数据库、Linux操作系统、HTML、CGI等技术结合起来,实现了LXI仪器Web软件接口。在Web软件接口实现的过程中,使用了CGI局部刷新技术代替传统的CGI全局刷新,减轻了Web服务器的负担。最终,通过搭建测试平台,验证了所提出的方法切实可行,为LXI仪器的Web页面设计提供了参考。
参考文献
[1]王彪.LXI关键技术研究[D].哈尔滨:哈尔滨工业大学,2009.
[2]LXIConsortium,[S].2008.
[3]覃斌毅,陈铁军,邱杰,等.基于IEEE1588协议时钟同步精度影响因素的研究[J].计算机测量与控制,2014,22(10):3312-3315.
[4]于志成.LXI关键技术-IEEE1588协议的研究与实现[D].哈尔滨:哈尔滨工业大学,2012.
[5]胡聪,高明,牛军浩.LXI标准Web接口仪器控制研究[J].计算机测量与控制,2011,19(6):1354-1356.
[6]谢仕义,徐兵.嵌入式Web服务器的设计及其CGI实现[J].计算机工程与设计,2007,28(7):1598-1600.
[7]朱旺纯,覃斌毅,王玉娟.基于IEEE1588协议同步技术的研究[J].计算机测量与控制,2014,33(7):98-101.