基于ARM的嵌入式Web服务器的研究与实1.docx
《基于ARM的嵌入式Web服务器的研究与实1.docx》由会员分享,可在线阅读,更多相关《基于ARM的嵌入式Web服务器的研究与实1.docx(14页珍藏版)》请在冰豆网上搜索。
![基于ARM的嵌入式Web服务器的研究与实1.docx](https://file1.bdocx.com/fileroot1/2023-1/9/c474da45-ce64-4f4f-b863-15f97c146133/c474da45-ce64-4f4f-b863-15f97c1461331.gif)
基于ARM的嵌入式Web服务器的研究与实1
基于ARM的嵌入式Web服务器的研究与实现
姓名:
索楠
专业:
系统工程
学号:
s2*******
基于ARM的嵌入式Web服务器的研究与实现
第一章绪论
1.1引言
Internet的迅猛发展促进了全球信息的共享和交流。
同时人们也越来越希望通过网络来实现远程信息的获取和设备的控制,嵌入式系统的发展在一定程度上满足了这方面的需求。
通过在嵌入式系统中内置Web服务器,用户可以很方便地浏览系统的信息和控制设备的运行参数,从而实现设备的远程监控。
1.2课题的目的和意义
课题的目的是构建一个实现特定功能的嵌入式Web服务器,它可以对远程设备进行监控,用户可通过网络远程访问Web服务器来实现数据的采集和历史数据的查询,也可以通过各种接口对远程设备进行控制。
此外,还可以根据需要添加新的控制功能,而不需对Web服务器的框架进行大的改动。
本文所实现的嵌入式Web服务器具有一般性,经过改进后可以用于工业控制或智能家居等系统,因此具有一定的现实意义。
系统可以用于远程温度、湿度等物理量的采集,也可以用于远程图像的传输。
通过嵌入式系统的各种接口,还可以实现设备的远程控制。
由于Internet的普及,借助于Internet可以快速、可靠地传递各种控制信息。
而嵌入式系统具有成本、体积、功耗等方面的优势,因此,将嵌入式系统与Internet结合起来,是其发展的潮流与趋势。
Internet中发展最快而且最先被广泛使用的是WWW服务,Web服务器与Web浏览器提供了方便而稳定的服务,通过在嵌入式设备中增加TCP/IP协议栈并构建Web服务器,用户就可以通过Web浏览器远程监控并管理该设备。
用户可以在任何地点用标准Web浏览器(如IE和Netscape浏览器)访问嵌入式web服务器,而不需要编写任何客户端程序。
嵌入式Web服务器可以提供丰富多彩的信息,如数据、文字、图像、表格、语音等,数据还可以实时更新,对设备控制的结果也可以立即得到反馈。
在工业应用领域,在智能设备、仪器和传感器等领域使用嵌入式web服务器是很有意义的。
这些设备中内置嵌入式web服务器,在用户端浏览器中可以显示动态HIML页面,并且可以在页面中进行系统的配置和设备参数的调整。
正因为如此,传统的C/S结构控制模式正逐步向B/S结构转移,这样可以降低成本,而且不必要开发客户端的GUI。
综上所述,开发嵌入式Wcb服务器具有很重要的现实意义和应用价值。
1.3课题的国内外研究现状
目前嵌入式系统和Internet结合的难点在于嵌入式系统如何接入网络,一般来说,嵌入式设备增加TCP/IP协议就可以接入Internet,但具体实现的技术多种多样,嵌入式系统的Internet接入技术有直接接入、嵌入式网关、嵌入式系统+TCP/IP协议3种技术模型。
(1)直接接入技术。
通过在嵌入式系统本身添加网络接口硬件和相应的软件实现嵌入式系统与Internet的直接互联。
大部分32/64位微处理器采用了这种直接接入技术。
这种接入方式具有很大的灵活性,但占用的系统资源比较多,对微处理器的要求也很高。
(2)嵌人式网关技术实现。
对于具有大量嵌人式设备的嵌人式系统来说可以考虑间接接入方式。
在这种方式中,嵌入式系统和嵌入式网关连接通信,连接方式采用传统的RS-232、RS-485、SPI、USB、CAN总线等轻型网络协议,再由嵌入式网关负责实现TCP/IP协议,并与Internet连接,完成嵌入式系统和Internet的信息互交。
(3)嵌人式系统+TCP/IP协议芯片实现方式。
在这种方式中,TCP/IP协议通过硬件固化到网络芯片上,通过标准的输人输出接口,可与绝大多数单片机相连,如目前市面上出售的网络芯片韩国WIZnet公司的12chipW3100A、美国SeikoInstruments公司的ichip57600等,这类芯片具有速度快、使用方便的特点,但增加了硬件成本。
目前国内外嵌入式系统软件、支撑软件及应用软件这几年的发展比较迅速,嵌入式操作系统方面国外有VxW0rks、WinCE、PalmOS、EPOC、LynxOS、µClinux等。
我国也开发出桑夏2000、DeltaOS、中软Linux2.0、红旗Linux及东方Linux等。
嵌入式数据库国外有ProgerssROBMS、InfomixCloudecape等,我国则有东大阿尔派OpenBase等。
但是在嵌入式Web服务器研究方面国内的现状不容乐观,目前国外有很多相关的研究项目,发展比较迅速,图1-1是XeroxPARC公司的一个WebServer,它有16MB的DRAN和1MB的flash,在Vxworks操作系统上运行SpyglassWebserver软件,能够提供办公环境下的嵌入式应用。
美国华盛顿大学也开发了类似的项目,以µClinux作为平台,在上面设计了一个多功能的WebServer。
其他的嵌入式Webserver产品还有Pharlap公司的MicroWeb、AgranatSystems公司的EmWeb、emWare公司的enMicro、Allegro公司的RomPager、WindRiver公司的Wind,还有Enea、PicoWeb、ChipWeb等。
图1-1XeroxPARC公司的嵌入式WebServer
国内目前做得比较好的有力源公司、华恒公司等。
力源公司有一种WebChip芯片,MCU应用系统通过Webchip网络芯片与网关连接.再接Internet.Webchip内部固化了MCUNet协议,他与emGatemay协议和OSGi协议兼容,应用系统设计工程师不必考虑任何网络协议,只需要解释并执行Webchip传递过来的指令和数据就可以实现与Internet网络连接,改方式与应用系统的连接比较简单,但仍然需要配套的网关,才能与TCP/IP建立起连接。
嵌入式Web服务器因其开发简便、使用方便的特点而广泛应用于以下领域:
工业自动化系统、家政系统、安全防火防盗系统、视频监控系统等。
鉴于目前国内外嵌入式Web服务器技术旋展的差距.而嵌入式Web服务器又有着良好的应用前景,园此我们应该加大这方面的研究和开发力度。
第二章嵌入式Web服务器及其架构
在设计嵌入式系统之前需要对嵌入式系统的特点和基本结构有一个清晰的了解;同样在设计嵌入式Web服务器之前需要对其特点和架构有一个全面的认识。
2.1嵌入式系统及其特点
2.1.1嵌入式系统的定义
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
2.1.2嵌入式系统的特点
一、硬件方面:
(1)稳定性,表现在对元器件的选择、接插件的质量要求、电源的稳定性等方面;
(2)低功耗,一方面出于省电,另一方面出于散热考虑;
(3)体积受限,这是被嵌入的对象系统的要求;
(4)看门狗电路,系统不受干涉长期运行的需要;
(5)成本控制严格,够用即可;
(6)内存一般较小、处理器一般不带浮点运算单元。
二、软件方面:
(1)实时性,在早期很重要,近来有所模糊;
(2)可裁减性;
(3)精简性,系统代码一般都固化在ROM中;
(4)人机界面要求不高。
2.1.3嵌入式系统基本结构
嵌入式系统主要由硬件部分和软件部分组成,如图2-1所示。
1.嵌入式系统的硬件组成
嵌入式系统的硬件是以嵌入式处理器为核心,配备必要的外围接口电路。
嵌入式处理器可分为4类:
(1)嵌入式微处理器(Microprocessor),嵌入式微处理器就是与通用计算机的微处理器对应的CPU,如PowerPC、Motorola68k系列、ARM等。
(2)嵌入式微控制器(Microcontroller),嵌入式微控制器就是将微处理器和一些外围接口电路集成到一块芯片中,其特点是但片化,体积大大减小,从而使功耗和成本降低,可靠性提高,典型的嵌入式微控制器如8051系列、MC68HC05等。
图2-1嵌入式系统的基本组成
(3)嵌入式DSP.嵌入式DSP主要用于数字信号处理如数字滤波、FFT、谱分析等场合,典型的如TI公司的TMSC5000、6000系列等。
(4)嵌入式片上系统,嵌入式片上系统SOC(SystemOnChip)是指在一个硅片上集成CPU、各种外设控制器等多个功能单元,从而构成一个完整的复杂硬件系统,这样整个嵌入式系统大部分可以集成到一块或几块芯片中去,有利于减小体积和功耗,提高系统的可靠性。
嵌入式外围接口是指在一个嵌入式系统中,除了核心部件以外的各种存储器、I/O接口、网络接口、串行通信接口等。
可分为以下几类:
(1)存储器接口。
典型的有Flash接口、SDRAM接口等。
(2)通信接口。
包括RS-232接口,USB接口、SPI接口、I2C接口、CAN接口、Ethernet接口、通用可编程接口GPIO等。
(3)输入/输出设备。
包括LED、LCD、触摸屏等,构成了嵌入式系统的信息输入/输出设备。
(4)扩展接口。
如CF卡、SD接口等。
2.嵌入式系统的软件组成
早期的嵌入式系统可能不需要操作系统,但随着系统结构的复杂化,如果有一个操作系统(EmbeddedOS)来管理和控制内存、进行多任务管理、管理系统各种资源,根据操作系统提供的各种功能来编写应用程序,可以大大简化开发流程,并相应减轻程序员的负担。
对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般可分为4个层次:
设备驱动层、嵌入式操作系统层、应用程序接口API层、应用程序层。
(1)设备驱动层。
设备驱动层一般包括硬件抽象层HAL、板级支持包BSP、设备驱动程序。
设备驱动层的主要作用是给上层软件(如OS)提供设备的操作接口,这样上层软件不需要知道设备的具体操作,只需要调用驱动层程序提供的接口即可。
(2)嵌入式操作系统层。
嵌入式操作系统与通用操作系统相比除了具备任务调度、进程间通信、内存管理等功能外,还有它自身的特殊性,嵌入式操作系统的特点有:
微内核、模块化、可方便裁减;
实时性,尤其对于控制系统;
强大的网络功能;
稳定性强、不依赖于交互操作;
代码固化:
可以适应多种体系结构。
(3)应用程序接口API层。
API是一系列复杂的函数、消息和结构的集合体。
嵌入式开发人员在编制应用程序时,不需要为每一种硬件或外部设备重新编制驱动程序,只需要调用系统提供的API函数即可完成相应的功能。
(4)应用程序层。
嵌入式系统应用软件建立在嵌入式操作系统和系统提供的API调用之上。
用户可以根据需要开发适合自己的应用软件,对于底层硬件并不需要知道太多的细节。
2.2嵌入式Web服务器技术
嵌入式Internet为我们指明了很好的发展方向,但如何通过网络与嵌入式系统进行交互则是一个现实的问题。
随着Web技术的发展,几乎改变了现在的信息表达方式,很多应用都是基于Web技术的,由于HTMI语言的标准统一性,只要在嵌入式设备中内置一个微型服务器,就可以使用任意一种Web浏览器接收和发送信息,所以如何设计这种特别的Web服务器,如何在嵌入式设备中安置Web服务器,就成了嵌入式Web服务器的发展和研究方向。
2.2.1嵌入式Web服务器的特点
嵌入式系统与通用计算机平台相比,无论在系统配置还是在性能上都有不小的差距。
因此在通用平台上实现的Web服务器技术如Apache等,无法在嵌入式平台上实现。
从应用角度来说,嵌入式Web服务器主要是基于远程控制和管理,因此在设计时需要考虑其专用性,嵌入式Web服务器的特点如下:
(1)嵌入式Web服务器的程序规模比通用Web服务器小得多,通用Web服务器相对而言功能更复杂、占用更多的内存空间。
嵌入式Web服务器一般代码量都在1万行以内,可执行文件的大小在100k以内。
这是因为嵌入式系统一般存储器容量较小,没有硬盘等存储设备。
(2)通用Web服务器一般运行在计算资源和内存都比较丰富的服务器上,通常都有希望实现高的吞吐率、短的响应时间。
在嵌入式系统中这些指标不一定有意义。
嵌入式Web服务器一般是针对特定访问人群的,因此单位时间内的访问量不会太大,甚至可以采取单进程设计技术。
(3)嵌入式Web服务器实现的功能有限。
通用Web服务器实现的功能复杂,可以提供各式各样的服务。
嵌入式Web服务器是为特定的目标而设计,只需要实现HTTP协议的基本功能,能够对目标系统实施有效地控制即可。
(4)在控制和生产领域,嵌入式系统一般要求具有实时性,在基于局域网络的嵌入式系统中,响应时间不会太长,为了保证实时性,需要结合嵌入式实时操作系统进行Web服务器的设计。
2.2.2嵌入式Web服务器的体系结构
嵌入式Web服务器是基于TCP/IP协议栈实现的,需要实现TCP、UDP、HTTP等协议,客户机在网络中任一点接入都可以浏览Web页面并对系统进行管理和控制,服务器端对客户的请求进行解析,生成相应的静态页面或动态页面返还给客户端,如果需要进一步控制,服务器端将调用相关的应用程序进行必要的处理。
嵌入式Web服务器的体系如图2-2所示。
2.2.3嵌入式操作系统简介
嵌入式系统的构建离不开操作系统的支持。
在早期的8/16位单片机应用中,许多简单的嵌入式系统可以不需要操作系统。
但随着嵌入式系统复杂度的增加,增加操作系统显然更有利于应用程序的开发和系统的升级维护。
图2-2嵌入式Web服务器的体系结构
嵌入式操作系统一般具有实时特性,嵌入式系统大多应用的实时环境中,因此嵌入式操作系统通常跟实时系统密切联系在一起。
所谓实时系统,是指一个优先级高的任务能够获得立即的、没有延迟的服务,它不需要等候任何其他服务,而且在得到CPU的使用权后,可一直执行到工作结束或者有更高级的任务出现为止,嵌入式操作系统的体系结构如图2-3所示。
图2-3嵌入式操作系统的体系结构
嵌入式操作系统相对于一般操作系统而言,仅指操作系统的内核(或者微内核),其他诸如窗口系统或通信协议等模块,可以另外选择。
目前大多数嵌入式操作系统必须提供以下功能:
(1)多任务管理。
所有的嵌入式操作系统都是多任务的。
多任务大都指多线程方式或多进程方式,这两者的运行机制不一样。
(2)存储管理。
与一般操作系统的存储管理相比,嵌入式操作系统的存储管理相对简单一些,通用操作系统一般使用虚拟存储,由于虚拟存储经常要对页面进行换入/换出操作,内存中页命中率和换入/换出所耗费的时间严重破坏了系统的确定性,这种存储机制很难保证系统的实时性,因此在系统资源非常紧张的嵌入式系统中,一般不采用虚拟的存储管理,而采用动态内存管理方式。
(3)各种资源管理。
在嵌入式系统中,除了中央处理器之外,还有许多外围设备,如输入/输出设备、通信接口、各种控制器等,操作系统必须提供这些设备的驱动程序,对这些资源进行有效的管理,以方便用户和应用程序使用,对于应用程序而言,它不需要知道这些设备驱动实现的细节,只需按照操作系统提供的接口来对设备进行操作即可。
(4)中断管理。
嵌入式操作系统和通用操作系统一样,一般使用中断方式来处理外部事件和I/O请求。
中断管理负责终端的初始化、现场的保存和恢复、中断栈的嵌套管理等。
第三章嵌入式Web服务器的硬件构造
3.1硬件总体框图
系统的硬件总体框图如图3-1所示
图3-1系统的硬件总体框图
系统大致可分为5个部分:
处理器模块、存储器模块、网络模块、输入/输出模块、电源和复位调试模块。
3.2S3C44B0X微处理器概述
目前ARM芯片已经占有32为微处理器80%左右的市场。
ARM公司专注于设计,而不生产芯片,ARM核以其高性能、小体积、低功耗、紧凑代码密度和多供应源的出色结合而著称。
ARM已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准。
本节介绍三星公司基于ARM7TDMI核的S3C44B0X芯片。
S3C44B0X的特点为:
(1)采用ARM7TDMI内核,I/O电压3.3V,内核电压2.5V;
(2)内置锁相环(PLL),系统主频最高达66MHz;
(3)4中工作模式,可以实现电源管理以降低系统功耗;
(4)8KB的系统高速缓存(CACHE),极大地提高了系统运行速度;
(5)支持8个MEMORYBANK,最大外部存储空间达256MB,并支持SDRAM;
(6)内置彩色LCD控制器;
(7)2路异步串口(UART);
(8)71个通用I/O口;
(9)实时时钟(RTC)和看门狗电路(WATCHDOG).
3.3硬件主要电路描述
3.3.1串口接口电路
异步串行接口电路如图3-2所示,开发板上有2个串口,每个串口都通过MAX232C芯片完成电平转换。
图3-2异步串行接口电路
3.3.2RTL8019AS接口电路
RTL8019AS采用16位总线模式,电路如图3-3所示。
途中,RTL8019AS是网卡芯片,外围引脚杀那个接20MHZ晶振。
网卡输出通过20F001N与RJ45接口相连接,20F001N是一个隔离变压器,主要作用是将网卡物理层的信号耦合到网线上去。
网卡引脚还接有2个指示灯D1和D2以指示网卡的收发状况。
图3-3RTL8019AS接口电路
第四章嵌入式Web服务器控制功能的实现
4.1如何实现控制功能
嵌入式Web服务器能够实现一定程度的控制功能,用户在浏览器端发送含有控制数据的表单,服务器端对请求数据进行解析,如果识别这是一个控制请求,就调用相关的函数进行处理。
这种方式可以很方便地对控制功能进行扩展,只需要编写相关的控制页面和控制函数即可,Web服务器主体结构则不需要改动。
4.2A/D控制的实现
本系统中实现的A/D控制功能主要有:
启动A/D转换、停止A/D转换、读取A/D转换的数据,它们分别由Start_Adc()、Stop_Adc()、Read_Adc()函数实现,通过对A/D的控制,可以方便灵活地实现数据采集。
类似地,用户可以在浏览器端启动或停止A/D转换,这些请求都由服务器端进行处理并调用相关函数完成。
下面分析与A/D控制有关的这些函数的工作流程。
(1)Start_Adc()
Start_Adc()函数很简单,其代码分析如下:
VoidStart_Adc(inti){
rADCCON=CON_ENABLE_START︱i<<2;/*i为通道口,rADCCON为ADC控制寄存器,这里是启动A/D转换*/
while(rADCCON&CON_ENABLE_START):
/*等待A/D转换完成*/
}
(2)Stop_Adc()
Stop_Adc()函数也很简单,其代码分析如下:
voidStop_Adc(void){
rADCCON=CON_SLEEP;/*设置rADCCON第5位为1,停止A/D转换*/
}
(3)Read_Adc()
Read_Adc()函数代码分析如下:
UndignedshortRead_Adc(intch){
rADCCON=0×1(ch<<2);/*开始A/D转换*/
while(rADCCON&0×1);/*避免标志FLAG错误*/
while(!
(rADCCON&0×40));/*等待AD转换结果*/
returnrADCDAT;/*返回AD转换值*/
}
4.3PWM定时器控制的实现
S3C44B0X具有6个16位定时器,其中定时器0/1/2/3/4具有PWM(脉宽调制)功能,每个定时器输出波形的频率和占空比(PWM)都可以编程控制,因此非常适合于工业领域的控制。
S3C44B0X的定时器结构如图4-1所示(以定时器0为例)。
图4-1S3C44B0X的定时器结构
图4-1中,TCNTB0决定输出波形的频率,TCMPB0决定波形的占空比。
通过改变TCNTB0和TCNPB0这两个寄存器的值,可以获得频率和占空比都可调的稳定输出波形。
通过浏览器来控制PWM定时器也正是基于这种机制。
用户在浏览器端输入要输出波形的频率(以HZ为单位)和占空比(百分比),Web服务器端从请求中已无频率和占空比参数,并调用Deal_StartTimer()函数处理,PWM定时器的处理流程如图4-2所示。
图4-2Web服务器重控制PWM定时器的流程
4.4串口控制的实现
S3C44B0XUART单元提供了2个独立的异步串行通信口,每个串口都可以操作在中断模式或DMA模式,支持波特率最大为115200bps,每个UART单元都包含一个16字节的接受与发送FIFO。
在µClinux中,是通过设备文件来访问串口的,即在访问前必须打开相应的设备文件,在44B0X开发板上,有2个串口UARTO和UART1,在µClinux中分别对应设备文件/dev/ttyS0和/dev/ttyS1。
在串口通信里,termios.h是个很重要的头文件,termios.h中定义了structtermios结构体。
串口的设置主要是设置structtermios结构体的各成员值。
structtermios{
unsignedshortc_iflag;/*输入模式标志*/
unsignedshortc_oflag;/*输出模式标志*/
unsignedshortc_cflag;/*控制模式标志*/
unsignedshortc_lflag;/*本地模式标志*/
unsignedcharc_line;/*行规程*/
unsignedcharc_cc[NCC];/*控制特性*/
speed_tc_ispeed;/*输入速度*/
speed_tc_ospeed;/*输出速度*/
最基本的串口设置包括波特率、流控、数据位和效验位的设置。
(1)波特率设置
波特率的设置使用cfsetispeed()和cfsetospeed()函数,这两个函数分别设置入口端和出口端的速率,他们是通过改变termios结构来实现。
cfsetispeed(structtermios*opt,speed_tspeed);
cfsetospeed(structtermios*opt,speed_tspeed);
(2)数据流控制的设置,如下所示:
termios.c_cflag&=~CRTSCTS;/*不使用流控*/
termios.c_cflagl=CRTSCTS;/*使用硬件流控*/
(3)数据位设置,如下所示:
termios.c_cflag&=~CSIZE;/*无数据位*/
termios.c_cflagl=CS8;/*8位数据位*/
(4)奇偶效验位设置,如下所示:
termios.c_cflag&=~PARENB;/*无效验位*/
termios.c_cflagl=PARENB;/*奇效验位*/
termios.c_cflag&=~PARODD;
termios.c_cflagl=PARENB;/*偶效验位*/
termios.c_cflag&=~PARODDD;
串口在工业控制中应用非常广泛,因此通过浏览器控制串口具有重要的现实意义。
本系统主要实现的串口控制功能有:
UART参数