基于44B0平台的uC-Linux Web服务器实现方法研究

发布者:码字狂徒最新更新时间:2016-05-04 来源: eefocus关键字: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;
}

关键字:44B0平台  uC-Linux  Web服务器 引用地址:基于44B0平台的uC-Linux Web服务器实现方法研究

上一篇:通过网络添加应用程序到44B0系统全攻略2
下一篇:44b0存储器扩展彻底研究——nWE, nWBE, nBE三者关系

推荐阅读最新更新时间:2024-03-16 14:52

如何在ARM开发板上实现WEB服务器设计制作
随着计算机、通信、自动控制、微电子等技术的发展。电器设备上网已经成为现实。与传统的单片机相比,嵌入式设备重要的突破之一就是解决了设备和internet的互连问题.近年来.嵌入式技术飞速发展.种类繁多、功能强大的CPU和片外连接.为网络应用提供了稳定、可靠的硬件环境:嵌入式操作系统对这些硬件和以太网也有很好的支持,搡作系统的移植大为简化,这就为嵌入式web服务器的实现提供了方便。嵌入式web服务器将监控系统中的各种办议的数据转换成统一的TCP/IP协议格式,以便用户通过以太网远程访问web服务器。该文结合快速发震的嵌入式技术。给出了一种基于嵌入式网络化远程监控系统的web服务器实现方案。 通过创新实践课程设计建立嵌入式系统主体
[单片机]
如何在ARM开发板上实现<font color='red'>WEB服务器</font>设计制作
goAhead 2.5嵌入式web服务器移植到arm9 2440 + linux中
本文内容概要:详细描述了移植goAhead 2.5到S3C2440的linux系统的过程、步骤、遇到的问题及其解决方法。 开发环境: 宿 主 机:window XP; 虚 拟 机:ubuntu9.10; 交叉编译器:arm-uclibc-gcc(arm-linux-gcc-4.3.2可以顺利编译通过) ——————————————————————————————————————————————————————————————————— 1. GoAhead Web服务器介绍 goAhead Web服务器,小巧、精致,提供了值得称道的性能,特别适合于嵌入式系统,因此,在很多嵌入式产品如
[单片机]
基于嵌入式Web服务器的远程故障诊断系统
摘要:介绍了一种基于嵌入式Web服务器的远程故障诊断系统的硬件及软件实现。该系统主要包括远程数据采集、分析、诊断、仿真等功能。 关键词:嵌入式Web服务器 数据采集 故障诊断 仿真 远程诊断技术是通过设备诊断技术与计算机网络技术相结合,在设备上建立状态监测点,采集设备状态数据,在诊断中心对设备运行进行分析诊断的一项新技术。用于诊断的系统大致可以分为三类: %26;#183;大型的在线状态监测与诊断系统; %26;#183;以便携式数据采集器与巡检装置的计算机辅助诊断系统; %26;#183;利用Internet实现的远程诊断系统。 在线式系统适用于连续的状态监测与诊断,系统构成复杂、费用昂贵、专用性强。而便
[嵌入式]
微型嵌入式Web服务器的设计与实现
    1 引言     随着计算机、网络通信和Internet技术的飞速发展和不断进步,嵌入式系统在家庭和工业应用广泛。     如何将嵌入式系统和工业控制系统接人Internet,综合利用嵌入式系统资源,实现嵌入式系统的远程管理和控制,已成为关注的研究课题,而实现嵌入式系统的网络化则成为嵌入式系统的发展趋势。     以太网以其成本低、速度快、应用普遍、有广泛的硬件和软件支持等优点为实现管理控制网络一体化提供可能,在现场设备内置WEB服务器,使现场设备具有网页发布功能,将Internet技术直接引入现场设备。     本设计是基于ARM7的微型嵌入式Web服务器。目前市场上大部分以太网控制器的封装均超过80引脚
[嵌入式]
视频监控:借三大技术造势逐步占据市场
  早在2004年8月,上海方面就计划在2010年前于市区内安装20余万个监控摄像头,全面构建“社会防控体系”。社会防控体系只是视频监控的应用之一,但足以说明视频监控市场规模之巨大。“9·11”恐怖袭击事件、马德里爆炸案、伦敦爆炸案后,人们对于社会安全更加重视,视频监控更是由原来的金融、商业、交通、住宅、社区,延伸到各行各业。       这表明,视频监控这一业务的市场已经开始升温。       可是早期视频监控业务的温度,可以说是早春的天气,乍暖还寒。这归因于当时的计算机、数字编解码、网络等各项技术尚未成熟,影响了视频监控技术的发展成熟。 三股旋风如何步步造势       正是进入80年代以来计算机、数字编解码、
[安防电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved