基于ARM9的Web服务器Boa的软、硬件设计

2013-06-01 06:58长江泰州通信管理处
电子世界 2013年13期
关键词:源代码内核网页

长江泰州通信管理处 金 勇

基于ARM9的Web服务器Boa的软、硬件设计

长江泰州通信管理处 金 勇

文章介绍了基于ARM9的嵌入式Web服务器Boa的软、硬件设计及其实现,硬件部分的核心是三星的S3C2410X处理器。最后成果形式为可以远程访问的WebServer嵌入式服务器。Boa是一款单任务的HTTP服务器。与其他传统的Web服务器不同的是当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接。而是通过建立HTTP请求列表来处理多路HTTP连接请求。同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要。同时它还具有自动生成目录、自动解压文件等功能。因此,Boa在嵌入式系统中具有很高的应用价值。

ARM;Linux;嵌入式Web服务器;CGI

1.ARM简介

广义地讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。它是嵌入到对象体系中的专用计算机系统,以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。目前非常流行的ARM内核有ARM7TDM1、StrongARM、ARM720T、ARM9TDM1、ARM920T、ARM940T、ARM946T、ARM966T、ARM10TDM1等。本文所讨论的目标板的CPU为ARM920T内核的三星S3C2410芯片。

ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。它包含ARM920T、ARM922T和ARM940T三种类型,广泛应用于PDA、移动通信、路由器、工业控制等领域。

图1 JXARM9-2410 Linux开发流程

图2 Boa测试开发环境

图3 index.html网页

2.嵌入式Web服务器实现原理

嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中,并驻留其中有限的代码空间内。与传统的Web应用相比,简化了系统结构,并将信息采集和信息发布都集成到现场的嵌入式设备中。在相应得软硬件平台支持下,利用标准的接口形式和通信协议,内嵌于嵌入式设备的Web服务器可以向任何接入到它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面,此时浏览器成了设备的前端控制板。当前在嵌入式应用领域,嵌入式系统转变为嵌入式WebServer,大体可分为2种实现方案:(1)基于网关服务器的嵌入式设备Internet接入;(2)直接实现TCP/IP的嵌入式设备Internet接入。本课题中采用第二种实现方案。

3.系统功能的实现

3.1 开发流程

图1为本课题所采用的实验环境以及开发流程。①在主机的RedHat Linux操作系统下安装Linux发行包以及交叉编译器armlinux-gcc;②对Linux进行配置(make menuconfig),并选择适合本课题系统得相关配置;③编译生成Linux映像文件zlmage;④通过u-boot的tftp命令将该文件下载到目标板并执行。这将在下面的内容中作介绍。

3.2 加载Linux内核映像

3.2.1 将JXARM9-2410的串口0与PC的COM1连接,JXARM9-2410的网卡和PC的网卡使用直连网线进行连接,或者将JXARM9-2410和PC机使用普通网线接入同一局域网。ARM实验箱的IP为192.168.1.45,虚拟机下的Linux的IP设为192.168.1.180,并将安全级别设置成无防火墙,宿主机IP设为192.168.1.145。

3.2.2 将JXARM9-2410上电,正常情况下将在终端DNW中看到bootloader菜单界面。在bootloader中按照提示进行加载完成后输入CTRL+C进入Linux命令行。如果出现失败,则可能存在一下几种问题:

1)加载内核时总体是“TT”,这是由于tftp服务器没有连接成功,在uboot中输入ping 192.168.1.180命令,如果提示为not alive请检查网络有没有正确连接:使用网线正确与否或者宿主机和目标机的IP地址不在同一子网。此处要求宿主机和目标机都在192.168.1.xxx网段,而且最后一位不能相同;如果提示为alive而仍然提示“TT”,请检查Windows防火墙设置,关闭防火墙,如果仍然不行,请关闭系统中启动的其它程序,如杀毒软件等。

2)提示“packet too big”,这个问题是由于uboot接收到非法的包产生的,少量这种提示不会影响内核的加载,如果导致内核加载失败,请按照如下方式检查:①使用直接网线连接计算机和实验箱;②关闭计算机中打开的所有与网络相关的程序。

3.3 Boa Web服务器的建立

建立Boa Web服务器包括以下步骤:

3.3.1 下载Boa源代码

当我们的目光就投向这张看上去令人难以置信的照片。我们看到的是什么?一个男人,一具人形,还是只是一幅乔装打扮?是一个恍如隔世的噩梦,还是一幅后现代主义的当代影像?照片的不确定性是多层面的,带来的是伴随着新奇和些许恐惧的疏离效果。

Boa web服务器的源代码可以从http://www.boa.org下载,本文中下载文件为:boa-0.94.13.tar.gz,为当前最新版本。

3.3.2 安装并编译Boa源代码

1)通过Vmware Tools中的文件共享将Windows下载的Boa源代码复制到/home/cvtech/jx2410/examples/目录下。

2)安装源代码:生成Makefile文件#./configure。

3)修改Makefile文件,找到CC=gcc,将其改成CC=arm-linux-gcc,再找到CPP=gcc-E,将其改成CPP=arm-linuxgcc-E,并保存退出。

4)运行make进行编译,在boa/src目录下将生成Boa文件,该文件即为Boa Web服务器执行文件。将调试信息剥去,得到的最后程序只有约60KB大小。

3.3.3 配置Boa Web服务器,使其能够支持CGI程序的执行

Boa启动时将加载一个配置文件boa.conf,在Boa程序运行前,必须首先编辑该文件,并将其放置于src/defines.h文件中SEVER-ROOT宏定义所定义的缺省目录,或者在启动Boa时使用参数“-c”指定boa.conf的加载目录。

3.4 系统功能的测试

在移植完Boa服务器后就是测试它能否正常工作,静态HTML页面能否正常访问,还将测试动态Web页面能否正常访问。本课题中将采用NFS方式来进行测试工作。

测试Web服务器。Boa测试开发环境如图2所示:

可以将嵌入式目标系统上的/etc目录复制到主机的NFS共享目录下,然后将NFS共享目录下的etc重新mount为目标系统上的/etc目录。这样就可以在主机上对etc目录下的各种配置文件进行修改而立刻在目标系统上生效。

先前设定JXARM9-2410的IP地址为:192.168.1.45,且在JXARM9-2410的JFFS2文件系统中已经预先烧写好了配置好的boa.conf文件,位于/mnt/jffs2/etc/目录。

启动JXARM9-2410 Linux,然后按如下步骤进行:

a)将Boa的执行文件复制到tftpboot目录下;

b)将主机下的tftpboot目录挂载到目标板的nfs目录下;

c)启动Boa服务器。

根据上文中boa.conf的配置,此时在目标板的mnt/jffs2/web目录下包含测试主页面index.html、存放各种图片的目录IMAGES以及CGI脚本的存放目录cgi-bin。

启动后测试Boa服务器,在网页浏览器中访问如下网址:http://192.168.1.45/

如果网络连接正常,且Boa启动正常的话,将可以看到/mnt/jffs2/web/index.html网页,如图3所示,表示静态HTML页面测试通过。可以修改该网页,并替换成所需要的网页,然后刷新浏览器显示。

3.5 动态Web页面测试

在JXARM9-2410 Linux的命令行中输入如下命令,将主机的tftpboot目录挂载到目标板的nfs目录:

上述命令首先将编写好的CGI程序cgi_test放置boa.conf定义的cgi-bin目录下。本课题中路径为/mnt/jffs2/web/cgibin/,然后启动boa服务器。CGI程序就能被正确地执行。

使用网页浏览器访问如下网址:http://192.168.1.45/cgi-bin/cgi_test。

如果正确,将显示输出一个表单。点击“submit”按钮将提交表单并由cgi_test程序处理,将在页面上返回处理的信息。

[1]张毅,赵国锋.嵌入式Internet的几种接入方式比较[J].重庆邮电学院学报,2002,4(14):83-86.

[2]龚波,万启常,黄力.ARM平台上嵌入式Web服务器实现[J].湘潭师范学院学报,2005,27(2):99-101.

[3]石道生,吴军霞,罗慧谦.基于ARM9的嵌入式Web服务器的研究[J].中国水运(学术版),2006,6(8):128-129.

[4]奚立群,刘德华.Web服务器的嵌入式技术[J].吉林化工学院学报,2003,20(4):90-93.

[5]陆永建,王萍,吴佳,张永力.嵌入式Web服务器Boa的移植及其应用[J].河海大学常州分校学报,2005,19(4):44-47.

金勇(1979—),男,江苏泰州人,大学本科,工程师,现供职于长江泰州通信管理处,研究方向:通信工程。

猜你喜欢
源代码内核网页
强化『高新』内核 打造农业『硅谷』
基于TXL的源代码插桩技术研究
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法
基于URL和网页类型的网页信息采集研究
揭秘龙湖产品“源代码”