当前位置:首页 > 通信技术 > 通信技术
[导读] boa服务器是一个小巧高效的web服务器(大小只有60kb),效率高,专为嵌入式应用而开发,可以支持CGI脚本适合各种资源有限的嵌入式应用环境,是一种单任务的web服务器,其对于http的请求采用顺序执行方式来完成,不会调用fork创建新的进程来实现,但是在执行CGI的时候,起采用的是多进程的方式,可以单独为CGI程序fork相应的进程来执行,这种设计方式极大的保证了再嵌入式平台上部署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文件即可,然后就可以用这个程序做测试。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

5月17日消息,据“中国联通研究院”公众号介绍,日前,中国联通研究院、中国联通与华为在浦东金桥成功完成首个5G-A室外规模组网验证。

关键字: 中国联通 华为 5G

这几天我突然发现个事儿, Intel 现在的市值竟然只有 AMD 的一半了!

关键字: AMD Intel

5月17日消息,国产打印品牌奔图打印日前召开发布会,正式发布了中国首台全自主A3激光复印机。

关键字: 奔图 激光复印机

5月15日消息,今日,百度发布公告表示,文心大模型日均处理Tokens文本已达2490亿。

关键字: 百度 汽车 新能源

5月16日消息,据媒体报道,小米集团核心决策团队成员、国际业务部副总裁向征已经离职。

关键字: 小米汽车 新能源

5月15日消息,TikTok创作者也加入战局,集体起诉美国政府。

关键字: TikTok

5月14日消息,兆芯与算能联合SOPHON.TEAM生态,基于自家处理器,构建了一套可高效落地的AI训练、推理一体化整体解决方案,可解决企业部署深度学习应用人力成本高、技术难度大、开发周期长、迭代能力差等难题。

关键字: 国产x86

5月15日消息,谷歌在其2024年I/O开发者大会上宣布了一项名为“AI Overviews(AI概览)”的新搜索体验功能。

关键字: 谷歌 AI 芯片 半导体

5月15日消息,今天上午小米汽车正式官宣:刚刚完成了第10000辆小米SU7的交付。

关键字: 小米SU7

5月15日消息,谷歌在I/O大会上发布了第六代TPU芯片Trillium,并透露能够在明年初用上英伟达最新的Blackwell架构GPU。

关键字: 谷歌 AI 芯片 半导体
关闭
关闭