基于ARM9的嵌入式Web服务器Boa的软硬件设计及其实现Word文档下载推荐.docx
- 文档编号:16766154
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:49
- 大小:2.15MB
基于ARM9的嵌入式Web服务器Boa的软硬件设计及其实现Word文档下载推荐.docx
《基于ARM9的嵌入式Web服务器Boa的软硬件设计及其实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于ARM9的嵌入式Web服务器Boa的软硬件设计及其实现Word文档下载推荐.docx(49页珍藏版)》请在冰豆网上搜索。
随着计算机技术的发展,嵌入式系统已成为计算机领域的一格重要组成部分。
以ARM体系结构设计的微处理器具有高性能、低功耗和低成本的特点,它广泛应用于嵌入式系统设计领域,是目前最广泛的32位微处理器。
以前设备控制系统一般是通过通信线路进行的,其通信介质、通信协议、相关软件和硬件都是专用的,而Internet技术的发展使嵌入式设备的远程控制和管理方式有了改变。
不需要专用的通信线路,并且传输的信息不局限于数据信号,还有声音和图像。
最终要的是其通信协议是标准且公开的。
随着Web技术的发展,几乎改变了现在的信息表达形式,很多应用都是基于Web技术的。
由于HTML语言的标准统一性,只要在嵌入式设备中有一个微型服务器,就可以使用任意一种Web浏览器接收和发送信息。
所以如何设计这种特别的Web服务器,如何在嵌入式设备中安装Web服务器,就成了嵌入式Web服务器的发展和研究方向。
对于嵌入式Web服务器的研究和应用,其意义是重大的,它为我们管理、控制和监测各种各样的设备提供了一个很好的途径。
这种设备可以是具有有限内存资源的8位或16位系统,已足够提供一个用户界面,而且这种方式是基于Internet的。
这种设备可以在世界任何一个地方,只要它连入Internet就能够控制它。
如今国内外有大量嵌入式应用软件已广泛用于各类嵌入式系统中。
但是国内现状对于嵌入式Web服务器方面的研究不容乐观,而国外的相关研究则相对较多。
如Pharlap公司的MicroWeb,AgranatSystem公司的EmWeb、emWare公司的emMicro,Allegro公司的RomPager,WindRiver公司的Wind等等,国内的有Webit。
面对国内外嵌入式Web服务器技术发展的差距,考虑到其广泛的应用前景,这一技术的研究和开发具有一定的迫切性和必要性[2]。
第二章课题背景
这章对嵌入式系统作了定义,详细介绍了嵌入式Linux以及嵌入式Linux在现代嵌入式系统中的地位,最后介绍了本次课题的硬件平台。
2.1嵌入式系统简介
嵌入式系统被定义为:
以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。
嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
2.2嵌入式系统和Linux
随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。
尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、pSOS、Nucleus和WindowsCE。
但这些专用操作系统都是商业化产品,其高昂的价格使许多生产低端产品的小公司望而却步;
而且源代码封闭性也大大限制了开发者的积极性。
另外结合国内实情,当前国家对自主操作系统的大力支持,也为源码开放的Linux的推广提供的广阔的发展前景。
还有,对上层应用开发者而言,嵌入式系统需要的是一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。
在不久的将来,从冰箱到收音机都会内置处理器。
因为Linux的开放性,许多人认为Linux非常适合多数Internet设备。
他们认为Linux可以支持不同的设备,支持不同的配置。
Linux对厂商不偏不倚而且成本极低,能够很快成为用于各种设备的操作系统。
如今,业界已经达成共识:
即嵌入式Linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。
Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务多进程的操作系统。
支持广泛的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC,MOTOROLA等现有的大部分芯片。
程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNUGeneralPublicLicense)下发行,这样,开发人员可以对操作系统进行定制,再也不必担心像MSwindows操作系统中"
后门"
的威胁。
同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。
Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。
Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。
Linux还提供了强大的网络功能,有多种可选择窗口管理器(Xwindows)。
其强大的语言编译器gcc、g++等也可以很容易得到。
不但成熟完善、而且使用方便[7]。
选择Linux的原因:
1.可应用于多种硬件平台。
Linux已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。
原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。
2.Linux可以随意地配置不需要任何的许可证或商家的合作关系。
3.它是免费的,源代码可以得到。
这是最吸引人的。
毫无疑问,这会节省大量的开发费用。
4.它本身内置网络支持。
5.Linux的高度模块化使添加部件非常容易。
6.Linux在台式机上的成功,使大家看到了Linux在嵌入式系统中的辉煌前景。
2.3ARM9硬件平台
2.3.1ARM简介
广义地讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。
它是嵌入到对象体系中的专用计算机系统,以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
ARM作为嵌入式系统得核心,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字,目前非常流行的ARM内核有ARM7TDM1、StrongARM、ARM720T、ARM9TDM1、ARM920T、ARM940T、ARM946T、ARM966T、ARM10TDM1等。
本文所讨论的目标板的CPU为ARM920T内核的三星S3C2410芯片。
下面介绍该微处理器的特点及其应用领域。
ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。
它具有以下特点:
●提供1.1MIPS/MHz的5级流水线结构;
●支持32位ARM指令集和16位Thumb指令集;
●支持32位高速AMBA总线接口;
●全性能MMU,支持WindowsCE、Linux、PalmOS等主流嵌入式操作系统;
●MPU支持实时操作系统;
●支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
它包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。
S3C2410X是一款由Samsung公司设计的低功耗、高集成度的基于ARM920T核的微处理器。
这款芯片集成了以下部件:
16KB指令Cache、16KB数据Cache、MMU、外部存储控制器、LCD控制器(STN和TFT)、NANDFlash控制器、4个DMA通道、3个URT通道、一个I2C总线控制器、一个I2S总线控制器,以及4个PWN和1个内部定时器、通用I/O口、实时时钟、8通道10位ADC和触摸屏接口、USB主、USB从、SD/MMC卡接口等。
现在它广泛应用于PDA、移动通信、路由器、工业控制等领域[3]。
2.3.2JXARM9-2410ARM嵌入式教学实验系统
JXARM9-2410教学实验系统是一套硬软件集成的、基于ARM的完整教学实验系统,该系统包含丰富的硬件资源、完善而优越的调试手段和详尽的教学实验教程[9]。
JXARM9-2410目标处理器采用Samsung公司的S3C2410X微处理器,开发平台采用武汉创维特信息技术有限公司的ADT集成开发环境,嵌入式开发的所有过程都可在该环境下完成。
系统有以下组成部分:
◆ADTIDE集成开发环境;
◆ADTEmulatorforARMJTAG仿真器;
◆JXARM9-2410系列教学实验箱;
◆各种连接线、电源适配器以及实验指导书等;
◆教学实验系统配套光盘。
JXARM9-2410ARM教学实验系统基本实验模型如图1所示:
图1.实验模型示意图
第三章嵌入式Web服务器
3.1概述
随着网络技术的发展,使得B/S(客户端/服务器)应用方式已成为一种潮流。
它的基础是客户端要有一个浏览器程序,服务器端要有一个对应的Web服务器。
一般网站都采用大型的通用Web服务器,但对于一般的管理信息系统或中小型应用系统,所需的功能比较简单,如仍采用通用Web服务器,无疑是资源的浪费。
解决方法是使用功能相对简单,体积更小、消耗资源更少的简单Web服务器,于是嵌入式Web服务器就应运而生了。
3.2Web服务器原理
从功能上来讲,Web服务器监听用户机的服务请求,根据用户请求的类型提供相应得服务。
用户端使用Web浏览器和Web服务器进行通信。
Web服务器在接受到用户端的请求后,处理用户请求并返回需要的数据。
这些数据通常以格式固定、含有文本和图片的页面出现在用户端浏览器。
3.3嵌入式Web服务器实现原理
嵌入式Web服务器是指将Web服务器引入到现场嵌入式设备中,并驻留其中有限的代码空间内。
与传统的Web应用相比,简化了系统结构,并将信息采集和信息发布都集成到现场的嵌入式设备中。
在相应得软硬件平台支持下,利用标准的接口形式和通信协议,内嵌于嵌入式设备的Web服务器可以向任何接入到它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面,此时浏览器成了设备的前端控制板。
当前在嵌入式应用领域,嵌入式系统转变为嵌入式WebServer,大体可分为2种实现方案[1]:
(1)基于网关服务器的嵌入式设备Internet接入;
(2)直接实现TCP/IP的嵌入式设备Internet接入。
本课题中采用第二种实现方案。
3.3.1TCP/IP协议
TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。
TCP/IP是Internet的基础协议,也是一种电脑数据打包和寻址的标准方法。
在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。
在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。
因此,TCP/IP在Internet中几乎可以无差错地传送数据。
在TCP/IP协议基础上建立的HTTP超文本传输协议、FTP文件传输协议、Telnet远程登录协议以及SMTP邮件协议等协议簇构成了Web技术的核心。
同时,Web服务器同Web浏览器之间的通信是通过HTTP协议进行的,这一通用的、无状态的、面向对象的协议HTTP协议是Web浏览器和Web服务器之间的应用层协议,也是基于TCP/IP协议的。
为了勾勒TCP/IP在现实网络世界中所扮演的角色,请考虑当使用HTTP的Web浏览器从连接在Internet上的Web服务器上获取一页HTML数据时所发生的情况。
为形成同Web服务器的虚链路,浏览器使用一种被抽象地称为称为套接口(socket)的高层软件。
为了获取Web页,它通过向套接口写入HTTPGET命令来向Web服务器发出该指令。
接下来套接口软件使用TCP协议向Web服务器发出包含GET命令的字节流和位流,TCP将数据分段并将各独立段传到IP模块,该模块将数据段转换成数据报并发送给Web服务器。
嵌入式系统TCP/IP协议选择时遵循的原则是:
首先,嵌入式系统中实现的协议要根据系统自身的特点以及功能来设计自己的协议簇,实现与需要有关的部分,不使用的协议一概不考虑;
其次,对于要使用的协议也根据实际应用情况做取舍。
考虑到嵌入式Web服务器的硬件处理速度慢并且存储容量相对较小的条件限制,在TCP/IP协议栈中主要能够实现ARP,IP,ICMP,TCP,HTTP协议即可[6]。
3.4嵌入式Web服务器Boa
3.4.1Boa概述
目前有很多功能强大的Web服务器,主要包括Apache,httpd,thttpd和Boa[5]
等几种。
其中httpd最小,只需几千字节的空间,功能简单,但不支持CGI;
Apache,thttpd和Boa支持CGI。
其中Boa是一个单任务的小型HTTP服务器,源代码开放、性能优秀,运行所需空间仅为140KB左右,特别适合应用在嵌入式系统中。
虽然本文中所用到的嵌入式Linux的Web服务器也可以通过自行裁剪Apache服务器得到,但是Apache服务器是采用传统的生成子进程的方式来提供服务的形式,这种形式比较适合服务比较复杂的情况,性能上并没有但进程的服务器高,尤其在高负载的情况下更是如此。
Boa与Apache等高性能的Web服务器主要的区别在于它们是单进程服务器,只有在完成一个用户请求后才能响应另一个用户的请求,而无法并发响应,但这在嵌入式设备的应用场合里已经足够了。
而且从对CGI支持的性能指标[15]可知,Boa对CGI的支持效果最佳。
除此之外,Boa与其他Web服务器相比主要有以下几个优点:
1对CGI程序无需设置REMOTE-HOST环境变量,在REMOTE-ADDR变量中已经提供了IP地址,可以直接使用gethostbyaddr函数或变量,从而使Boa较其他Web服务器更易于使用;
②在Boa中对Server2side模块可以剪裁,以提高系统运行速度,其内部的“字节流执行引擎”采用了非完全的图灵机方式实现;
③不存在访问控制特征,采用符号连接方式进行控制,可以对任何可以读取的文件提供服务,因此速度更快。
所以,本课题中选择Boa作为嵌入式Linux系统的Web服务器.
3.4.2Boa的功能实现
嵌入式Web服务器Boa和普通Web服务器一样,能够完成接收客户端请求、分析请求、响应请求、向客端返回请求结果等任务。
它的工作过程主要包括:
(a)完成Web服务器的初始化工作,如创建环境变量、创建TCP套接字、绑定端口、开始侦听、进入循环结构,以及等待接收客户浏览器的连接请求;
(b)当有客户端连接请求时,Web服务器负责接收客户端请求,并保存相关请求信息;
(c)在接收到客户端的连接请求之后,分析客户端请求,解析出请求的方法、URL目标、可选的查询信息及表单信息,同时根据请求做出相应的处理;
(d)Web服务器完成相应处理后,向客户端浏览器发送响应信息,关闭与客户机的TCP连接[5]。
嵌入式Web服务器Boa根据请求方法的不同,做出不同的响应。
如果请求方法为HEAD,则直接向浏览器返回响应首部;
如果请求方法为GET,则在返回响应首部的同时,将客户端请求的URL目标文件从服务器上读出,并且发送给客户端浏览器;
如果请求方法为POST,则将客户发送过来的表单信息传送给相应的CGI程序,作为CGI的参数来执行CGI程序,并将执行结果发送给客户端浏览器。
Boa的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。
本课题中BOA整体工作流程如图2所示:
图2.Web服务器Boa的执行流程
第四章CGI技术
4.1CGI概述
CGI(通用网关接口)是用于Web服务器和外部应用程序之间信息交互的标准接口。
Web服务器原本是为静态HTML文档以及其他相关静态文件而设计的。
如果一个Web服务器的功能只限于提供静态页面的花,那么与之通信的Web浏览器就只能显示在页面请求和显示过程之间文档内容不变化的页面。
CGI规范在Web服务器和浏览器(又称客户机)之间建立了标准的信息交换方式。
使用它使得信息在浏览器或服务器与外部程序之间流动,外部程序在处理之后将处理结果送回用户端浏览器。
外部程序通常称为CGI程序、CGI脚本、CGI应用程序或简称网关,因为它运用了CGI规范并为实现Web平台的功能而专门设计。
在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的内容进行一些处理。
没有了CGI,Web的世界就完全失去了它的交互性,所有的信息都变成单向的了,而不能够有任何的反馈。
4.2CGI工作原理
系统嵌入式Web服务器通过CGI程序来获取用户的请求、查询条件,使用HTML方式描述结果并直接回送到客户端的浏览器上,此过程中浏览器将用户输入的数据送到Web服务器,Web服务器将数据使用STDIN(标准输入)送到CGI程序。
在执行CGI程序后,会访问数据库的记录,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器显示给用户。
使用CGI实现客户与服务器的交互分以下几个标准步骤:
(1)Web客户(浏览器)通过URL与Web服务器相连;
(2)服务发送HTML(和别的组成请求页面的文件)给客户,一旦页面内容传完,这个连接自动断开;
(3)在客户方,HTML脚本提示用户做动作或输入,当用户响应后客户请求Web服务器建立一个新的连接;
(4)一旦连接建立,客户把用户输入的数据传给Web服务器;
(5)Web服务器把这些信息和别的进程变量传给由HTML以URL形式提交的CGI程序;
(6)CGI程序根据输入作出相应的操作,产生对客户的响应(一般以一个HTML文档的形式),并将其传给Web服务器;
(7)Web服务器把应答数据传给客户,并关闭连接;
在客户方,用HTML标记的方式来触发处理过程,该标记和其它标记的解释方式一样。
在服务器下,Linux环境变量、命令执行参数和标准输入输出文件都可用于Web服务器与CGI程序之间的通讯。
CGI工作过程图3所示:
图3.CGI工作原理
其中CGI与表单之间的信息交互方法有两种模式:
“GET”和“POST”。
选择哪一种模式取决于表单(FORM)的“METHOD”字段的设置,如果METHOD设定为GET,CGI程序从环境变量QUER_STRING中获取数据.为了解释数据和执行需要的动作,CGI程序必须要分析(处理)此字符串;
如果METHOD设定为POST,数据会以STDIN方式送入CGI接口。
服务器在数据的最后没有使用EOF字符标记,因此程序为了正确地读取STDIN,必须使用CONTENT_LENGTH值。
在本课题中CGI程序采用的是POST方法。
如果想从服务器获得数据并且不改变服务器上的数据时,应该选用GET方法;
也有例外,当传输的数据很长时,选用POST方法较好;
使用GET方式编写CGI程序会更加简单,但是POST方式则更先进;
当发送的数据将改变Web服务器端的数据时,或者想给CGI程序传输大量数据(一般地,超过1024字节,这是URL的极限长度)时,应该选用POST方法[14]。
第五章建立嵌入式系统开发环境
本章详细介绍了嵌入式系统开发环境的建立,Linux的安装配置,目标板中U-boot的烧写等。
5.1在Vmware下安装Redhat9.0
1)安装Vmware,版本为VMware-workstation-5.5.3-34685。
2)在Vmware下创建虚拟主机。
a)运行Vmware,点击“新建虚拟机”,进入新建虚拟机的向导,如图4所示。
图4.新建虚拟机界面
b)选择“自定义”,点击下一步。
c)操作系统类型。
选择“Linux”,版本选择“RedHatLinux”,如图5所示,点击下一步。
d)虚拟机命名。
虚拟机名字下面是存放虚拟机配置文件的位置信息,选择程序默认的即可,点击下一步。
图5.操作系统选择界面
e)选择虚拟机所用的硬盘。
选择“使用物理硬盘”。
点击下一步继续时程序会给出了一个警告,表示使用物理硬盘创建虚拟机会有风险,如图6,点下OK继续。
图6.选择硬盘界面
f)选择硬盘。
选择一个并点击使用整个硬盘(entiredisk),点击下一步。
g)指定存储虚拟机配置信息的文件名,选择默认。
点击“完成”,界面如图7。
图7.虚拟机界面
3)修改虚拟机的设置。
Redhat9.0的安装包是从网上下载的三个镜像文件。
在虚拟主机管理界面上双击CD-R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM9 嵌入式 Web 服务器 Boa 软硬件 设计 及其 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)