中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 嵌入系统 >>电子行业新闻正文

基于S3C44B0与uClinux构建web服务器

时间:2006/10/13 12:33:00  作者:  来源:ic72  浏览人数:1917
 
 

      1  引言

      随着互联网在全球的飞速发展,网络技术广泛应用于各种企业和工业系统,越来越多的信息化产品需要能够接入互联网通过web页面进行远程访问和控制。嵌入式web服务器是当今研究嵌入式[1]的应用热点,可广泛的应用到工业设备,自动化农业,信息化家电,远程监控报警系统等。目前正在开发的嵌入式系统中,将近一半的项目都选用Linux作为嵌入式操作系统,而uClinux是一个经过对标准Linux内核改动,高度优化、代码紧凑的嵌入式Linux[2]它保留了Linux的大多数优点,具有良好的移植性、优秀的网络功能。目前,基于三星S3C4510b与uClinux下web服务器已经实现,而基于S3C44B0与uClinux下web服务器的实现尚不多见。本文通过网口控制芯片RTL8109AS与S3C44B0的连接,实现了硬件设计,采用uClinux源代码和boa服务器源代码的编译以及CGI网关接口程序的编写实现了软件设计,在自行设计的S3C44B0开发板上实现了基于uClinux下的boa服务器和动态网页CGI网关接口程序,通过浏览器输入开发板的IP地址就可以动态地访问开发板上的网页。

      2  硬件方案实现

      本文设计的ARM开发板的核心是三星(Samsung)S3C44B0微处理器,是基于ARM7TDMI[3]的 RISC型CPU,是性价比较高的嵌入式32位处理器之一。S3C44B0芯片包含一个使用了66MHz和单周期精简指令处理器(ARM7TDMI),内建8k高速缓存器,2通道通用DMA、2通道外设DMA并具有外部请求引脚、2通道UART带有握手协议、11通道SIO、1通道多主IIC-BUS控制器、5个PWM定时器、71个通用I/O口等等并且能够与常用的外围设备实现无缝连接,从而简化了外围电路设计,降低了产品成本、体积和功耗。本文自行设计的开发板使用16MSDRAM和2Mflash的内存构架。其中Flash型号是SST39VF160,主要用于存放BIOS程序、uClinux内核映象以及ROMFS文件系统。SDRAM则采用两片HY57V641620,共同组成16M、32位宽的系统主存储器。外设方面,采用CS4334芯片进行音频扩展,采用PDIUSBD12芯片扩展了一个USB接口,串口控制芯片采用常见的MAX232,网口控制芯片采用Realtek公司的 RTL8109AS扩展1个10/100M的网卡设备。开发板框架如图1所示:

ic72 嵌入系统

图1   开发板整体框架图

      3  软件设计

      3.1  uClinux在S3C44B0上的移植

      本开发板采用 uClinux作为操作系统,uClinux是专门针对没有MMU的CPU,适合嵌入式系统小型化应用。uClinux经过对标准Linux内核的改动,形成了一个高度优化、代码紧凑的嵌入式Linux,uClinux保留了Linux的大多数优点:稳定,良好的移植性,优秀的网络功能,完备的对各种文件系统的支持,以及标准丰富的API。而且在uClinux系统上开发的应用程序可移植性很好,系统升级也非常容易,所以本文选用uClinux作为嵌入式操作系统。在S3C44B0上对uClinux内核进行的移植过程为:

      首先对其源代码进行编译,从网上下载一个uClinux源代码,一般是压缩格式(tar.gz)的,将其解压,在当前目录下产生一个uClinux-dist目录,进入uClinux-dist目录,然后依次键入

      (1) make menuconfig 进入菜单化的源代码配置工具

      (2) make clean  清除所有的编译结果

      (3) make dep   设置文件依赖关系

      (4) make lib_only  编译库文件

      (5) make user_only  编译应用程序

      (6) make romfs  编译文件系统

      (7) make image  生成映象文件

      (8) make   完成整个编译过程

      编译完成后,在image下产生三个文件,image.ram,image.rom,romfs.img。将image.rom通过网口用tftp工具下载到系统板的flash中0x0处,上电键入BIOS提供的命令,uClinux便从SDRAM启动,完成移植过程[4-5]。

      3.2  基于uClinux的web技术实现

      (1) web服务器的工作原理[6-7]

      web 服务器作为一个数据载体,可以将本地的信息和数据通过网络传递给远端发出请求的客户,这在远程监控的实现有很大的意义。web服务器监听用户端的服务请求,根据用户请求的类型提供相应的服务。用户端使用web浏览器和web服务器进行通信。web服务器在接收到用户端的请求后,处理用户请求并返回需要的数据。一个完整的HTTP事务一般由以下四个阶段组成:

      a.客户与服务器建立TCP连接;

      b.客户向服器发送请求;

      c.如果请求被接受,则由服务器发送应答,在应答中包括状态码和所要的文件;

      d.客户与服务器关闭连接。

      (2) uClinux下web服务器的实现

      从本质上讲,web服务器是在计算机幕后运行的程序,等待发自web浏览器的各种请求。当接受到请求时,它用被请求的文档或错误消息进行答复。大多数的web服务器都提供后端技术,就象CGI,能够使web服务器和已有的应用程序相连,从而提供交互式活动和信息检索。

      uClinux 下,主要有三个web服务器:httpd,thttpd和boa。Httpd[9]是最简单的一个web服务器,功能也最弱,不支持认证、CGI。 thttpd web服务器和boa web服务器都支持认证、CGI等,功能都比较全。本开发板选用适合于嵌入式应用的boa web服务器。boa是一个单任务的http服务器,源代码开放、性能高。它和传统服务器的主要区别是:它是单进程的,在接到新的httpd请求时并不 FORK出一个新的进程来响应,不能对每个到来的连接处理,而且也不能将自己拷贝很多份来处理多连接。它在内部处理所有正在进行的http连接请求,只对单独的CGI程序、自动文件的产生、自动文件的解压等请求FORK出新进程。它的优点是代码简单、速度快、适合于嵌入式应用。对于嵌入式系统来说,实现 web服务器主要是为了使用www浏览器,最终让用户通过局域网或广域网访问和控制嵌入式系统设备。编写不同的HTML页面并结合CGI技术可以完成各种灵活、友好的交互功能。在uClinux下实现boa,本文具体对boa.conf和mime.types文件进行了几项修改:

      (1) 由于根文件系统是只读的,不能用mkdir来新建目录,所以在编译内核前建好要用到的目录,在此把web服务器的根目录设在/home/下,将服务器文档根目录设在/home/httpd/目录下,把实现动态web网页功能的CGI程序放在/home/httpd/cgi-bin/ 目录下。这几个目录的建立通过修改开发平台的makefile来实现。在ROMFS_DIRS=bin dev etc home lib mnt proc usr var 增加home/httpd home/httpd/cgi-bin。这样修改后,通过上面的编译内核步骤编译后,根文件系统中就包含这些新建的目录。

      (2) 指定web服务器的根目录路径,进入uClinux-dist/user/boa/src/目录下,通过修改define.h文件中 #define SERVER_ROOT/home语句来指定SERVER_ROOT。修改boa.conf文件,在uClinux- dist/user/boa/src/boa.conf里将User nobody,Group nogroup改为User 0,Group 0,Document Root/var/www改为DocumentRoot/home/httpd,定义默认首页和CGI程序所在的目录,即:

      DirectoryIndex index.html,ScriptAlias /cgi-bin/   /home/httpd/cgi-bin/mini.type不需要修改。Boa.conf和mini.types必须放到web服务器根目录下,把修改后的boa.conf和mini.types复制到uClinux-dist/romfs/home下,然后对uClinux- dist/Vendors/Samsung/4510b/inittab修改,在inet:unknow/bin/inetd后加入boa: unknown/bin/boa c/home。这样配置好后,此时web服务器的根目录为/home/httpd,httpd目录下放的是web服务器可以访问的文件,包括html网页,JPG图片等。/home/httpd目录下放置的文件和网站文件类型完全一样,其中index.html为远程浏览客户访问web服务器所看到的默认首页值,通过超级链接可以链接到/romfs/home/httpd目录以及其所有子目录下的所有静态网页。如果要实现动态网页,只能采用CGI,因为目前uClinux还不支持ASP,PHP等技术。CGI即通用网关接口,它是一个WWW服务器主机对外服务的标准接口,一般来说一个CGI接口的功能就是在超文本和服务器主机应用程序间传递信息。目前最为流行的CGI[10]程序语言有四种:C,Shell,Perl和Visual Basic。CGI程序属于一个外部程序,需要编译成为可执行文件,才能在服务端运行,其应用程序流程图如图2所示:

ic72 嵌入系统

图2   CGI程序流程图

ic72 嵌入系统

图3   uClinux下内嵌网页

ic72 嵌入系统

图4   LED演示程序界面

      浏览器将用户输入的数据送到web服务器,web服务器将数据使用stdin送给CGI程序,在执行CGI程序后,可能会访问存储数据的一些文档,最后使用stdout输出html形式的结果文件,经过web服务器送回浏览器显示给用户。

      本文通过c语言来编写CGI程序,编译成二进制文件放在/cgi-bin/目录下,由于前面配置了boa服务器的CGI目录, ScriptAlias/cgi-bin//home/httpd/cgi-bin/, 所以/cgi-bin/目录下的CGI程序就能被正确执行。配置完成后,重新编译内核,编译时选中boa选项将编译好的内核下载到开发板,启动 uClinux完成IP配置,启动boa web服务器之后就可以通过浏览器浏览网页了,如果想启动uClinux时自动启动boa web服务器,可以修改rc文件,进入uClinux-dist/vendors/Samsung/4510b,在运行脚本中加入boa c/home/&修改后重新编译内核,再下载到开发板运行,运行uClinux后即可访问网页了。下面结合一个例子来说明如何实现uClinux 下的动态网页技术。先用HTML语言编写web内嵌网页(如图3),然后点击内嵌主页上的LED DEMO演示程序超级链接,进入到网页的下一界面(如图4),由ACTION属性来指定要用到用到的CGI程序,即ACTION=/cgi- bin/led.cgi,由METHOD属性来指明所用的提交方法,即METHOD =POST。
选中LED复选框,然后点击SET,就能控制开发板上的发光二级管。说明uClinux下boa服务器已经运行成功。

      4  结束语

      本文通过硬件方案的实现、软件设计、以及uClinux下web技术的实现,实现了基于S3C44B0与uClinux下的 boa服务器。通过启动开发板上的boa服务器,在PC机上的浏览器键入开发板上的IP地址,就能访问开发板中内嵌的静态网页,通过CGI程序的实现,实现了网页的动态显示,并用一个控灯的例子对boa服务器的运行进行了实验验证。本文所实现的嵌入式web服务器通用性比较强,能够在嵌入式开发平台上高效率地运行,应用前景非常看好。

 
【相关文章】
·基于S3C44B0与uClinux构建web服务器
·嵌入式系统µC/OS-II在LPC2119上的移植方法和技巧
·基于DSP+FPGA嵌入式结构的便携数字存储示波表设计
·基于uITRON操作系统的嵌入式GUI设计
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9