如何在DragonBoard 410c平台上移植web服务?
扫描二维码
随时随地手机看文章
一、boa web服务器介绍
boa服务器是一个小巧高效的web服务器(大小只有60kb),效率高,专为嵌入式应用而开发,可以支持CGI脚本适合各种资源有限的嵌入式应用环境,是一种单任务的web服务器,其对于http的请求采用顺序执行方式来完成,不会调用fork创建新的进程来实现,但是在执行CGI的时候,起采用的是多进程的方式,可以单独为CGI程序fork相应的进程来执行,这种设计方式极大的保证了再嵌入式平台上部署web服务不会给平台带来过大的压力和过多的资源损耗而影响平台运行其他应用的性能,非常适合一些嵌入式的应用需求。
图1 Boa log
二、准备工作
1)下载Boa源码包
在http://www.boa.org/网站上可以下载最新的Boa源码,本文移植过程中下载的是0.94.13版本。
2)搭建开发环境
本文移植的过程是基于linux系统环境下完成的,需要在DragonBoard 410c上安装好linux操作系统,具体的安装方法可以参考高通提供的DragonBoard 410c 的LinuxUserGuide.pdf文档,并且设置好网络。
3)在PC机上安装好交叉编译工具链
本文使用的是arm-linux-gcc 4.4.3,具体的安装方法可以参考以下链接:
http://www.cnblogs.com/tdyizhen1314/p/4124886.html,完成安装后,按照下图搭建好交叉编译环境,其中设置好网络后,该图中的micro usb连接电脑的方式可以用WiFi连接,同时借助于ssh远程登录工具,登录开发板即可。
图2 编译环境
三 、Boa 的移植
1) 解压Boa包
# tar xzf boa-0.94.13.tar.gz
2)参考Boa官网上的资料http://www.boa.org/,安装bison和flex工具
3)修改相关的文件
在安装的过程总需要修改src/compat.h、src/log.c和src/boa.c三个文件,具体的修改方法如下:
// src/compat.h文件修改
#gedit src/compat.h
找到:#define TIMEZONE_OFFSET(foo) foo##-》tm_gmtoff
将该代码修改为:#define TIMEZONE_OFFSET(foo) (foo)-》tm_gmtoff
//src/log.c文件修改
#gedit src/log.c
找到代码段:
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE(“unable to dup2 the error log”);
}
将该代码段注释掉。
//src/boa.c文件修改
注释掉下面两句话:
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
和
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
4) 生成Makefile文件
在解压后的boa源码文件中,提供了configure工具来进行配置生成makefile,具体的命令如下:
首先转到src目录下
cd boa-0.94.19/src
然后执行./configure
5)修改makefile中的编译工具,在生成的makefile文件中是指定了CC=gcc即使用gcc工具来进行编译,但是我们的目标是要讲Boa移植到开发板上,开发板是基于ARM架构的,因此需要修改编译工具,即修改CC=gcc为:
CC = arm-softfloat-linux-gnu-gcc
同时在编译Boa中还需要使用CPP编译工具,使用的是gcc-E因此还需要修改CPP = gcc -E 为 CC = arm-softfloat-linux-gnu-gcc -E。
6)编译Boa
直接执行#make命令即可进行编译,编译后就可以得到可执行的boa文件,如果需要进一步压缩boa大小,可以执行#arm-softfloat-linux-gnu-strip boa,还可以进一步对生成的boa进行瘦身。
7)Boa配置
在下载的源码目录下有一个boa.conf配置文件,在该配置文件中用户可以修改自己的web配置,包括Group、user、ScriptAlias、documentRoot、SserverName、AccessLog等信息,具体的修改可以参考http://www.boa.org中的配置资料和方法进行修改,也可以直接打开boa.conf文件看其中注释进行修改。
8)下载到开发板
将文件在开发板的/etc目录下建一个boa文件夹,然后将编译和修改好的boa、boa.conf拷贝到开发板的/etc/boa目录下,PC机器上的etc/mime.types文件拷贝到开发板的/etc目录下。
完成上述文件下载后,在410c开发板的/etc/boa文件夹下创建www目录,在www目录下创建cgi-bin目录,其中www目录用于存放网页html文件,cgi-bin用于存放cgi脚本。
最后将自己的主页文件index.html拷贝到开发板的www目录下,如果index.html还有关联的文件或者文件夹,都全部复制到该目录下。到此,整个Boa web服务器移植完成,在PC机上打开浏览器,输入开发板的ip即可看到主页内容。
在完成了web服务器的搭建后,同时结合前面的一篇博客《基于DragonBoard 410c平台的移动图像监测系统》,最后就可以方便的构建基于web的移动图像检测系统,用moTIon实现移动图像监测,同时基于web模式进行查看监测内容。
如果在移植过程中对html不熟悉,可以通过浏览器打开一个页面(如www.baidu.com)然后另存为html文件即可,然后复制或者修改其中一个html为index.html文件即可,然后就可以用这个程序做测试。