Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器,Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。图11.2W eb服务器工作原理图我们以浏览器作为客户端,完成Web服务的工作流程讲述。Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。......
2023-11-19
Linux具有良好的网络支持,在上面建立Web服务器和设计动态Web网页是比较容易的事情。在开发板提供的examples目录中,包含已经移植过的boa和CGI程序。同样,提供的文件系统中,也添加了boa和CGI。
1.移植boa
(1)下载boa源码包
下载地址:https://sourceforge.net/project/showfiles.php?group_id=78
得到boa-0.94.36.2.tar.gz,解压到工作目录中
$tar zxvf boa-0.94.36.2.tar.gz-C/opt/cvtech/
(2)配罝
配罝boa:
$cd/opt/cvtech/boa-0.94.36.2/src
$./configure
会在boa-0.94.36.2/src目录下生成Makefile文件,修改Makefile:
$viMakefile
在31,32行,指定交叉编译器,修改如下
CC=/opt/cvtech/4.3.3/bin/arm-linux-gcc
CPP=/opt/cvtech/4.3.3/bin/arm-Iinux-g++-E
修改src/boa.c文件:
$vi src/boa.c
注释掉225到行227的内容
//if(setuid(O)!=-1){
//DIE(Hicky Linux kernel bug!");
//}
修改src/compat.h文件:
$vi src/compat.h
修改120行内容如下:
#define TIMEZONE_OFFSET(foo)foo->tm_gmtoff
(3)编译并且优化
$cd src
$make
$/usr/local/arm/4.3.3/bin/arm-linux-strip boa
这里移植boa结束。
2.移植cgic库
(1)下载cgic库,地址为:http://www.boutell.com/cgic/cgic205.tar.gz
下载后,解压到工作目录:
$tar zxvf cgic205.tar.gz-C/opt/cvtech/
(2)配罝编译条件
$cd/opt/cvtech/cgic205
$viMakefile
(3)修改Makefile内容如下
CFLAGS=-g-Wall
CC=/opt/cvtech/4.3.3/bin/arm-linux-gcc
AR=/opt/cvtech/4.3.3/bin/arm-1inux-ar
RANLIB=/opt/cvtech/4.3.3/bin/arm-linux-ranlib
LIBS=-L./-lcgic
all:libcgic.a cgictest.cgi capture
install:libcgic.a
cp libcgic.a/usr/local/lib
cp cgic.h/usr/local/include
@echo libcgic.a is in/usr/local/lib.cgic.h is in/usr/local/include.
libcgic.a:cgic.o cgic.h
rm-f libcgic.a
$(AR)rc libcgic.a cgic.o
$(RANLIB)libcgic.a
#mingw32 and cygwin users:replace.cgiwith.exe
cgictest.cgi:cgictest.o libcgic.a
$(CC)$(CFLAGS)cgictest.o-o cgictest.cgi${LIBS}
capture:capture.o libcgic.a
$(CC)$(CFLAGS)capture.o-o capture${LIBS}
clean:
rm-f∗.o∗.a cgictest.cgi capture
(4)编译并优化
编译,生成capture的可执行文件和测试用的cgictest.cgi文件
$make(www.chuimin.cn)
$/opt/cvtech/4.3.3/bin/arm-linux-strip capture
3.配置WEB服务器
(1)在文件系统中配罝boa
$cd/opt/cvtech/A8fs/root_qtopia_2.2.0_2.6.30.4
如果ramdisk.gz没有解压,请先解压,解压后才会出现rd目录
$mkdir web etc/boa
拷贝刚移植生成的boa到文件系统的sbin/目录下:
$cp/opt/cvtech/boa-0.94.36.2/src/boa sbin
拷贝boa的配罝文件boa.conf到etc/boa目录下:
$cp/opt/cvtech/boa-0.94.36.2/boa.conf etc/boa
修改boa.conf,配置如下:
Port80
//监听的端口号,缺省都是80,一般无需修改
Listen 192.168.1.6
//bind调用的IP地址
User root
Group root
//作为哪个用户运行,即它拥有该用户组的权限,一般都是root,需要在/etc/group文件中有root组
ErrorLog/dev/console
//错误日志文件。如果没有以/XXX开始,则表示从服务器的根路径开始。如果不需要错误日志,则用/dev/null。系统启动后看到的boa的打印信息就是由/dev/console得到
ServerName yellow
//服务器名称
DocumentRoot/web
//非常重要,这个是存放html文档的主目录
Directorylndex index.htm l
//html目录索引的文件名
KeepAliveMax 1000
//一个连接所允许的http持续作用请求最大数目
Keep AliveTimeout10
//http持续作用中服务器在两次请求之间等待的时间数,以秒为单位,超时将关闭连接
MimeTypes/etc/mime.types
//指明mime.types文件位罝
DefaultType text/plain
CGIPath/bin:/usr/bin:/usr/local/bin
//提供CGI程序的PATH环境变量值
ScriptAlias/cgi-bin//web/cgi-bin/
//非常重要,指明CGI脚本的虚拟路径对应的实际路径
(2)配罝CGIC库
$cd/opt/cvtech/A8fs/root_qtopia_2.2.0_2.6.30.4/web
$mkdir cgi-bin
拷贝刚移植的cgic库和cgic测试文件到文件系统的web/cgi-bin目录下:
$cp/opt/cvtech/cgic205/capture cgi-bin/
#cp/opt/cvtech/cgic205/cgictest.cgi cgi-bin/
保存,并生成新的文件系统e.yaffs
重现烧写到开发板中,开机启动。
4.设计实例测试
(1)静态测试
Linux启动后,启动boa
[root@Cvtech/]#boa
然后在PC端,打开网页浏览器,输入测试网址
http://192.168.1.6
就会出现如下网页
图11.3 静态测试界面
(2)cgi脚本测试
打开浏览器,输入:
http://192.168.1.6/cgi-bin/cgictest.cgi
即可打开测试界面。
图11.4 cgi脚本测试界面
有关ARM嵌入式系统原理与应用的文章
Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器,Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。图11.2W eb服务器工作原理图我们以浏览器作为客户端,完成Web服务的工作流程讲述。Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。......
2023-11-19
相对于传统的嵌入式系统设计方法,引入了软硬件“协同设计”概念的嵌入式系统设计方法能较好地弥补传统嵌入式系统设计方法的不足。如图11.1所示为一种典型的嵌入式系统协同设计方法。从图中可以看到,嵌入式系统的“协同设计”方法与传统的嵌入式系统的设计方法相比较而言,更重视总体设计下的系统级别的仿真建模和软件、硬件综合设计方法。......
2023-11-19
在PDA类的设备中,系统在全速运行的时候远比空闲的时候少,所以可以通过设置,使CPU尽可能工作在空闲状态,然后通过相应的中断唤醒CPU,恢复到正常工作模式,处理响应的事件,然后再进入空闲模式。CPU空闲时,降低时钟频率;处于工作状态时,提高时钟频率以全速运行处理事务。......
2023-11-08
2.开发模式嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。表1.2常用嵌入式开发工具......
2023-11-19
Linux软件开发一直在Internet环境下讲行。Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的。由于这个活跃的开发环境,新的以Linux为基础的软件功能日益强大,而且呈现爆炸式的增长态势。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。Linux程序需要首先转化为低级机器语言即所谓的二进制代码以后,才能被操作系统执行。......
2023-11-19
具体来说,嵌入式系统是以应用为中心、计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。表1.1对比了通用计算机系统与嵌入式系统。......
2023-11-19
互联网采用TCP/IP协议并不是ISO规定的标准协议,但是作为应用最广泛的协议已经成为大规模网络通信的事实标准。TCP/IP协议实际上是由一组协议组成的,通常也称作TCP/IP协议簇。图10.10IPv4协议头部从图中可以看出这是个复杂的结构,最常用字段是源地址和目的地址,用来寻址和查路由。如图10.9所示,TCP协议位于网络互联层后,是IP协议的上层协议。......
2023-11-19
每个GPIO端口至少需要两个寄存器,一个是用于控制的“通用I/O端口控制寄存器”,一个是存放数据的“通用I/O端口数据寄存器”。控制和数据寄存器的每一位和GPIO的硬件引脚相对应,由控制寄存器设置每一个引脚的数据流向,数据寄存器设置引脚输出的高低电平或读取引脚上的电平。S5PV210共有237个GPIO端口,分成15组。GPP1:低功率I2S、PCM。GPIO的15组引脚除了作为输入、输出引脚外,一般都还有其他功能,称为引脚复用。图4.6GPIO端口功能框图......
2023-11-19
相关推荐