基于ARM 9的WEB服务器设计与实现
2013-01-18王卫东
杨 虎,王卫东
(江苏科技大学 计算机学院,江苏 镇江 212003)
随着嵌入式系统和网络技术的迅速发展,嵌入式系统与Internet技术结合为嵌入式设备的网络互连提供了一条有效的途径。把嵌入式设备连接到网络中,并实现Web Server功能,使用户可以直接通过Web浏览器对现场的设备进行远程监控,这将大大方便用户的操作。嵌入式Web Server是实现嵌入式系统通过Web方式与Internet互连的关键组成部分,研究嵌入式Web Server的原理及其实现对于网络传输、远程监控、信息家电等领域有很强的实际意义。
1 系统的工作原理及组成
由于ARM9的开发板资源有限,不可能在开发板上运行开发和调试工具,所以通过交叉编译调试的方式进行,采用宿主机+开发板的形式实现。宿主机即为运行的PC机,本系统采用了安装了Linux的PC机作为宿主机。通过交叉编译将开发板与宿主机连接、定位,得到可执行文件并在开发板上运行。用户通过浏览器发送请求通过TCP/IP协议经Internet发送到服务器,服务器经过判断请求合法后,根据请求将数据发出去,并在用户的浏览器中显示。
结构框架图如图1所示。
图1 系统结构框架图Fig.1 System structure frame diagram
2 系统的硬件设计
本系统所采用的ARM开发板采用的是S3C2440A的ARM9处理器,主频高达400 MHz,最高可达533 MHz。其有成熟的电路及元器件,性价比较高。Linux嵌入式操作系统比较容易移植并且稳定,可靠。加以相应的外部扩展,实现程序的运行环境。外部扩展有机部分组成:1)存储模块:Nand Flash存储器、SDRAM存储器、SD/MMC卡存储器;2)对外通信接口模块:网口、USB接口3)人机交互界面;LCD触摸屏4)电源盒电源管理。
系统硬件结构如图2所示。
图2 硬件系统结构图Fig.2 Structure diagram of the hardware system
3 系统的软件设计
3.1 嵌入式Web Server的建立
3.1.1 嵌入式Web Server存储
嵌入式Web Server是指将Web服务器引入到现场嵌入式设备当中,此与传统的Web服务器是不一样的,由于嵌入式设备要求有限的的代码空间,并且要求嵌入式Web简洁,高效。所以使用的是PC+ARM9(嵌入式设备)的方式实现文件的映射,解决存储的问题。
3.1.2 嵌入式Web server交互方式
本系统为使客户端能与嵌入式Web Server进行交互,交互的方式有以下几种,例如 SSI(Server Side Include)、CGI(Common Gateway Interface)、Java Servlet等技术。本系统采用了 CGI的交互方式。
3.2 Boa软件平台设计与实现
3.2.1 PC+ARM9平台
1)PC+ARM9平台建立
在原PC机上安装linux系统,文中所使用的是ubuntu的linux系统.ARM9-Linux是建立在U-boot的基础上,主要通过编译、配置完成。建立交叉编译环境就是解压交叉编译器压缩包,主要通过tar指令来完成。在进行交叉编译钱需要对编译的文件进行配置,即修改定义内容。最后通过make指令对文件编译。
2)PC+ARM9平台网络联机
将ARM9的串口线与网线连接到PC机,打开PC机的超级终端,并进行基本设置后。打开ARM9开发板电源,此时超级终端会读取ARM内容。由于初始ARM9地址与PC机不在同一网段,所以需对ARM9进行地址修改。如原PC机IP地址为:192.168.6.236,网关为:192.168.6.1,子掩码为:255.255.255.0.在超级终端中输入命令ifconfig eth0 192.168.6.111修改后ARM9的IP地址为192.168.6.111.输入命令ping即可拼通。此时PC机与ARM9开发板的网络连接就完成了。可以通过FTP进行文件的直接传输。
3.2.2 Boa的配置、移植与构建
Boa是一个源代码开放,性能较高、执行代码小的单任务服务器,缺点是同一时间只能响应一个命令,是一个单进程服务器。通过建立HTTP请求列表来处理多路HTTP连接请求,同时只为CGI程序创建新的进程,很大程度上节省了系统资源,这些特点特别适合于系统资源比较少的嵌入式系统,并且它的响应速度比常规的服务器要快很多。
1)Boa的配置
下载boa源码并解压到boa目录中。在linux中执行./configure命令,在目录src中将生成Makefile文件,打开并修改
CC=gcc:为CC=gcc-linux-gcc:
CPP=gcc-E:为CPP=arm-linux-gcc-E:
2)boa编译并优化
打开src目录执行make命令,生成boa的可执行文件,继续执行arm-linux-strip boa命令。
3)构建Boa服务器
在文件系统中的etc下新建boa目录,输入指令chmod-R777 boa改变文件属性,将boa-0.94.13/boa.conf复制到系统etc/boa中。创建HTML文档目录、日志文件目录、CGI脚本目录和日志文件,拷贝mine.type文件到系统etc目录下。
3.3 公共网关接口CGI
Web开发生成动态Web页面的方法主要有 ASP、ASP.NET、JSP、PHP等,但是这些程序都需要大型应用平台的支持,而嵌入式系统资源有限,支持不了以上语言,而CGI克服了以上缺点。CGI使Web服务器和浏览器之间建立了标准的信息交互方式使信息在浏览器或者服务器与外部程序之间流通,提供客户端HTML页面的接口。当Web服务器接收到用户信息,并将部分信息发送到指定的CGI口占程序。CGI扩展程序将信息处理并返回给服务器,服务器对信息进行分析后就将结果发送给客户端,并在客户端浏览器显示。CGI可以使用多种语言来实现,包括 C、C++、Perl等,但是Perl怨言需要有解释执行的支撑模块,占用了大量存储空间。本系统采用C语言来编写,采用的是可复用的CGIC库,它提供了以下强大的功能:1)分析数据并自动校正;2)能够接受上传文件;3)能够设置和接受cookies;4)提供CGI程序的调试手段,能够回放CGI程序执行时CGI状态;5)提供字符串、整数、浮点数,单选和多选项功能来接受数据方;6)用一致的式处理From元素里的回车等。并且支持本系统的Linux操作系统。
4 服务器运行测试
将制作好的网页放到目录html中,文件名要改为index.html。CGI程序放入boa/cgi-bin中。启动boa服务器,输入ARM9开发板的地址192.168.6.111,此时浏览器就会显示页面。
图3即为测试页面。
5 结束语
图3 测试页面显示图Fig.3 Interface chart of the test system
基于ARM9的WEB服务器支持以太网连入Internet,通过类BSD套接口,绑定80号端口,监测并处理实时任务,使得用户通过Internet即可通过远程的PC机访问并控制,管理系统的运行,由于简化了系统结构,信息的采集与发布都集中到了ARM9设备中,便于维护和管理。其低廉的成本、可靠性高、反应速率快等特点使其具有广阔的推广价值。
[1]鸟哥.鸟哥的Linux私房菜:服务器架设篇[M].2版.北京:机械工业出版社,2008
[2]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.
[3]谢仕义,徐冰.嵌入式web服务器的设计及其CGI实现[J].计算机工程与设计,2008,28(7):1598-1600.XIE Shi-yi,XU Bin.Embedded web server design and its realization CGI[J].Computer engineering and design,2008,28(7):1598-1600.
[4]郭妍.基于MPEG-4视频监控系统的研究和实[D].西安:西安科技大学,2009.
[5]陈丽蓉,李际炜,于喜龙.嵌入式微处理器系统及应用[M].北京:北京大学出版社,2010.
[6]李岩.基于ARM嵌入式uCLinux系统原理及应用[M].北京:北京大学出版社,2009.
[7]马群利.嵌入式web服务器及其安全机制研究[J].计算机测量与控制,2007,15(2):538-540.MA Qun-li.Embedded web server and its security mechanism study[J].Computer measurement and control,2007,19(2):538-540.
[8]孟旭霞,谭少华,唐双雄,等.嵌入式web中SQLite访问技术的研究[J].微计算机信息,2008(24):95-97.MENG Xu-xia,TAN Shao-hua,TANG Shuang-xiong,et al.Embedded in web SQLiteaccesstechnology[J].micro computer information,2008:95-97.