微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 通用嵌入式Web服务器模块的设计与实现

通用嵌入式Web服务器模块的设计与实现

时间:11-24 来源:互联网 点击:
1 引言

从20世纪90年代中期开始, Internet以前所未有的惊人速度在全球蔓延,目前,几乎覆盖到了地球的每一个角落,成为计算机技术中的一个发展亮点;与此同时,嵌入式技术在最近十几年里也得到了飞速发展,被广泛应用于消费电子、通信网络、工业控制、汽车电子、医疗仪器、信息家电、航空航天、军事国防等众多领域。Internet与嵌入式技术相结合的产物———嵌入式Web服务器,是一个很有发展前景的研究方向,它将极大拓展嵌入式设备的应用范围,使嵌入式设备具有远程监控功能,而且可以使用通用PC的浏览器作为用户界面,操作简便,符合用户的使用习惯。

2 系统结构与工作原理

系统采用当前流行的B/S结构,这种结构是随着Internet技术的发展,对传统C/S结构的扩展和改造。实质上B/S结构是一种特殊的C/S结构,所不同的是,在B/S结构中,系统主要功能都在服务器端实现,浏览器是客户端,提供用户接口,将用户的请求传递到服务器,并将服务器的响应展现给用户。系统结构如图1所示。



分析嵌入式系统的具体情况,发现对于一般的嵌入式系统,基本的功能需求大体上分为两大类,可以用两个字来概括“监控”。“监”即监测,是数据采集和查看的过程,数据流的方向是从嵌入式系统到浏览器或上位机;“控”即控制,如设定工作参数、远程打开关闭现场的设备等,控制流的方向是从上位机或浏览器到嵌入式系统的。总而言之,就是要实现信息(上行的数据流和下行的控制流)的双向流动。

(1)嵌入式服务器端包含———“监”功能的实现。对于上行的数据流,通过嵌入式服务器端包含技术(ESSI)来实现。服务器端包含(SSI)是在普通静态HTML语言中嵌入SSI指令,以便将文本、图形或应用程序信息包含到网页中。例如,可以使用SSI包含时间/日期戳、版权声明等。嵌入式服务器端包含是对服务器端包含技术的改造和完善,使其适应于嵌入式系统的软硬件环境。在本系统中,自定义了一条ESSI指令“DATA”,用来实现动态信息的实时显示,该指令的语法如下: < DATA var = state func = Get-State></DATA>,该指令与标准的HTML标记兼容,其属性有两个,分别为var和func, var表示设备的状态名称,一个设备可以定义多个状态名; func管理接口函数,
用来获得相应设备的状态信息,原型为uint8* func( )。嵌入式服务器端包含技术的运行过程如图2所示。

(2)嵌入式通用网关接口———“控”功能的实现。对于下行的控制流,通过嵌入式通用网关接口(ECGI)来实现,如图2所示。在需要向嵌入式设备下达控制命令的情况下,借助表单的POST方法[5, 6]向服务器传递数据,表单的语法格式如下:



FORM =“<form”SPATTRIBUTES“>”<a setof stand-ardHTML elements>“</form>”
ATTRIBUTES =* (ATTRIBUTE SP)ATTRIBUTE =ATTRIBUTENAME“=”TOKEN
ATTRIBUTENAME = name |methodTOKEN = 1* <anyCHAR exceptCTLs or separators>
SP = <US-ASCII SP, space (32)>

CHAR =<anyUS-ASCII character (octets 0 - 127)>
CTL = <anyUS-ASCII control character(octets 0 - 31) and DEL (127)>

表单的name属性指定了管理接口函数名,此函数用来处理表单数据,原型为void TestForm(uint8*
content), content是浏览器传送过来的参数;表单的另一个属性method指定了浏览器向服务器传送数据的方式。为进一步阐述ECGI的工作原理,举例如下:

<form name=“TestForm”method=“POST”>
<p>TestEmbedded Common Gateway Interface </p>
<p><input type=“text”name=“var1”></p>
<p><input type=“text”name=“var2”></p>
<p><input type=“text”name=“var3”></p>
<p><input type=“submit”
name=“Go”value=“OK”></p>
</form>

包含有上述表单的HTML文件传送到浏览器之后,网页上出现三个编辑框和一个submit按钮,用户在编辑框中输入参数,点击submit按钮后,浏览器向Web服务器传送以下内容:

var1=value1&var2=value2&var3=value3&Go=OK,

其中, value1、value2、value3为用户输入的参数,服务器接收到以上参数后,便调用表单的name属性指定的管理接口函数,从而实现对嵌入式设备的控制。

3 硬件系统设计

本系统的主要功能是监测现场的设备状态,及时将监测到的状态数据发布到网络上;同时接收来自用户的控制信息,利用这些控制信息准确地控制设备工作。因此,在硬件上,需包含以下几个模块:
嵌入式处理器、网络接口芯片和有关I/O接口。

3. 1 硬件原理框图

系统的硬件原理框图如图3所示,嵌入式处理器LPC2292处于中心位置,设备的状态数据经过处理器打包后,经由RTL8019AS发布到网络上,供用户浏览,用户的控制命令经过RTL8019AS传递到处理器LPC2292,再由处理器控制相应的设备执行相应的控制命令。



3. 2 嵌入式处理器

嵌入式处理器采用了Philips公司的基于ARM7TDMI内核的处理器LPC2292,该处理器具有16 kB片内静态RAM和256 kB片内Flash程序存储器;可以通过片内boot装载程序实现在系统编程(ISP)和在应用编程(IAP),编程速度快, 512字节行编程时间为1ms,单扇区或整片擦除时间为400ms;同时还内置丰富的外设接口,如:A/D转换器、CAN控制器、UART接口、I2C接口、SPI接口、定时器、RTC实时时钟和看门狗等,极大的简化和方便了应用系统的设计,提高了系统的可靠性。

3. 3 网络接口芯片

网络接口芯片采用Realtek公司的RTL8019AS,它是一种高度集成的以太网控制芯片,能简单的实现Plug and Play并兼容NE2000、掉电等特性。同时还支持全双工模式,能够实现网络数据的同时发送和接收。RTL8019AS芯片内部集成了DMA控制器、ISA总线控制器和16K SRAM、网络PHY收发器。用户可以通过DMA方式把需要发送的数据写入SRAM中,让芯片自动将数据发送出去;而芯片在接收到数据后,用户也可以通过DMA方式将其读出。

3. 4 其它模块

RS232电路有两个作用,首先可以用作在系统编程(ISP),方便了LPC2292中软件的升级和调试,提高了效率;其次,在系统运行时,充当与外界通讯的一个通道。I2C和CAN电路可以用于扩展外围设备,完成系统在工业现场的控制任务和数据采集任务等。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top