您的位置 首页 汽车

根据44B0渠道的uC-Linux Web服务器完成办法研讨

前言嵌入式系统已经大量应用于各种场合,网络技术的发展使嵌入式系统的网络功能日益完善。在测控领域里,常常需要远程查询被测控对象的实时…

前语嵌入式体系现已很多应用于各种场合,网络技能的开展使嵌入式体系的网络功用日益完善。在测控范畴里,常常需求长途查询被测控目标的实时状况,或进行某种操控操作,选用服务器-浏览器进行作业的嵌入式体系,能够仅经过浏览器就完结一切的测控使命而不依赖于其他客户端程序,具有简略网络服务器功用的嵌入式体系能够方便地供给这种功用。本文以现在国内外遍及选用的ARM+uCLinux嵌入式体系为例,以uCLinux20031103版别为根底,以S3C44B0X开发板为渠道,对uCLinux下完结静态、动态Web服务器的办法进行了研讨,完结了对长途温度传感器的拜访。
1. uCLinux简介Linux是一种很受欢迎的操作体系,它与UNIX体系兼容,开放源代码。它本来被规划为桌面体系,现在广泛应用于服务器范畴。而更大的影响在于它正逐渐的应用于嵌入式设备,uCLinux便是针对微操控范畴而规划的Linux体系。
uCLinux内核的功用结构与Linux根本相同,仅仅在对内存办理和进程办理方面进行了改写,以分量无MMU处理器的要求。uClinux由Linux2.0内核开展而来,是专为没有MMU的微处理器规划的嵌入式Linux操作体系。uClinux的内核比Linux 2.0内核小的多,但保留了Linux 操作体系的首要长处:稳定性,优异的网络才能以及优异的文件体系支撑。
因而,选用ARM+uCLinux渠道在取得比单片机体系更强的处理才能和相对较低功耗的一起,也为嵌入式体系接入网络供给了更为便当的途径,这一点正是得益于Linux。
2. uCLinux下Web 服务器的挑选将嵌入式体系接入网络,一般是为了供给一种体系与外界交互的途径,我们网络的可扩展性,嵌入式体系一旦衔接到网络中,其所能供给的信息和取得的信息都将成倍添加。为了更方便地经过网络向外供给信息,有必要为体系构建Web 服务器。
uCLinux 环境下,首要有三个Web 服务器:httpd、thttpd和Boa。httpd是最简略的一个Web 服务器,它的功用最弱,不支撑认证,不支撑CGI。假如Web 服务器仅需供给一些静态页面,例如简略的在线协助、体系介绍等,彻底能够用静态服务器httpd来完结。thttpd和Boa都支撑认证、CGI等,功用都比较全。若需进步体系的安全性,或需求与用户进行交互,例如数据查询、实时状况查询等,则有必要运用动态Web技能,能够挑选这两种服务器之一来完结。
3. uCLinux下静态Web 服务器的完结httpd 是最简略的一个web 服务器,只需几百行代码,功用较弱。它的一些简略装备需求在Makefile和httpd.c的内部进行,文件坐落/bb40/uCLinux- dist/user/httpd/目录下。Makefile中界说了缺省的documentDir为/home/httpd,缺省主页面文件为 index.html。uCLinux20031103版别的httpd.c中的main函数有如下两行程序:
chroot(HTTPD_DOCUMENT_ROOT);
chdir(“/”);
其间第二行程序将影响到实践运转成果,主张将该行程序直接指向index.html文件地点目录。将页面文件复制到\bb40\uCLinux-dist\romfs\home\httpd下即可。
对uCLinux 进行重新装备,并在用户程序中选中httpd,编译uCLinux内核并下载到开发板,在uclinx发动后经过httpd &指令即可发动服务器,如需主动发动,在\uCLinux-dist\vendors\Samsung\S3C44B0目录下的rc文件中参加相同的指令即可。
4.动态服务器与CGI现在完结动态Web页面有多种技能可供挑选,CGI、ASP、PHP等技能在高端渠道上都能很好地完结用户所需的功用。但在uCLinux下完结动态网页,现在只能选用CGI。
CGI,Common Gate Interface,即通用网关接口,是一个衔接外部应用程序到服务器的规范。一个简略的静态HTML文档是没有交互后台程序,而CGI程序则能够实时碑文并输出动态信息。
运用CGI 需求一个输入界面,一般便是一个包含了表单(FORM)的页面。FORM在CGI中是最常被运用的输入界面,它由一组标签所组成,现在的规范中,FORM 的标签可分为三大类:INPUT、SELECT以及TEXTAREA。在设置了一系列有关的标签后,每个FORM一般需求一个SUBMIT按钮用来发送表单内容。
当用户在客户端按下FORM上的SUBMIT按钮,浏览器(Browser)将客户端输入的参数传回服务器,服务器发动指定的程序并将封装的参数传入,后台程序按照传入的参数完结指定的作业。假如此刻有需求传回成果的话,则程序会把成果传回给服务器并发送到浏览器。
5.用boa完结uCLinux下的动态Web 服务器用Boa来完结动态Web 服务器的办法较为杂乱,首要经过boa.conf和mime.types进行,具体进程如下:
Boa 的要害装备由boa.conf文件决议,该文件是一个文本文件,内部除了各项设置还包含了具体的注释和阐明。Boa.conf文件的注释中首要指出,为了在用户拜访Web时服务器能确认根目录的方位,需求指定服务器的根目录途径服务器_ROOT。\uCLinux-dist\user\boa\src\目录下的define.h界说了服务器的根目录途径,经过修正define.h文件中#define ERVER_ROOT /home查办来指定服务器_ROOT。在uCLinux发动后经过指令行也能够指定该途径,且指令行所指定的途径具有更高的优先级,指令参数为-c加上欲指向的根目录途径,例如该文件中供给的比如:boa -c /usr/local/boa。
下面来装备一个简略的boa服务器。在\uCLinux-dist\user\boa\src\boa.conf里进行如下修正:
l
将user root改为User 0;
l
将Group root改为Group 0;
l
将DocumentRoot/etc改为DocumentRoot/home;
l
将MimeTypes/etc/mime.types改为MimeTypes/home/mime.types;
l
将#AddType application/x-httpd-cgi cgi前面的#去掉使体系能够支撑cgi方法;
l
界说CGI程序地点目录:ScriptAlias/cgi-bin/ /home/cgi-bin/;
这样装备后的boa服务器将/home目录作为服务器的根目录,cgi程序坐落\hone\cgi-bin目录下,默许页面文件为\home\index.html。
Boa.conf文件的注释中指出,boa.conf文件和mime.types文件有必要放到Web服务器根目录下,本例中把mime.types和修正后的bao.conf复制到\uCLinux-dist\romfs\home\目录下。
在编译uCLinux 内核前还要经过修正\uCLinux-dist\vendors\Samsung\S3C44B0\目录下的makefile文件来树立cgi二进制文件将要被存放到的目录。在ROMFS_DIRS=bin dev etc home lib mnt proc usr var的后边添加home/cgi-bin,这样修正后编译内核,编译后生成的根文件体系\bb40\uCLinux-dist\romfs中将添加一个 \home\cgi-bin目录。
对uCLinux 进行重新装备,并在用户程序中选中boa项,编译uCLinux内核并下载到开发板,在uclinx发动后,经过boa-c/home/&指令即可发动服务器,如需主动发动,在rc文件中参加相同的指令即可。我们没有放入cgi程序,此刻仅能看到放在home目录下的页面,不会有任何动态呼应。经过下面的比如将了解怎么完结页面到CGI程序的相关。
6.一个经过动态Web页面拜访长途温度传感器的比如下面经过一个比如来阐明怎么完结uCLinux下的动态Web页面技能。
首要树立一个简略的表单页面:

CGI 规则,GET方法下的表单被发送到服务器后,表单中的数据被保存在QUERY_STRING环境变量中。这种表单的处理相对简略,只需读取环境变量就能够了。在CGI程序中运用库函数getenv来把环境变量的值作为一个字符串来读取,在取得了字符串中的数据后,就能够对数据进行需求的处理。CGI程序完结处理后的输出被重定向到客户浏览器,用户经过浏览器就能够看到相关成果。请注意,在ACTION后边所指向的CGI文件并没有扩展名。
下面便是处理这个表单的CGI程序mycgi.c:
#i nclude
#i nclude
int main(void){
char *data;
long m;
printf(“Content-Type:text/html%c%c”,10,10);
printf(“温度传感器状况 “);
printf(“

房间温度

“);
data = getenv(“QUERY_STRING”);
if(sscanf(data,”m=%ld”,&m)!=1)
printf(“

过错!输入数据不合法。表单中有必要输入1~10的数字。”);
else
printf(“

%ld号房间的温度是:%ld度。”,m,readtempr(m));
return 0;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/264281.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部