当前位置:文档之家› 嵌入式BOA服务器文档

嵌入式BOA服务器文档

嵌入式BOA服务器文档
嵌入式BOA服务器文档

基于BOA的嵌入式WEB SERVER的设计

随着网络技术的不断发展,网络现在已无处不在。Linux最大的好处在于其良好的网络功能,因此在该系统中,我们通过设计WEB 服务器,使用户能通过浏览器访问设备上的Web服务器来远程控制现场设备。嵌入式Linux下,系统资源是非常有限的,因此我们选择Web服务器时,要考虑到其资源有限的特点;Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。

现在,多数嵌入式Linux的代码中已经包含boa的源代码,在嵌入式Linux下实现Boa 只需要对Boa做一些简单的配置和修改。这主要通过对boa.conf、boa.c、mime.types等文件进行修改来实现。服务器中主要包括boa和CGI两部分,其中Boa管理着返回客户端的WEB 页面,而CGI控制着客户端和服务器端的信息交换,所以我们可以通过编写相应的CGI程序来实现所需要的功能。Boa服务器的实现主要分为两步,boa服务器的移植和CGI程序的设计。

1 、boa 服务器移植

Boa服务器的移植主要分为以下步骤进行:

(1)首先下载boa源代码,网上有很多关于boa的源码下载网站,官方网址为:https://www.doczj.com/doc/04475854.html,/;

(2)根据目标平台修改boa的配置文件boa.conf,以及相关的源代码文件boa.c,log.c。(3)执行configure生成Makefile,并修改Makefile中CC和CPP等项,改成与目标平台对应的编译工具;

(4)交叉编译源代码,生成可执行文件boa;

(5)拷贝配置文件boa.conf和可执行程序boa到文件系统中。此时就可以在目标板中运行boa程序了。

下面具体介绍一下如何在ARM平台上移植boa服务器:

本系统中采用的boa源码是boa-0.94.13.tar.gz, 将下载的源码拷贝到工作目录解压,

# tar xzf boa-0.94.13.tar.gz

这里注意下系统中需要安装bison,flex等工具,如果在U-BOOT移植中已经在开发主机中安装过这些工具,则可以跳过这一步骤。如果没有,在UBUNTU系统中使用如下命令就可以自动安装:

#sudo apt-get install bison flex

如果不安装这些工具,在执行make生成可执行文件时会出现如下错误

make: yacc:comman not found

make: *** [y.tab.c] error 127

make: lex:comman not found

make: *** [lex.yy.c] error 127

解压完源代码后,我们进入boa目录,boa的所有源代码及编译文件都放在都放在/src下面,进入该目录

#cd /source/boa-0.94.13/src

相关文件的修改:

此时,我们要做的就是对该目录下一些源代码做相应的修改,首先修改compat.h文件, 打开文件找到下面的语句:

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

将其修改成

#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

否则会出现错误:

util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o]

修改log.c源文件,将以下语句注释掉:

if (dup2(error_log, STDERR_FILENO) == -1) {

DIE("unable to dup2 the error log");

}

否则会出现错误:

log.c:73 unable to dup2 the error log:bad file deor

boa.c文件的修改:

注释掉下面两句话:

if (passwdbuf == NULL) {

DIE(”getpwuid”);

}

if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

DIE(”initgroups”);

}

否则会出现错误:boa.c:211 - getpwuid: No such file or directory

注释掉下面语句:

if (setuid(0) != -1) {

DIE(”icky Linux kernel bug!”);

}

否则会出现问题:boa.c:228 - icky Linux kernel bug!: No such file or directory

生成可执行文件BOA:

首先进入src目录,并执行configure文件,生成Makefile文件

#cd /source/boa-0.94.13/src

#./configure

生成完Makefile后,接下来要做的就是对其做相应的修改,因为我们对应的目标平台是ARM,所以我们要查看我们用到的交叉编译器设置是否正确,本实验中所要修改的具体参数为:

修改CC =gcc 为CC =arm-softfloat-linux-gnu-gcc

修改CPP =gcc -E 为CC =arm-softfloat-linux-gnu-gcc -E

在确认以上修改正确后,我们在/src目录下就可以使用make命令来生成我们所需要的可执行文件boa了。

# make

此时会在当前目录下生成一个名为boa的可执行文件,可以通过ls命令查看。

#ls -l boa

-rwxr-xr-x 1 root root 187213 2009-07-11 13:44 boa

可以看到生成的可执行文件有180K,对于嵌入式系统来说,我们要尽可能的缩下其大小,因此,我们可以通过瘦身命令strip来删除其中的多余信息,达到缩下体积的目的。

#arm-softfloat-linux-gnu-strip boa

# ls -l boa

-rwxr-xr-x 1 root root 61052 2009-07-11 13:49 boa

可以看到,boa在瘦身前后的大小差距很大,这对嵌入式系统来说,节省了很大的空间。

Boa的配置

在生成好boa以后,还要对boa的配置文件boa.conf做修改,在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。修改如下:

#vi boa.conf

(1)Group的修改

修改Group nogroup

为Group 0

(2)user的修改

修改User nobody

为User 0

(3)Alias的修改

修改Alias /cgi-bin/ /usr/lib/cgi-bin/

为Alias /cgi-bin/ /www/cgi-bin/

(5)DoucmentRoot的修改

修改DoucmentRoot /var/www

为DoucmentRoot /www

(6)ServerName的设置

修改#ServerName https://www.doczj.com/doc/04475854.html,.here

为ServerName https://www.doczj.com/doc/04475854.html,.here

否则会出现错误“gethostbyname::No such file or directory”

(7)AccessLog修改

修改AccessLog /var/log/boa/access_log

为#AccessLog /var/log/boa/access_log

否则会出现错误提示:“unable to dup2 the error log: Bad file deor”

配置好boa.conf以后,我们将生成的boa以及修改好的boa.conf文件拷贝到文件系统中相应的目录中:

首先在目标板上创建目录/etc/boa并且把boa 和boa.conf拷贝到这个目录下

mkdir /etc/boa

创建HTML文档的主目录/www

mkdir /www

创建CGI脚本所在录/www/cgi-bin

mkdir /www/cgi-bin

以下步骤在ubuntu下进行:

将boa.conf拷贝到开发板根文件系统的/etc/boa下

#cp boa.conf /source/rootfs/etc/boa

将boa拷贝到开发板根文件系统的/etc/boa下

#cp src/boa /source/rootfs/etc/boa

将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下,mime.types的主要功能是控制从网络上发给宿主机端的媒体文件的类型,并且告诉宿主机怎么去处理这些数据。

#cp /etc/mime.types /source/rootfs_hw/etc

这时,我们可以将一个测试网页拷贝到/www目录下,并在开发板上启动boa服务器

/etc/boa/boa

然后在宿主机下,打开浏览器输入开发板的IP地址,就可以看到存放在开发板中的测试主页了,但此时我们点击页面上的按钮时不会执行任何相应,因为现在只是实现了简单的连接,网页并没有相应的CGI程序。在boa 服务器的设计中,最为关键的就是CGI程序的设计,通过CGI程序,就可以实现我们点击页面时所需要的功能。

2 、CGI程序设计

该系统所要实现的功能是让客户端使用浏览器向服务器发送HTTP请求,服务器响应客户端的请求后,并引导到指定的脚本程序,对命令进行解析,将信息交给后台——CGI去处理。CGI解析信息后,向远程设备发出控制信息。设备响应后,返回给CGI控制信息,CGI再将信息解析成变量输出到Web Server上,最后客户端得到WebServer发回的页面消息(HTML),就能得到现场设备的运行状态,实现对现场设备的远程监控。

该系统中设计的BOA服务器的的主要功能如下图所示:

图1 系统功能实现流程图

CGI的程序编写包括两个部分:HTML代码和C代码;CGI程序与Boa Web服务器之间通过环境变量、命令行参数和标准输入等方式进行通信。本设计中采用的表单编码信息通过环境变量QUERY_STRING传递。在编写CGI程序时,需要注意:

◆REQUEST_METHOD

前面介绍过,请求方法有两种:GET和POST。在实验中,我选择GET方法,

如在showsetip()中的代码:

◆环境变量

在选用不同的方法时,所对应的环境变量也不同。选择GET时,所对应的

环境变量是QUERY_STRING,通过调用库函数getenv()来得到环境变量的具体值,即querystring=getenv(QUERY_STRING)。系统功能框架图如下:

3、Boa服务器测试

嵌入式BOA服务器文档

基于BOA的嵌入式WEB SERVER的设计 随着网络技术的不断发展,网络现在已无处不在。Linux最大的好处在于其良好的网络功能,因此在该系统中,我们通过设计WEB 服务器,使用户能通过浏览器访问设备上的Web服务器来远程控制现场设备。嵌入式Linux下,系统资源是非常有限的,因此我们选择Web服务器时,要考虑到其资源有限的特点;Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行,Boa的设计目标是速度和安全。 现在,多数嵌入式Linux的代码中已经包含boa的源代码,在嵌入式Linux下实现Boa 只需要对Boa做一些简单的配置和修改。这主要通过对boa.conf、boa.c、mime.types等文件进行修改来实现。服务器中主要包括boa和CGI两部分,其中Boa管理着返回客户端的WEB 页面,而CGI控制着客户端和服务器端的信息交换,所以我们可以通过编写相应的CGI程序来实现所需要的功能。Boa服务器的实现主要分为两步,boa服务器的移植和CGI程序的设计。 1 、boa 服务器移植 Boa服务器的移植主要分为以下步骤进行: (1)首先下载boa源代码,网上有很多关于boa的源码下载网站,官方网址为:https://www.doczj.com/doc/04475854.html,/; (2)根据目标平台修改boa的配置文件boa.conf,以及相关的源代码文件boa.c,log.c。(3)执行configure生成Makefile,并修改Makefile中CC和CPP等项,改成与目标平台对应的编译工具; (4)交叉编译源代码,生成可执行文件boa; (5)拷贝配置文件boa.conf和可执行程序boa到文件系统中。此时就可以在目标板中运行boa程序了。 下面具体介绍一下如何在ARM平台上移植boa服务器: 本系统中采用的boa源码是boa-0.94.13.tar.gz, 将下载的源码拷贝到工作目录解压, # tar xzf boa-0.94.13.tar.gz 这里注意下系统中需要安装bison,flex等工具,如果在U-BOOT移植中已经在开发主机中安装过这些工具,则可以跳过这一步骤。如果没有,在UBUNTU系统中使用如下命令就可以自动安装: #sudo apt-get install bison flex 如果不安装这些工具,在执行make生成可执行文件时会出现如下错误 make: yacc:comman not found make: *** [y.tab.c] error 127 make: lex:comman not found make: *** [lex.yy.c] error 127 解压完源代码后,我们进入boa目录,boa的所有源代码及编译文件都放在都放在/src下面,进入该目录 #cd /source/boa-0.94.13/src 相关文件的修改:

电子工程师培训课程.doc

课程主题实训内容实训目标Linux开发环境、开发规范培训课时:2天 Unix开发环境Unix系统原理、Unix C开发环境、Unix常用文 件目录管理命令与 网络命令 能使用并管理Unix操作系统,建立并熟 悉Unix /Linux C开发环境。 嵌入式开发语言课时: 11天 标准C开发数据类型,控制语句,自定义数据类型,模块化程 序设计,指针 熟练掌握c基础语法,函数的编写和调用 标准C库C的常用标准库函数errno.h math.h stdlib.h stdio.h等 熟练掌握C标准库函数的调用与灵活应用 数据结构与算法链表,栈,队列,哈希表,二叉树等容器实现常 用搜索算法与 排序算法实现 掌握各种基本数据结构的实现,了解常用 算法,并能在软件开发中灵活应用。 阶段项目基本信息管理系统能独立使用C语言开发应用。 培养良好的编码风格与编码技巧。 Linux应用开发课时: 20天 Linux内核开发Unix/Linux文件服务,IO,内存管理,进程,IPC, 线程,线程同步 掌握Unix/Linux下的基本的开发技术, 了解Linux内核原理。 Linux QT开发QT类结构,常见QT组件,信号与槽,QT设计器, QT2D与3D 掌握QT类库的使用,能开发Linux下的 用户界面。 Linux网络开发Linux下Socket编程,UDP与TCP,TCP下各种服 务器模式,PCAP数 据抓包处理,ARP、IP、ICMP、TCP、UDP协议。 掌握Linux下网络编程技术,能开发网络 通信应用与网络安全应用软件。 Oracle SQL与Pro*C编程DQL语句,DML语句,DDL语句,Oracle函数,视 图,索引,序列等。宿主变量,指示变量,游标 操作,事务处理,SQL操作与动态SQL, 异常处理,SQL与Oracle通信区。 掌握数据库SQL语句。 能进行数据库查询与操作。 能进行SQL数据库编程。 阶段项目网络爬虫:简易搜索引擎的实现掌握基本的应用软件开发能力。掌握程序的分析设计思路。 独立完成简单应用软件的编码。 嵌入式ARM驱动开发课时: 18天 ARM嵌入式开发环境ARM体系结构(包括指令分类,寻址方式、指 令集、存储系统、异常中断处理),ARM嵌入 式开发板硬件设计原理和基本硬件设计流 程。嵌入式Linux基本概念,ARM板的资源 分配,启动模式,Bootloader工作原理,uboot 的烧写,内核的烧写,根文件系统的烧写, uboot的使用指令,嵌入式Linux开发环境的 搭建。 了解ARM体系结构与设计原理,熟练掌 握各种外设的工作原理与驱动机制。 理解bootloader的工作原理, 能熟练使用uboot指令, 掌握s3c6410开发板的uboot、内核、 根文件系统的烧写 能搭建嵌入式Linux开发环境

ARM嵌入式Web服务器Boa的软、硬件设计 毕业设计

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

This paper has mainly developed the software hardware design and realization of the embedded Web server Boa based on ARM. And the core of the hardware part is S3C2410X microprocessor produced by Samsung . The final achievement is the embedded webserver which can remote visit. Boa is a single-tasking HTTP server. That means that unlike traditional webservers, it does not fork for each incoming connection, nor does it fork many copies of itself to handle multiple connections. It internally multiplexes all of the ongoing HTTP connections. And forks only for CGI programs, this is very important to embedded system. At the same time, it also has the function of automatic directory generation、automatic file gunzipping and so on. So Boa is of highly value in the embedded system application. Keywords: ARM;Linux;Embedded Web server;CGI

基于Boa服务器的厨房信息Web监控系统

图2 控制端结构框图 基于Boa 服务器的厨房信息Web 监控系统 叶 丹(四川警安职业学院计算机系,四川绵竹618209) Kitchen Information Monitor System Based on Boa Web Server 本文设计的一种家用厨房信息Web 监控系统可以通过ARM 嵌入式系统动态Web 技术对家庭厨房的环境信息进行网 络远程监控。该监控系统主要包括信息采集端、控制端、网络传输和监视端四个模块,实现厨房环境信息从前端采集后送入控制端进行处理,再交由网络传输端传输,最后输出到监视端进行远程监控的一整套数字化监控流程。厨房信息Web 监控系统工作流程示意图如图1所示。 图1系统流程框图 1信息采集端设计 厨房信息Web 监控系统的前端为信息采集端,用以完成对 厨房环境相关信息的采集,包括温度、可燃气体浓度、现场视频信息的采集。厨房环境是复杂多变的,一些敏感的装置和材料容易因高温或泄漏等不稳定因素引发安全事故,几个关键的监控点集中在灶台、管道、液化气罐、进出口处等。信息采集端对环境信息的采集主要通过传感器和摄像头完成,采集到的信息送到控制端进行处理。 系统选用无固定装置式铂热电阻WZP-130完成对厨房内灶台上方蒸汽温度、液化气罐或天然气管道表面温度、厨房电线布控集中区域温度等厨房内几个关键部位温度的测量。WZP- 130由感温元件、不锈钢外保护管、接线盒以及各种用途的固定 装置组成,可以同时输出两组相同电阻信号供使用。它是利用铂丝在温度变化时自身电阻也随着变化的特性来测量温度的,不锈钢保护管不但具有抗腐蚀性能,而且具有足够的机械强度,保证铂热电阻能安全地使用在各种场合。WZP-130测温范围为- 200~500℃,热响应时间≤4.5s 。WZP-130对温度进行测量后 实时送入控制端进行处理,不同的部位设定不同的温度监控阈值,若超过设定的阈值则进行远程报警处理,在远程监控端可以接收到报警提示。 厨房里的可燃气体通常是从管道里泄漏出来的天然气或者是液化气,其主要成分为甲烷。系统选用气体传感器GS-B2完成对甲烷的检测,该类型气体传感器用于便携式仪表测试甲烷,具有体积小,功耗低,稳定性好,灵敏度高的特点,并且具有较好的可复用性。GS-B2传感器的工作温度是-10°C 到45°C ,湿度≤90%RH ,检测范围是10到5000PPM 。若检测出气体泄漏,则将报警信号送入控制端处理后发送到远程监控端。 信息采集端的视频信息采集使用一个USB 摄像头实现,该摄像头可以提供640×480分辨率的图像,采集后提供给控制端经压缩输出到网络进行传输。Linux 操作系统提供了一组用以图像输入的API 函数V4L ,可以实现设备属性和图像信息的设置、图像区域和帧信息的操作、nmap 方式实现图像截取等。因此,只需要在操作系统中通过V4L 配置USB 摄像头的设备文件就可以实现对厨房环境现场信息的实时采集。实时采集的视频信息经控制端Web 服务器交由网络传输端从Internet 发送出去,在监视端浏览器使用CGI 程序实时显示。 2控制端设计 控制模块主要用于处理前端信息采集模块送回的信息,以 及进行各种通信接口的控制。由于ARM9系列微控制器在网络控制方面有着优越的性能,并且片内资源和接口丰富,功耗控制稳定性能也能满足一般工业产品的需求,更重要的是Linux 操作系统和Boa 服务器对ARM9有着非常好的支持,因此论文采用ARM9微控制器构建控制模块。控制模块采用三星公司基于 ARM920T 嵌入式处理器核的S3C2410A 微控制器。 控制端以控制模块为核心,扩展出以太网接口、UART 串口和USB 接口,这些接口完成与外部设备的通信和连接。为了增加控制端的人机交互可操作度,还需要扩展键盘和LCD 显示模块。为了便于调试,还需要扩展JTAG 模块。控制端的结构框图如图 2所示。 对ARM 系列处理器支持良好,且具有较为 摘 要 设计了基于ARM 的嵌入式技术和Boa 服务器实现的家用厨房信息Web 监控系统,该系统包括前端厨房环境信息采集、控制端、网络传输和远程监控四个部分,利用因特网动态Web 技术实现远程对家庭厨房安全状态的监控。 关键词:Boa ,厨房,监控 Abstract Kitchen Information Monitor System for family used Based on ARM embedded techniques and Boa Web Server was designed.This system include four parts just as fore -end kitchen environment information collecting unit,control unit,net transmission unit and remote monitor unit,and used internet dynamic Web techniques to guard and control the safety condi-tion of kitchen. Keywords :Boa,kitchen,monitor 基于Boa 服务器的厨房信息Web 监控系统 80

WIFI移植全过程

基于S3C S3C242424440的SDIO 卡WIFI 移植移植 1112/1112/yangjun yangjun yangjun 环境:Ubuntu10.10 LINUX2.26.38 交叉编译工具链:arm-linux-gcc 一、SDIO 设备驱动移植 1、 修改SD 卡驱动使内核支持SD 卡 修改文件:arch/arm/mach-s3c2440/mach-smdk2440.c 添加所需头文件: #include #include #include //增加平台设备对sd 卡的支持 static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_ohci, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &s3c_device_sdi, }; //添加平台数据dev->platform_data static struct s3c24xx_mci_pdata smdk2440_mmc_cfg __initdata={ .gpio_detect = S3C2410_GPG(8),//此处保留为使用中断号8,看芯片手册 .set_power = NULL, .ocr_avail = MMC_VDD_32_33, }; 2、 在smdk2440_machine_init 中添加 s3c24xx_mci_set_platdata(&smdk2440_mmc_cfg); 二、配置内核以支持Marvel 无线WIFI 选择38内核中的wlan marwell sdio 模块

web-server环境搭建

Web server环境搭建 【实验目的】 1.了解web server的工作原理; 2.移植boa web server程序。 【实验设备】 实 验 设 备 数 量 备 注 EMM2M网关板 1 DC5V3A电源 1 串口线 1 Ubuntu10.10 Linux虚拟机 1 【实验原理】 Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。 EMM2M网关板移植BOA,启动boa服务后就相当于一台web 服务器,可以将做好的网页放在上面,就可以供其他机器进行访问。 【实验步骤】 1.下载BOA服务器软件 第一步:打开浏览器,输入https://www.doczj.com/doc/04475854.html,网址下载boa服务器软件

目前最新版本为0.94.13点击上图红色区域连接,就可下载boa-0.94.13.tar.gz文件。 第二步:将下载到的文件拷贝到Ubuntu10.10虚拟机中,解压后进入boa-0.94.13目录。 第三步:进入src目录,在终端输入./configure命令进行配置,配置完成后会生产Makefile文件 第四步:打开Makefile文件修改交叉编译器名称为arm-linux- 修改完成后保存退出。

第五步:安装flex,bison.没安装的话编译的时候会报找不到yacc的错误。 第六步:打开compat.h文件,修改后的内容为红色框内所示。 修改完成后保存退出。 第七步 :在终端输入make进行编译,编译完成后会生产boa可执行文件 使用arm-linux-strip工具可以对boa文件进行瘦身,瘦身后的文件会比远文件小很多。 此时boa就编译成功。 第八步:在开发板/etc/目录下面建立boa目录。在boa目录下面创建boa.conf文件,文件内容如下

boa在ARM上的移植方法

Boa服务器ARM板上的移植方法 一、boa服务器移植前的准备 网上下载boa服务器tar源码包 二、boa服务器配置流程 2.1.解压下载来的tar包 在linux终端命令行输入:tar –xf boa_xxx.tar 2.2. 配置boa选项 1. 修改boa.conf生效的目录 cd /src目录下修改defines.h文件 修改第30行,将默认的路径为/usr/boa 改为/home/boa 2.修改src/boa.c 注释掉226行的语句: if (setuid(0) !=-1) { DIE(”icky Linux kernel bug!”); } 即修改为: #if 0 if(setuid(0) != -1) { DIE(”icky Linux kernel bug!”); } #endif 否则运行boa时会提示 boa.c:226 - icky Linux kernel bug!: No suchfile or directory错误 3. 修改boa.conf文件 打开boa.conf文件:vim boa.conf 将94行前面的#去掉 2.3. 编译配置好的boa 1. 切换到boa源码包src下运行configure 在linux终端命令行输入:./configure 2. 修改Makefile文件 将31行的 CC = gcc 修改为:CC=arm-none-linux-gnueabi-gcc 将32行的 CPP=gcc –E 修改为:CPP=arm-none-linux-gnueabi-g++ -E

3. 编译boa源码包 在linux终端命令行输入:make –j2 等待一段时间再输入:echo $? (如果显示为0说明编译成功,反之失败) 在当前目录下生成一个boa的可执行程序,./boa运行即可, 在命令行输入:ps –e (能看到boa的进程即说明boa正常工作移植成功) 将boa可执行文件拷贝到/etc/bin/下 4. 移植完成一大半 注:有些编译器会提示以下错误,按相应方法解决即可. 出现错误: util.c: 100: 1: pasting “t”and “->”does not give a valid preprocessing token make: [util.o] Error1 解决方法: 修改compat.h中122行的 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为: #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff 修改compat.h中126行的 #define TIMEZONE(foo) foo##->tm_zone 为: #define TIMEZONE(foo) foo->tm_zone 三、boa服务器boa.conf文件的设置 1.ARM板上建立/usr/boa目录, 并复制boa.conf到/usr/boa目录下 #mkdir /usr/boa #cp boa.conf /usr/boa 2.访问端口号设置 大概25左右:Port 80,可以设定我们访问网页时的端口号默认为80—访问时无需指定假如改变了此端口号为8080,必须以下列格式访问: http://192.168.0.250:8080一般在同一个电脑上运行多个boa服务器时可采用此 方法我们这里保持默认即可 3. 修改访问权限: 修改User nobody 为user 0 修改Group nogroup 为group 0 4. 设定日志目录:boa日志有两部分,Errorlog 和AccessLog 默认为/var/log/boa/error_log和/var/log/boa/access_log两个文件。 所以我们统一修改为: ErrorLog /usr/boa/error_log AccessLog /usr/boa/access_log (注意:这里/usr/boa目录必须为可写,否则会出项错误:log.c:73 –Unable to dup2 the error log: Bad file r.) 5. 设置html文件目录:

boa_流程分析

boa 流程分析 默认分类2010-01-19 19:10:38 阅读291 评论0 字号:大中小订阅 引言 随着企业安全意识的增强以及现代化管理水平的提高,对设备的远程监控在工业控制系统中得到了越来越广泛的应用。近年来,Web技术广泛普及,把Web 技术应用在这种监控系统中,可以让操作者通过浏览器维护和管理监测点,查看监测数据。同时,监测中心的服务程序也可以很方便地通过Web把监测数据取回来,进行进一步的处理,十分方便。 μClinux是应用于微控制领域的一种嵌入式Linux操作系统,它源码开放,移植性好,支持多种硬件平台和几乎所有常见网络通信协议,支持文件系统丰富,是一个功能完整的嵌入式操作系统。并且有大量优秀的开放源代码的应用软件和开发工具可用,因此,采用μClinux作为操作平台,使用Web技术进行远程在线监测系统的开发。 1 嵌入式Web服务器 为了能够通过Web来维护和管理远程在线监控系统,必须选择一个恰当的Web服务器,不但要求所选择的Web服务器支持动态Web技术,也要求它能够在嵌入式系统中稳定地工作。 1.1 Web服务器原理和功能 嵌入式Web服务器以TCP/IP协议栈为基础构建,需要实现HTTP,TCP和UDP等协议。任何一个客户机,都可以通过HTTP协议与嵌入式Web Server建立连接。嵌入式Web服务器在Web浏览器和设备之间提供了统一的GUI接口,使得客户端可以像在本地一样透明地监控管理设备状况。 嵌入式Web服务器的主要功能有:响应多个客户的实时HTTP请求,并为每个客户建立连接,这是嵌入式Web服务器的首要功能;对设备的实时监控管理,参数的在线查看与配置等;对设备访问的安全控制机制,包括SSL、用户口令等;实现设备的故障智能报警。 1.2 Boa的特点 在μClinux中常用的Web服务器有:Boa,thttpd,httpd,其中httpd只支持静态页面,显然不适合高级应用,thttpd和Boa所提供的功能基本一样,但是thttpd在运行过程中所需要的资源要远大于Boa,因此使用Boa作为该嵌入式系统的Web服务器。系统的软件开发模型选用B/S模型。 Boa是一个高性能的单任务型Web服务器,可以运行在几乎所有的类Unix 的平台上,Boa支持认证,支持CGI,功能比较全,占用资源也少,非常适合于用在资源有限的嵌入式系统中,目前Boa已经以源码的形式包含在μClinux的发行包中。 2 Boa源码分析 在此通过以下对Boa的源代码进行简单的分析,来提出解决避免恶意攻击的安全解决方案。 2.1 Boa工作流程 图1是Boa工作流程图。Boa从新到达的套接字获得HTTP请求(由一个request结构来存储),并将其保存在队列当中。首先,get_request()将从套接字获得的数据全部保存在request→header_line中,然后调用process_request()来处理在队列中的每一个请求。根据request结构中status所表示的不同状态,将进行不同的处理。如果这个请求符合HTTP协议,则会调用process_option_Iine()将

嵌入式的WEB服务器PHP移植

基于嵌入式的WEB服务器 2009嵌入式作业(4)计应1班王延龙嵌入式的WEB服务器php移植 开发板:PXA270-RP(Linux2.6.9) 宿主机:Centos6.0(linux2.6.32) 交叉编译器:arm-linux-gcc 3.4.6 1、下载php-5.2.17.tar.bz2 2、解压到/vptemp #tar-jxv-f php-5.2.17.tar.bz2-C/vptemp 3、编译 #cd/vptemp/php-5.2.17 #CC=arm-linux-gcc./configure--host=arm-linux--prefix=/opt/php5--disable-all--enable-pdo --with-sqlite3--with-sqlite--with-pdo-sqlite--with-zlib--without-iconv 在做这个配置的时候出点问题,不知道为什么CC=arm-linux-gcc就是不对,配置出来的Makefile里面还是gcc,libtool也完全不对,气死了。重启机子又折腾了半天,竟然不知道怎么弄的又可以起作用了。 #make make的时候出现:undefined reference to dlopen、undefined reference to dlclose,解决方法:在makefile中EXTRA_LIBS之后加上-ldl 4、安装 #make install 将PHP源码包中php.ini-dist文件复制到/opt/php5/lib下并改名为php.ini,因为指定了prefix,PHP缺省会去/opt/php5/lib下找php.ini 5、下载到Tiny6410 #cd/opt #tar-jcv-f php5-e.tar.bz2php5

基于ARM9的嵌入式3G无线视频监控系统设计

基于ARM9的嵌入式3G无线视频监控系统设计 2011-02-21 23:51:14 来源:互联网 国内外市场上主要推出的是数字控制的模拟视频监控和数字视频监控两类产品。前者的技术发展已经非常成熟,产品性能稳定,在实际工程中得到了广泛应用。 后者是新近崛起的以计算机技术及图像视频压缩技术为核心的新型视频监控系统,该系统在解决模拟视频监控系统的部分弊端的基础上迅速崛起。在互联网的普遍推广和网络带宽逐渐提高的背景下,视频监控技术飞速发展,出现了集多媒体技术、网络通信技术、嵌入式技术于一体的嵌入式网络视频监控系统。 目前国内嵌入式视频监控系统的研究有了很大的发展,但是国内对嵌入式无线视频监控系统的研究还比较少。本文介绍了自主开发的基于ARM 的嵌入式无线视频采集系统设计方案。该方案采用S3C2410 嵌入式处理器和ARMLinux 操作系统,利用通过自行开发的视频服务器软件,通过3G无线上网卡完成客户端与视频服务器的通信。介绍了系统的硬件结构、服务器端软件的总体结构、驱动程序的构建、图像的采集和压缩以及传输模块的设计,并进行了测试。实验结果表明,系统采用H.264 编码技术在保证视频传输质量的同时具有良好的带宽适应能力。 1 系统总体结构 本系统由监控现场摄像头、嵌入式视频服务器、客户端三部分组成。监控现场的摄像头实现图像的采集,并把采集的图像信息通过内部总线传送给嵌入式视频服务器。嵌入式远程视频监控系统是一个基于S3C2410处理器、H.264 压缩、Web 服务器和Linux 操作系统的嵌入式系统,它的主要功能是对摄像头采集到的图像进行H.264 压缩编码,并对编码后的图像通过3G 无线网络进行传输。客户端主要完成图像的接收和解压缩,用户可以通过Web 浏览器访问嵌入式视频服务器来观看摄像头采集到的图像,从而实现远程视频监控。嵌入式远程视频监控系统总体结构如图 1 所示。 图1 嵌入式远程视频监控系统总体结构 2 系统硬件结构 系统硬件由图像传感器MI360 、3G 无线模块MC8630 、图像压缩芯片ZC0301 、微处理器芯片S3C2410 、以太网控制芯片、SDRAM 等芯片组成。S3C2410 具有低功耗、精简而出色的全静态设计等特点,具备MMU 存储器管理功能,拥有独立的16 KB 指令和16 KB 数据缓存,在高性能和低功耗特性方面提供了可靠的性能。无线模块选用中兴3G 模块MC8630,数据速率为前向:3.1 Mb/smax,反向:1.8 Mb/s max 。 为了降低成本,简化设计,本方案选bn用中星微的ZC0301 作为视频压缩编码芯片,Vimicro ZC0301 主要由系统控制、图像信号处理、次取样和水平扫描、JPEG 编码器和USB 设备控制五大功能模块组成。CMOS 图像传感器选择美光的MI360 ,它采用VGA 标准

基于ARM的嵌入式Web服务器设计

题目:基于ARM的嵌入式Web服务器设计与实现 学号:1308010139 姓名:吴明川 班级:1308010139 专业:计算机科学与技术 课程老师:孔军 二零一六年五月

摘要 随着计算机、网络通信和Internet 技术的飞速发展和不断进步,嵌入式系统在家庭和工业应用越来越广泛。如何将嵌入式系统和工业控制系统接入Internet,综合利用嵌入式系统资源,实现嵌入式系统的远程管理和控制,已成为倍受关注的研究课题,而实现嵌入式系统的网络化则成为嵌入式系统的发展趋势。 网络通信时,应用程序使用C/S(客户/服务器)模式进行信息交互。传统的服务器程序一般运行在大型的拥有高级操作系统的服务器的计算机上,这样服务器软件需要强大的硬件和系统软件支持。嵌入式网络服务器是利用嵌入式系统实现服务器的软件和硬件功能,是嵌入式技术和网络技术相结合的产物。与传统服务器相比,嵌入式Web服务器具有结构简单、体积小、可靠性强以及方便灵活等特点。这些让它具有很大的发展潜力。另一方面,嵌入式Web服务器与传统的web服务器相比,也受到一些限制。传统的Web服务器主要用于处理较大的客户量的同时并发访问,硬件方面有强大的处理器和内存支持,软件方面有商业数据库支持,而嵌入式Web服务器的处理能力和存储容量都有限,这就要求嵌入式Web服务器在设计过程中需要尽量合理利用资源。 将嵌入式技术与Web 技术相结合,已成为目前嵌入式系统的一个重要发展方向和必然趋势。利用源代码开放的uClinux 为操作系统平台,实现了以ARM 微处理器为核心的嵌入式Web 服务器,在分析了嵌入式Web 服务器的体系结构后,给出了系统的硬件结构组成和软件设计。对Web 服务器的测试结果表明,该服务器运行稳定、控制方便,将在智能家居、远程数据采集、工业控制等领域有着广泛的应用前景。 关键词:网络通信;嵌入式系统;ARM处理器;uClinux;Boa服务器;

计算机基础 习题参考答案

习题一 一、用适当内容填空 1. 【机器】语言是计算机唯一能够识别并直接执行的语言。 2. 标准ASCⅡ字符集总共有【128】个编码。 3. 在计算机内用【2】个字节的二进制数码代表一个汉字。 4. 第一台电子计算机ENIAC诞生于【1946】年。 5. 对存储器而言有两种基本操作:【读操作】和【写操作】。 6. 【多媒体】技术是处理文字、声音、图形、图像和影像等的综合性技术。 7. 执行一条指令的时间称为机器周期,机器周期分为【取指令】周期和【执行指令】周期。 8. 用于传送存储器单元地址或输入/输出接口地址信息的总线称为【地址总线】。 9. 用计算机高级语言编写的程序,通常称为【源程序】。 10. 计算机软件系统由【系统软件】和【应用软件】两部分组成。 11. 八进制数整数(从右数)第三位的位权是【64】。 12. 二进制数10110转换为十进制数是【22】。 13. 一个指令规定了计算机能够执行一个基本操作,它的组成包括【操作码】和【地址码】。 14. 对于R进制数来说,其基数(能使用的数字符号个数)中最大数是【R-1】。 15. 3位二进制数可以表示【8】种状态。 16. 在计算机内部,数字和符号都用【二进制】代码表示。 17. 第三代电子计算机采用的电子器件是【中小规模集成电路】。 18. 按相应的顺序排列、使计算机能执行某种任务的指令集合是【程序】。 19. 操作系统是一种【系统】软件,它是【用户】和【计算机】的接口。 20. 计算机内存的存取速度比外存储器【快】。 21. 计算机硬件中最核心的部件是【CPU(中央处理器)】。 22. 计算机由【控制器】、【运算器】、【存储器】、【输入设备】和【输出设备】五部分组成,其中【控制器】和【运算器】组成CPU。 23. 计算机在工作时,内存储器用来存储【现行程序的指令和数据】。 24. KB、MB、GB都是存储容量的单位,1GB=【1024×1024】KB。 25. 计算机系统软件中的核心软件是【操作系统】。 26. 计算机的主要技术指标有【字长】、【主频】、【运算速度】、【存储容量】和【存储周期】。 27. 计算机工作时,有两种信息在执行指令过程中流动:【数据流】和【控制流】。 28. 西文字符编码采用【ASCII】码,即美国国家信息交换标准字符码。 29. 一个存储单元(字节)由【八】位二进制位组成。 30. 对计算机的基本结构,冯·诺依曼提出【硬件五大基本功能模块】、【采用二进制】和【存储程序控制】三个思想。 31. 使用【高级】语言编写的程序具有通用性和可移植性。 32. 在具有多媒体功能的计算机系统中,常用的CD-ROM是【只读型光盘】。 33. 输入设备的作用是从外界将数据、命令输入到计算机【内存】中,而输出设备的作用是将操作结果转换成外界能使用的数字、文字、图形和声音等。 34. 汉字编码包括汉字输入码、国标码、【汉字内码】和汉字字型码几方面内容。

Ubuntu 16的boa web服务器搭建

在VMware上利用Ubuntu 16.04.LTS搭建Boa web服务器 作为一个初学的菜鸟,第一次搭建web服务器,搭的还是最为简单的boa服务器,在网上是各种找资料啊,参考了如CSDN博客、Linux公社、博客园等诸多有名的网站,用了小半周才勉强弄出来,许多地方其实还是不太理解,只是用网上的方法搭建出来,结合自己搭建的过程,写了这么一篇文档,还希望各位大神老师批评指正,下面就是我自己的一个搭建过程。 一、在虚拟机上安装Ubuntu16 Ubuntu16的百度云连接https://https://www.doczj.com/doc/04475854.html,/s/1o87P78Q 运行VMware,点击创建新的虚拟机,选择“典型”,点击“下一步” 选择“稍后安装操作系统”,点击“下一步” 客户机操作系统选择“Linux”,版本选择“Ubuntu 64位”,点击“下一步” 填写虚拟机名称,选择保存位置,点击“下一步” 点击“下一步”,点击“完成” 此时会出现一个新的页面,页面名称就是虚拟机名称 点击“编辑虚拟机设备”开始对虚拟机硬件设备进行更改,修改网络配适器,选择自定义(u):特定虚拟网络,下面选择VMnet8(NAT模式),点击“确定” 在CD/DVD选项中选择“使用ISO映像文件”,通过储存好的路径打开ISO映像文件,点击“确定” 点击开启此虚拟机,此时可能会出现对话框说虚拟机版本不兼容,这时需要重新启动电脑,比如我的电脑本身装的为windows7 则应该重新启动windows7,按esc,然后按F10进入BIOS 系统选择“系统设置” 用左右键选择“处理器虚拟化技术”按回车键选择“启用”,按回车键,按F10保存并退出。(每个人电脑不一样,依据自己的电脑进行改变)

web服务器Boa移植手册

web服务器Boa移植手册 说明: 交叉编译器版本: arm-linux-gcc 4.1.2 操作系统平台: Linux Red Hat 9.0 开发板平台: arm TX2440A Boa版本: boa-0.94.13 手册中字体颜色的约定: 修改的代码用红色字体 添加的大段代码用蓝色字体 执行的命令用红色字体,前面加 # 在终端上打印出的信息用紫色字体 出现的错误信息用绿色字体 说明的文字用红色粗体 需要修改的文件加灰色底纹

Boa服务器的移植可分成两部分,一个是在x86平台上移植,即在虚拟机的linux下,另一个是在arm平台上移植,即在开发板上的linux下,本手册的前四步,都是在虚拟机上做移植,第五步是移植到发开板上。 一、编译boa程序 1、https://www.doczj.com/doc/04475854.html,下载boa-0.94.13.tar.gz。 2、解压 3、#./configure 4、#make 编译会出错: util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1 解决方法,修改compat.h中的 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 为: #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff 二、修改配置文件boa.conf 1、建立/etc/boa目录, 并复制boa.conf到/etc/boa目录下,并按照以下步骤进行修改。 2、修改访问权限:修改User nobody 为User 0,修改Group nogroup为Group 0。 3、设定日志目录:boa日志有两部分,Errorlog和AccessLog,一般情况下为/var/log/boa/error_log 和/var/log/boa/access_log两个文件。所以根据自己的情况情况设置日志目录:ErrorLog /var/log/boa/error_log AccessLog /var/log/boa/access_log 注意:这里/var/log/boa目录必须为可写,否则会出现错误:log.c:73 – Unable to dup2 the error log: Bad file r. 在启动脚本里将var挂载成ramfs: mount –n –t ramfs ramfs /var 4. 设置html文件目录: DocumentRoot /var/www 5. 设置默认首页: DirectoryIndex index.html 6. 设置cgi脚本目录: 将 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin 修改为 ScriptAlias /cgi-bin/ /var/www/cgi-bin 这些目录可以自己修改,但是要和网页存放的目录一致。

2410下boa web服务器移植

2011.1 移植过程参考网上文章,遇到诸多问题,最后在如下转载的帖中看到相同的,参考修改后移植成功。没有挂在NFS做为文件系统,所以其中的NFS中的文件操作是在对应的文件系统中,过程类似 boa成功移植到S3C2410开发板上 一:下载源码:https://www.doczj.com/doc/04475854.html,/ [root@localhost ~]# cd /usr/src [root@localhost src]# tar zxvf boa-0.94.13.tar.tar [root@localhost src]# cd boa-0.94.13 [root@localhost boa-0.94.13]# cd src [root@localhost src]# ./configure 二:编译前修改的文件: 1. 修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径: CC=/usr/local/arm/ 2.95.3/bin/arm-linux-gcc CPP=/usr/local/arm/2.95.3/bin/arm-linux-gcc –E 保存退出。 2. 修改编译方式: LDFLAGS = -g –static 注: 使用静态编译可以让目标文件自动的包含所需要的 库文件,而动态编译需要手工拷贝库文件。 3.修改/src/defines.h文件: #define SERVER_ROOT "/etc/boa" 4 修改boa-0.94/src/ util.c文件 修改char *get_commonlog_time(void)函数。 time_offset = 0; 5. 修改src/config.c:加Current_uid=1 6. 修改compat.h:把第120 行的 #define TIMEZONE_OFFSET(foo)foo##->tm_gmtoff 修改为: #define TIMEZONE_OFFSET(foo)foo->tm_gmtoff 其中3,4,5,6项我用的版本不用修改不会出错

boa搭建Web服务器详细教程

摘要:在详细介绍一种嵌入式Web服务器BOA的实现与配置方法的基础上,以一个Web 在线远程监控GPIO(通用输入/输出)的程序为实例,介绍嵌入式Linux系统下CPU程序设计技术。 关键词:嵌入式系统Linux BOA CGI GPIO 1 概述 随着互联网应用的普及,越来越多的信息化产品需要接入互联网通过Web页面进行远程访问。嵌入式Web系统提供了一种经济、实用的互联网嵌入式接入方案。这里结合一种嵌入式Web Server BOA来介绍嵌入式Linux系统下的CGI程序设计技术。 2 Web Server BOA的实现与配置 2.1 uClinux下,主要有三个Web Server:HTTPD、THTTPD和BOA。HTTPD是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI。THTTPD和BOA都支持认证、CGI等,功能都比较全。BOA是一个单任务的小型HTTP服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。目前的uClinux的代码中已经包含BOA的源代码。在uClinux下实现BOA,只需要对BOA做一些配置和修改。以下是配置的过程。 (1)编译BOA到内核 首先,需要把BOA编译到内核,即执行make menuconfig,在应用程序选单中network application项下面选择boa。该操作需要重新编译内核。 (2)编制配置文件boa.conf 在Linux操作系统下,应用程序的配置都是以配置文件的形式提供的,一般都是放在目标板/etc/目录下或者/etc/config目录下。但boa的配置文件boa.cont一般都旋转在目标板/home/httpd/目录下。 例如,一个典型的boa.conf文件格式如下: ServerName Samsung-ARM DocumentRoot/home/httpd ScriptAlias/cgi-bin/home/httpd/cgi-bin/ ScriptAlias/index.html/home/httpd/index.html 它指定了HTML页面必须放到/home/httpd目录下,cgi外部扩展程序必须放到/home/httpd/cgi-bin目录下。

相关主题
文本预览
相关文档 最新文档