当前位置:首页 > 通信技术 > 通信技术
[导读] 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文件即可,然后就可以用这个程序做测试。

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

9月10日消息,美国ZEUS(Zettawatt Equivalent Ultrashort laser pulse System)激光设施成功发射了2拍瓦(2千万亿瓦)光束,成为美国当前运行中的最强激光

关键字: 激光 发电

9月10日消息,NVIDIA在演讲中展示了其Blackwell Ultra AI服务器的惊人能力,尤其是在投资回报率(ROI)方面,其表现远超所谓的“免费”GPU。

关键字: NVIDIA AMD

9月10日消息,据媒体报道,瑞士洛桑国际管理发展学院最新发布的《2025年世界人才排名》显示,中国香港排名大幅上升,由去年的第九位跃升至全球第四,创下历来最高位次,位居亚洲之首。

关键字: 科技 AI

9月10日消息,在最近的高盛Communacopia +科技大会上,Intel副总裁John Pitzer透露了Intel在x86和IFS计划方面的一些新细节。

关键字: Intel 处理器

9月10日消息,128GB显存的RTX 5090是没有的,不过128GB显存的AI GPU确实有。

关键字: NVIDIA AMD

方案解析:通过从电视HDMI ARC接口解析出光纤、同轴、I2S、左右声道4种信号,任选其一桥接到蓝牙、WIFI、U段音频发射,再发射到接收端(如耳机、音箱),为无线音频发射提供ARC回传数字音频桥接

关键字: 方案开发 电子方案 纳祥科技

9月9日消息,小米突然辞退王腾,这件事来的很是突然,引因此被挤上了热搜。

关键字: 小米 雷军 王腾

9月9日消息,今日,国际权威市场调研机构英富曼(Omdia)发布《中国AI云市场,1H25》报告。

关键字: AI 人工智能

9月9日消息,AMD发布了其最新的Software Adrenalin驱动版本25.9.1,最大的亮点就是可在支持FSR 3.1的DirectX 12游戏中启用FSR 4。

关键字: AMD Zen6 2nm

9月9日消息,NVIDIA首席财务官Colette Kress在高盛Communacopia+技术大会上发表了讲话。

关键字: NVIDIA AMD
关闭