boa 服务器移植到arm

boa 服务器移植到arm
boa 服务器移植到arm

BOA移植详解+cgi

一、Boa程序的移植

1、下载Boa源码

下载地址:

https://www.360docs.net/doc/4313731792.html,/

目前最新发行版本:0.94.13(几年没更新版本了)

下载boa-0.94.13.tar.gz,

解压:

[root@Localhost source]$tar xzf boa-0.94.13.tar.gz

2、生成Makefile文件

进入boa-0.94.13,直接运行src/configure文件

[root@Localhost src]$./configure

3、修改Makefile文件

把arm-linux-gcc加入到PATH路径信息中

CROSS=arm-linux-

CC=$(CROSS)gcc

CPP=$(CROSS)gcc-E

#CC=gcc

#CPP=gcc-E

arm-linux-gcc:installation problem,cannot exec`cpp0':?????????

arm-linux-gcc:installation problem,cannot exec`cpp0':?????????

arm-linux-gcc:installation problem,cannot exec`cc1':?????????

arm-linux-gcc:installation problem,cannot exec`cpp0':No such file or directory

解决的办法,把arm-linux-gcc安装在他的默认目录。

2.95.3/usr/local/arm/2.95.3/bin/

(注意:必须用cross-2.95.3,如使用3.4.1、4.1.1等等会出错或x86gcc或mipsel-linux-gcc都会报如下的错误,修改后错误不再出现)

gcc-g-O2-pipe-Wall-I.-c-o util.o util.c

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

make:***[util.o]Error1

解决方法:

修改src/compat.h

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

修改成

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

4、交叉编译

[root@Localhost src]$make

5、去除调试信息,减小体积,大约能减小一半还多。(可选)

[root@Localhost src]$arm-linux-strip boa

6、将编译好的程序放入根文件系统的/bin目录下。

二、配置Boa(以下部分未亲自测试,文字来源于转载博客)

Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。

[root@Localhost src]$cd../..

[root@Localhost source]$cd../nfs/rootfs/etc/

[root@Localhost etc]$mkdir boa

[root@Localhost etc]$chmod777boa/

[root@Localhost etc]$cd boa

[root@Localhost boa]$kwrite boa.conf

1、Group的修改

修改Group nogroup

为Group user(开发板上有的组)

修改User nobody

为User boa(user组中的一个成员)

根据你的开发板的情况设定。一定要存在的组和用户。

以下是我在开发板上的操作:

[root@~]#adduser-g user boa

Changing password for boa

Enter the new password(minimum of5,maximum of8characters)

Please use a combination of upper and lower case letters and numbers.

Enter new password:

Bad password:too short.

Warning:weak password(continuing).

Re-enter new password:

passwd[820]:password for`boa'changed by user`root'

Password changed.

[root@~]#

2、ScriptAlias的修改

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

为ScriptAlias/cgi-bin//var/www/cgi-bin/

这是在设置CGI的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。

3、ServerName的设置

修改#ServerName

https://www.360docs.net/doc/4313731792.html,.here

为ServerName

https://www.360docs.net/doc/4313731792.html,.here

注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。你也可以设置为你自己想要的名字。比如我设置为:ServerName tekkaman2440

此外,还需要:

将mime.types文件复制/etc目录下,通常可以从linux主机的/etc目录下直接复制即可。

(以下配置和boa.conf的配置有关)

创建日志文件所在目录/var/log/boa

创建HTML文档的主目录/var/www

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

[root@Localhost log]$mkdir-m777boa

[root@Localhost log]$cd..

[root@Localhost var]$mkdir-m777www

[root@Localhost var]$mkdir-m777www/cgi-bin

[root@Localhost var]$cd..

[root@Localhost rootfs]$cp/etc/mime.types etc/

三、运行Boa

开发板操作:

[root@~]#boa

如果发现boa没有运行,则可以在开发板的/var/log/boa/error_log文件中找原因。

比如端口已被其他程序占用:

[root@~]#cat/var/log/boa/error_log

[20/Feb/2008:21:21:57+0000]boa.c:194-unable to bind:Address already in use

或是用户设置错误等等,都可以查到。

Q:无法启动Boa,error log显示"boa.c:266.icky Linux kernel bug!:No such file"

A:修改src/boa.c,将以下判断注释掉:

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

DIE("icky Linux kernel bug!");

}*/

重新编译

Q:无法启动Boa,error log显示"boa.c:211-getpwuid....略"

A:修改src/boa.c,将以下判断注释掉:

/*if(passwdbuf==NULL){

DIE("getpwuid");

}

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

DIE("initgroups");

}*/

重新编译

四、功能测试

静态网页测试

将静态网页存入根文件系统的/var/www目录下(可以将主机/usr/share/doc/HTML/目录下的index.html、homepage.css和img、stylesheet-images目录复制到/var/www目录下)

我参考《嵌入式Web服务器移植》的做法如下:

在根文件系统的/var目录下

[root@Localhost var]$cp/usr/share/doc/HTML/index.html www/

[root@Localhost var]$cp-r/usr/share/doc/HTML/img www/

[root@Localhost var]$cp/usr/share/doc/HTML/homepage.css www/

[root@Localhost var]$cp-r/usr/share/doc/HTML/stylesheet-images www/

直接在浏览器中输入开发板的IP地址(比如我的是

http://192.168.1.2

),出现fedora的欢迎网页。静态HTML调试成功。

CGI功能测试

1、编写HelloworldCGI.c程序

[root@Localhost source]$vi helloworldCGI.c

(主程序的程序开头一定要用Tab,而不是空格,不然编译可能不通过)

#includestdio.h>

#includestdlib.h>

int main(void)

{

printf("Content-type:text/html\n\n");

printf("\n");

printf("CGI Output\n");

printf("\n");

printf("Hello,world.\n");

printf("\n");

printf("\n");

exit(0);

}

2.交叉编译生成CGI程序

[root@Localhost source]$ /home/root/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/ arm-9tdmi-linux-gnu-gcc-o helloworldCGI helloworldCGI.c

将helloworldCGI拷贝至根文件系统的/var/www/cgi-bin/下

[root@Localhost source]$cp helloworldCGI../nfs/rootfs/var/www/cgi-bin/

3.测试

浏览器输入

http://192.168.1.2/cgi-bin/helloworldCGI

网页出现Hello,world.调试成功!

嵌入式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.360docs.net/doc/4313731792.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开发环境

基于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

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

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 模块

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()将

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是一个非常小巧的Web服务器,其可执行代码只有60K左右。它是一个单任务的Web服务器,只能依次完成用户的请求,而不会fork出新的进程处理并发连接请求。但boa支持cgi,能够为cgi程序fork出一个进程来执行。Boa的设计目标是速度和安全,在其站点公布的性能测试中,boa的性能要好于apache 服务器。 随着网络技术的迅猛发展,在嵌入式设备的管理和交互中,基于Web方式的应用成为目前的主流,用户可以直接通过远程登录的方式对设备进行管理和维护,大大方便了使用性。下面就为大家讲解一下boa服务器在嵌入式Linux系统中的移植过程。 一、BOA服务器移植 工具链:gcc version 4.3.2 (crosstool-NG-1.8.1-none) 平台:处理器:s3c2410 内核:linux-2.6.35 1.解压源码 tar xvf boa-0.94.13.tar.tar cd boa-0.94.13 2.进入src/ ./configure 生成Makefile 修改Makefile 修改CC =gcc 为CC =arm-none-linux-gnueabi-gcc 修改CPP =gcc -E 为CPP =arm-none-linux-gnueabi-gcc -E 3.make编译 编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。

yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。 Apt-get install bison flex 执行make 然后给boa瘦身 Arm-none-linux-gnueabi-strip boa 二、Boa服务器配置 1、创建目录 mkdir /source/rootfs/etc/boa 2、将boa源码目录下的boa.conf拷贝到/source/rootfs/etc/boa目录下 cp boa.conf /source/rootfs/etc/boa 3、修改配置文件boa.conf vim /source/rootfs/etc/boa (1)Group的修改 修改Group nogroup 为Group 0 (2)user的修改 修改User nobody 为User 0 (3)ScriptAlias的修改 修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 为ScriptAlias /cgi-bin/ /www/cgi-bin/

基于嵌入式的智能家居

基于嵌入式的智能家居 摘要 21世纪是智能的时代,是互联网的时代,随着Internet后PC 时代的到来,这个时代的主要特征是以计算机作为作为组成成分融入消费品之中。依赖于嵌入式技术的后PC时代使得传统IT设备逐渐过渡到嵌入式设备并融入到生活的各个方面。本系统采用嵌入式技术,将在系统内移植嵌入式web服务器,用户可以通过互联网对家居进行操作与监控。 关键词嵌入式智能家居Linux 远程监测 Abstract In the 21st century is the era of intelligence, is the age of the Internet, with the advent of Internet post-pc era, the era as computers as the main characteristics of the components into consumer goods. Rely on the embedded technology after traditional PC era makes IT equipment gradually transition to the embedded devices and integrated into all aspects of life. This system adopts the embedded technology, transplanted in the system of embedded web server, the user can through the Internet for household operation and monitoring. Keyword: ARM smart home Linux Remote monitoring 1 绪论 随着生活水平与生活质量的提高,人们对于生活水平要求日益提高,对于生活的便捷性与对信息需求的及时性也越发看重,以嵌入式为核心的智能家居以其便捷性与实时性逐渐走入了我们的视野。目前随着

嵌入式的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 标准

usb摄像头驱动移植第一步总结

Kernel version :2.6.22.6 Crosstool :arm-softfloat-linux-gnu-gcc-3.4.5 Board :FS2410 System :ubuntu 8.10 Source :spcaview-20061208.tar.gz SDL-1.2.13.rar servfox-R1_1_3.rar gspcav1-20071224.tar.gz 整理:LXP 一、移植gspcav1-20071224 FS2410开发板上移植的是Linux-2.6.22.6内核,USB及CS8900A均能工作,由于linux-2.6.22.6/drivers/usb 目录下没有media 目录,故移植步骤如下: [linux@farsight usb]$ pwd /work/kernel/linux-2.6.22.6/drivers/usb [linux@farsight usb]$ vi Kconfig 添加 source "drivers/usb/media/Kconfig" [linux@weijing usb]$ vi Makefile 添加 obj-$(CONFIG_USB_SPCA5XX) += media/ [linux@weijing media]$ pwd /work/kernel/linux-2.6.22.6/drivers/usb/media [linux@weijing media]$ vi Kconfig # # USB Multimedia device configuration # comment "USB Multimedia devices" depends on USB config USB_SPCA5XX tristate "USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras" depends on USB && VIDEO_DEV [linux@weijing media]$ vi Makefile # # Makefile for USB Media drivers #

计算机基础 习题参考答案

习题一 一、用适当内容填空 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.360docs.net/doc/4313731792.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.360docs.net/doc/4313731792.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.360docs.net/doc/4313731792.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项我用的版本不用修改不会出错

相关文档
最新文档