英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
嵌入式网络服务器的设计与实现
摘要:
随着因特网的发展和后PC时代的到来,嵌入式系统成为当前IT产业的热点之一,它潜藏着巨大的市场需求,同时嵌入式设备的因特网网络化是目前网络发展的一个重要方向。通过对采用基于ARM的嵌入式网络服务器进行分析,介绍了其设计和实现的主要过程,最后通过网络测试来验证设计的成功。
关键词:嵌入式系统,ARM,嵌入式,网络服务器
1 引言
随之现代通信技术的迅猛发展,网络技术被广泛使用并取得巨大成功。随着信息化社会的可持续发展,越来越多的成熟网络技术被用于嵌入式设备,这已经逐渐成为趋势。因为它较好的通用性,平台独立性和交互性,网络技术成为了嵌入式网络处理中不可或缺的选择。由于嵌入式设备接入网络技术的高速发展,一些通信设备应用,信息家庭应用,远程仪器控制成为了可能。嵌入式网络服务器这一重要的嵌入式网络技术为远程管理和控制的实现提供了网络接口。这篇文章主要介绍了网络服务器的结构,基于S3C2410搭载Linux平台为基础的嵌入式网络服务器的实现,归纳了相关嵌入式网络技术,使用了预处理的手段,将硬件资源和网络服务器结合为一个整体,通过交互设计和虚拟文件系统实现网络服务器功能。本设计旨在使用有限的资源,尽可能的减少成本来达到提供网络连接的效果。对于比较大的系统和远程监控,控制,诊断以及其他的功能提供了较好的技术支持。
2 嵌入式网络服务器综述
嵌入式网络服务器(Embedded Web Server)是指将网络服务器移植到现场检测和控制设备中,在对应的硬件设备和软件平台的支持下,在传统的检测和控制设备的支持下,演变成了以TCP/IP为底层通信协议,网络技术为核心的基于互联网的网络检测和现场控制设备。嵌入式Web服务器删减了传统服务器的系统冗余结构,在嵌入式设备上它能够同时实现消息传递和网络通信的功能。网络技术的代码开源性和平台独立特性可以降低系统研发难度,减少硬件平台和软件系统的设计维护工作量,提高了现场检测和设备管理控制的等级。
A 嵌入式网络服务器的通常架构
一般情况下,设计嵌入式网络服务器时会以通用网络服务器的系统架构为基础,再按照嵌入式系统的特性来进行优化。嵌入式网络服务器的硬件部分涵盖了具备网络通信功能的微处理器或者微系统,它既能够和前端的应用系统直接整合在一起,也可以用现场总线将他与应用系统相连。
一个完整的硬件系统由微型处理器、FLASH存储模块、DRAM存储模块、网络接口和前端应用系统的硬件模块所组成。微型处理器负责全体硬件设备的运行和管理,FLASH、ROM存储模块用来存储实时操作系统的系统内核、运行时的代码与数据、TCP/IP协议、各种网络文档,DRAM存储器供系统运行时使用;网络接口实现与Internet/Intranet连接;前端应用系统的硬件达到传统意义上的使用目标。
嵌入式网络服务器的软件系统通常包括中枢处理模块、HTTP引擎、文件系统、设置模块、保护模块、应用程序接口。服务器的心脏是中枢处理模块,主要任务是整个系统的控制与调度,HTTP引擎实现HTTP协议,文件系统的接入来实现资源的存取,设置模块和保护模块实现服务器的设置与保护机制,应用程序接口完成服务器与应用程序的交互。应用程序接口模块常见的有CGI(Common Gateway Interface 公共网络接口)、SSI(Server Side Include 服务器方包含)、HCPA(HTML-to-C Preprocessor Approach HTML-C预处理器)、元命令、自定义API和其他接口形式,当前还暂无对应的的实现标准。
B 嵌入式服务器的优点
在设嵌入式设备上实现网络服务器,可以让设备能与现今最大的网络以太网无缝连接,而无需特殊的线路。传输内容不仅仅局限于数据,还有图像、声音,以及其他多媒体信息;通信协议(超文本传输协议)是标准的而且是开源的,独立于系统平台开来;系统所使用的HTML(超文本标记语言)语言有统一性的特征,标准化界面独立于客户端的软件硬件平台,极大地节省了客户端的开发成本;使用网络架构,HTML语言的开放性和平台独立性可以明显降低系统的设计工作。嵌入式网络服务器本身具备一定的通用性,这使得它能够嵌入到任何设备当中。
嵌入式网络服务器是将网络服务器结构应用在嵌入式系统上。它现在主要被应用于装备管控和企业大型应用网络拓展。嵌入式网络服务器当做一个嵌入式设备上的后台程序直接运行,用户可以连接以太网对设备进行设置、控制、监控,保证设备有效、高效率地运作。网络接口使得使用者可以在任何地方用任何一台有接入互联网功能并带有网络浏览器的终端访问到该嵌入式设备。嵌入式网络服务器较好地对外配置了以太网的网络接口,将应用程序和网络接口整合在一起,是应用程序网络连接中比较优秀的解决方案。
3 系统的硬件平台选择与设计
在嵌入式系统设计中,主控模块芯片的性能好坏对整个系统的性能和功能的实现起着举足轻重的作用。综合考虑整个系统各方面的因素,预留一部分可实现的功能,充分发挥系统内其他模块的作用,获取长时间可靠的工作效果,给接下来的升级留下空间。本系统选择的主控开发板的芯片是S3C2410处理器,S3C2410是一个基于ARM920T内核的16/32位精简指令集处理器,它是由三星公司开发的一款32位精简指令集处理器。
A S3C2410X介绍
S3C2410X微处理器是一款由三星公司设计的低功耗、高集成度的基于ARM920T内核服务于手持终端的微处理器,为了降低系统总成本和减少外围器件,这款芯片还集成了以下部件:16KB指令Cache、16KB数据Cache、MMU、外部存储器控制器、LCD控制器、NAND Flash控制器、4个DMA通道、3个UART通道、1个IIC总线控制器、1个IIS总线控制器、4个PWM定时器、1个内部定时器、通用I/O口、实时时钟、8通道10位ADC和触摸屏接口、USB主、USB从、SD/MMC卡接口等,它被广泛应用于掌上电脑、无线通信、路由器、工业控制等领域。S3C2410X能够提供繁多接口控制,可以运行大型的操作系统。它较高的始终频率、高级的存储管理系统及丰富的外设接口很好地符合了本系统的设计要求。
B 系统的硬件设计
通常而言,嵌入式设备的硬件结构是以嵌入式微处理器为核心,通过中央控制单元扩展接口以及平台硬件的技术支持,把各种各样的外设单元统一到整个系统中,并使用CPLD这种逻辑转换器件和其他硬件电路完成对外控制和操作。基于S3C2410X的硬件平台设计最主要的工作是外围电路的设计,它包含了系统总线、片选信号、存储系统、输入和输出设计。由于S3C2410X片上集成了非常多设备的控制器,设计外围电路变得很简单。本系统利用S3C2410X优异的内核性能和丰富的外设接口搭建一个嵌入式系统平台。下图表示了本文所设计的嵌入式网络服务器的硬件结构框图。
主要模块的功能:
CPU单元:S3C2410X16/32-bit ARM920T内核,内部带有全性能MMU(内存管理单元),具有开放式设计、
集成度高、可扩展性强、功耗低等特点。
存储器单元:64MB Nand Flash,64MB SRAM
电源管理单元:为系统提供5V、3.3V、1.8V的供电电源。
复位电路:包含了上电复位和手动复位,需要至少保持4个时钟周期的有效低电平,才能是系统可靠复位。
时钟电路:外部12MHZ时钟输入,经内部PLL处理后到达200MHZ及32.768KHZ的RTC时钟输入。
网络接口:为系统提供以太网接入的物理通道。
4 系统的软件设计
设计嵌入式硬件平台成功以后就开始着手软件平台的设计,事实上嵌入式硬件平台是一个通用平台,以平台为基础搭建嵌入式Web服务器,必须综合考虑其通用性及对于硬件的可控制性。正是出于这样的考虑,本文分三层组建嵌入式Web服务器的软件系统:ARM Linux的建立,Boa服务器的移植与组件,CGI程序的扩展。
A ARM Linux的建立
ARM Linux的建立是在U-Boot的基础上实现,它的建立实际上是Linux内核在S3C2410上移植的过程,分成下面3个步骤:建立交叉编译环境,编译内核,生成并设置根文件系统。下面简要介绍3个步骤的实现。
(1)建立交叉编译环境:建立交叉编译环境的过程其实就是对交叉编译器的压缩文件解压缩的过程。在本文中,所有的软件代码包都放在/tools目录下,解压缩所要用到的指令序列在此不做多余说明,其解压缩包路径为/usr/local/arm_cross。
(2)交叉编译Linux内核:在开始交叉编译Linux之前,设置好编译选项是很重要的。执行“makemenuconfig”指令,进入系统种类选项。本文中选择对S3C2410系统开发板的支持,然后配置文件系统以及块设备。保存设置后要修改Make-File文件,即把交叉编译的路径指定为本文中安装的目标目录,修改语句为:CROSS Compile=/usr/local/arm_cross/3.4.1/bin/arm-Linux-。最后输入makedeep;Makeclean;Make zImage命令编译内核,得到内核压缩映象文件zImage。
(3)生成并设置根文件系统:生成并设置文件系统的基本步骤有:安装busybox工具包(首先解压缩busybox压缩文件包,在解压缩文件目录下修改MakeFile文件,然后充分利用install操作指令完成安装);创建文件系统的映象文件(首先创建img目录,接着进入根目录创建一个空白的映象文件,加载已经建立好的文件系统,并复制文件系统中一些必须的文件);设置文件系统(在经过上述步骤后,已经产生了文件系统所必须的一些文件,但是需要配置根路径,即在根路径下添加必不可少的目录、文件并且正确设置其属性)。
B Boa服务器的移植与配置
Linux下主要使用的嵌入式网络服务器主要有:httpd、thttpd、Boa等几种。httpd是最简单的一个网络服务器,它的性能较弱,不支持认证,不支持CGI。thttpd和Boa都支持认证、CGI等,功能都较为齐全。为了实现动态网络页面,我们决定选择实现一个支持CGI的、很适合于嵌入式系统的Boa服务器。Boa是一个单任务的HTTP服务器,源代码开放、性能强悍,Boa的优点在于其高效性和可靠性。本设计中,操作系统选用ARM Linux操作系统,服务器选用开源的Boa。
基于Boa建立嵌入式网络服务器可分为以下步骤完成:
(1)建立交叉编译环境并下载Boa源码包解压:交叉编译环境在构建ARM Linux时已经建立了,这里编译Boa使用同样的交叉编译器,所以不需要重新建立一遍。Boa的源码包可以从http://www.boa.org下载并解压。
(2)安装并编译Boa源代码:在编译之前,需要在/boa/src/configure文件中加入cc和cpp的说明,同时修改Makefile里的CC=/usr/local/arm_cross/3.4.1/bin/arm-Linux-,还要指定网络服务器的根目录路径(SERVER_ROOT),具体方法是:进入/boa/src/目录,在define.h文件中添加#defineERVER ROOT”/hoem/httpd ”。然后编译#./configure,修改Makefile文件,找到CC=gcc,将其改成CC=arm-linux-gcc,找到CPP=gcc-E将其改成CPP=arm-linux-gcc-E,保存退出。然后运行make进行编译,得到的可执行程序为Boa,并将调试信息剥去。
Make
arm-linux-stripboa
在boa/src目录下将生成boa文件,该文件即为Boa服务器执行文件。
(3)配置Boa服务器:为了能够在硬件平台上运行网络服务器Boa,还需要对其运行环境、参数等进行设置,并将最终的配置文件Boa.conf置于适当位置。通过修改配置文件Boa.conf可实现对网络服务器的配置,部分配置为:侦听端口使用80端口;访问日志AccessLog存放
于/var/log/boa/accesslog;错误日志ErrorLog位于/var/log/boa/errorlog;文件的根目录DocumentRoot设在/home/httpd;KeepAliveMax的值修改为50;KeepAliveTimeOut的值修改为10;设置CGIPATH为/cgi-bin等;在Boa.conf的最后加上ServerNameEmServer,即将Emserver作为服务器名称。最后将修改好的配置文件Boa.conf存放于嵌入式系统根文件/etc/boa目录下。通过镜像制作工具执行命令genromfs-fromfs.img-drom-disk生成romdisk的镜像文件romfs.img,将romfs.img通过Boot-Loader下载到flash存储器。
(4)测试Boa的运行:为了确保Boa的正常运行,利用简单的测试程序测试Boa的运行情况。在目录/home/Httpd/下建立index.html文档用来测试主页面,images为存放各种图片的子目录。根据boa.conf的配置,将前面交叉编译过的嵌入式数据库也放到/home/boa/cgi-bin/目录下,然后运行boa了。设ARM的Ip地址为211.69.77.71。在计算机机上运行浏览器进行测试,在地址栏输入目标系统IP,即211.69.77.71,可以看到相关页面,表示Boa可以正常获取页面。
C CGI扩展设计
CGI是通用网关接口(Common Gateway Interface)的缩写,它是网络服务器主机与外部扩展应用程序交互的一种标准接口。其主要功能是在网络环境下,从客户端
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[152922],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。