王 亚
(江苏财经职业技术学院,江苏 淮安 223003)
随着嵌入式技术的快速发展,嵌入式系统的应用越来越广泛。嵌入式Web服务器EWS(Embedded Web Server)是指将Web服务器引入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议、Web技术为核心的基于互联网的网络测试和控制设备。嵌入式Web服务器简化了传统服务器的系统结构,它在嵌入式设备上同时实现信息传输和网络接口的功能。嵌入式Web服务器基于HTTP协议运作,有标准的接口形式和通信协议。它可以向任何接入它所在网络的合法用户提供统一的基于浏览器方式的操作和控制界面。Web技术的开放性和平台独立特性能够降低开发难度,减少软件系统和通信系统的设计维护工作量,提高了现场测试和控制设备的管理水平。
在工业设备上嵌入Web服务器,使得设备能与现今最大的网络Internet无缝连接,无需专用的线路。通信介质是以太网为基础,能有最大的普及范围;传输内容不仅限于数据,还有图像、声音等多媒体信息;通信协议(HTTP)是标准的而且是公开的,其独立于系统平台;所使用的超文本标记语言(HTML)具有统一性,标准化界面独立于客户端的软件硬件平台,极大地节省了客户端的开发工作;所使用的Web架构具有开放性和平台独立性,能够大大降低系统的设计工作量。同时,还能提供大量工具和函数库减少开发的工作量。在客户端使用任意与Internet互连的标准PC(标准浏览器)就可以实现随时随地访问。嵌入式Web服务器具有通用性,这使得它能够嵌入到任何设备中。通过应用程序接口,服务器可以运行程序去实现高级功能,这是普通的监控方式不能相比的。它具有可扩展的特性,通过应用程序接口实现各种具体的应用。此外,它还具备升级简单、维护容易等优点。
嵌入式Web服务器是应用在嵌入式系统上的Web服务器机构。目前的主要应用是设备管理和企业应用程序网络扩展。嵌入式Web服务器作为一个后台程序直接在嵌入式设备上运行,用户通过网络对设备进行配置、控制和监测,保证设备有效、高效地运作。Web接口使得用户可以在任何一台有互联网接入能力的带有Web浏览器的设备访问到该嵌入式设备。Web服务器提供应用程序接口可以扩展Web的应用。这种设备管理方式不仅起到监测和控制的功能,而且根据设备的特点可以更加人性化和智能化。它使对远程设备的操作从监控变为管理。另外一个应用是企业应用程序网络扩展。Web服务已成为支撑现代应用程序的技术和系统的核心组件,现今约87%的企业用户都希望为他们的程序添加上基于Web的用户接口。嵌入式Web服务器很好地提供了Internet网络的接口,将应用程序和Web接口结合起来,是应用程序网络扩展良好的解决方案。
本文设计的嵌入式Web服务器采用低价格、高性能的基于ARM7的LPC2210微控制器为主控芯片,通过SPI接口控制以太网控制器芯片ENC28J60实现TCP/IP通信。采用基于μC/OS-Ⅱ操作系统的软件设计,以提高整个设计的稳定性与扩展能力。图1为嵌入式Web服务器的硬件系统组成。
图1 嵌入式Web服务器的硬件系统组成
主控芯片采用LPC2210,内部仅有16 KB的RAM,没有片内Flash。由于μC/OS-Ⅱ和TCP/IP协议的移植,同时要进行简单的网页存储,因此在LPC2210外分别开展了512 KB的SDRAM以及2 MB的Flash。LPC2210含有SPI接口,满足操作以太网控制器ENC28J60的要求。同时,LPC2210含有 SCI、I2C等外部资源,方便系统功能扩展。由于LPC2210工作在+3.3 V,但是其内核的工作电压是+1.8 V,因此设计电源时要考虑+3.3 V供电以及+1.8 V供电。此外,本设计中还使用了带“看门狗”的专用复位芯片以提高系统抗干扰能力。
本文采用Microchip公司推出的SPI接口的以太网控制器ENC28J60,其最大通信速率为10 Mb/s。ENC28J60引脚简单,通过SPI接口和LPC2210相连接,网络的4个引脚通过网络变压器后连接到RJ45接口,2个中断引脚接单片机的外部中断或者连接到通用I/O口,2个指示灯引脚外接发光管连接到地或者电源,其余引脚是电源和地,简化了硬件设计难度。图2为ENC28J60接口电路。网口插座采用内置网络变压器、状态显示灯和电阻网络的RJ45接座HR911105A,具有信号耦合、电气隔离、阻抗匹配和抑制干扰等优点。
ENC28J60所执行的操作完全依据外部主控制器通过SPI接口发出的命令,这些命令为一个或多个字节的指令,用于访问控制存储器和以太网缓冲区。指令至少包含一个3 bit操作码和一个用于指定寄存器地址或数据常量的5 bit参数,指令后还会有一个或多个字节的数据。ENC28J60共有7条指令,表1显示了所有操作的命令代码。通过SPI接口对ENC28J60相应寄存器进行读写操作即可完成ENC28J60硬件驱动设计。
图2 ENC28J60接口电路
表1 ENC28J60的SPI指令集
由于本设计选择用Microchip公司的以太网控制芯片ENC28J60实现TCP/IP通信,因此同时选择该公司提供的协议栈MCHPStack作为参考。MCHPStack是Microchip公司为其生产的微处理器进行以太网应用而开发的一个协议栈,整个框架结构清晰地体现出了OSI参考模型的分层思想。通过该协议栈所提供的一个状态机函数,可以方便地实现 ARP、IP、ICMP、UDP以及 TCP通信。TCP作为运输层协议,是应用层协议HTTP的基础,要实现HTTP协议只需要在TCP基础上进行应用程序设计即可完成。
在移植协议栈的过程中需要注意数据的大小端格式以及结构体字节对齐两点。TCP/IP各层协议所使用的字节序均为big-endian字节顺序,而LPC2210为littleendian字节顺序。本文使用的编译环境ADS支持4字节结构体对齐,而协议栈中结构体是单字节对齐的。因此,LPC2210在对以太网控制器进行数据读写时,既要进行字节顺序转换,又要使用#Pragma_packed定义结构体按单字节对齐,否则无法正确地进行数据报的解析,以致无法正确实现TCP/IP通信。
Brower/Server(B/S)模式已经成为流行的开发模式,课题中的嵌入式Web服务器要实现的功能主要是现场实时数据发布功能。B/S访问模式是Web Server和Browser之间的直接访问。客户和服务器间的中间节点不对HTTP请求及响应做任何操作,只需在客户端采用如IE这样的浏览器对服务器上的数据进行浏览,不用开发客户端程序。采用B/S结构具有如下优势:
(1)具有分布性特点,可以随时随地进行业务处理;
(2)系统维护或升级只在服务器端,无需对客户端进行改动,只需要改变服务器端网页,即可实现所有用户的同步更新,易于维护和升级;
(3)开发简单,共享性强。
B/S访问模式只需对服务器端程序进行开发。在服务器端形成动态网页最常用的工具有ASP和JSP。由于采用的嵌入式芯片SX52只有4 KB存储容量,在SX52中既实现TCP/IP协议栈,又实现ASP和JSP的功能是很困难的。所以可以采用字节传输方式针对SX52用汇编语言编程实现动态网页。
Java applet能够被传送到浏览器并且在浏览器所在的本地机上运行。本设计正是利用这一特性改进了传统的B/S模式设计出的应用程序,Java applet对于管理和处理动态数据也是一种行之有效的技术。Java applet能实时表示从轮询得到的更新信息,利用这个特性显示实时数据。所以程序客户端采用Java applet设计实现。
嵌入式Web服务器接入以太网时,在程序中设置了自身的IP地址和MAC地址,可以与局域网上任一台微机通信。服务器端主要实现两部分功能:利用HTTP协议实现网页浏览功能和利用套接字编程实现与客户端applet通信的功能。服务器程序用SX52的汇编语言实现。
在Web服务器中实现HTTP协议才能实现网页文件的浏览。方案将Web服务器上扩展的EEPROM与SX52相连,用来存储要浏览的Web文件,EEPROM里的Web内容采用原始数据的形式存储,没有进行封装和编码。文本内容以ASCⅡ码形式存储,图像内容以二进制数据形式存储。
嵌入式Web服务器是嵌入式技术与网络通信技术相结合的产物。随着嵌入式技术以及网络通信技术的发展,嵌入式Web服务器具有广阔的应用前景。本文提出了简化的嵌入式Web服务器的实现方案,采用高性能的ARM微处理器,通过SPI接口控制以太网控制器芯片ENC28J60,并移植了源代码完全公开的 μC/OS-Ⅱ操作系统以及TCP/IP协议栈,不仅成本低廉、设计简单,而且运行稳定,将其应用在远程监控等场合取得了理想的效果。
[1]徐春艳.嵌入式WEB服务器的研究与实现[D].南京:南京理工大学,2008.
[2]李志平,刘大茂.基于ARM7处理器LPC2210的数据采集系统设计[J].福建电脑,2006,10:135-136.
[3]于浩洋,邵国平,秦杰.基于 ENC28J60以太网控制器的SPI接口设计[J].黑龙江工程学院学报(自然科学版),2009,6.
[4]谢希仁.计算机网络(第 5版)[M].北京:电子工业出版社,2008.
[5]孟庆洪,侯宝稳.ARM嵌入式系统开发与编程 [M].北京:清华大学出版社,2011.