×
嵌入式 > 嵌入式开发 > 详情

可移植的嵌入式WEB服务器软件设计

发布时间:2020-05-20 发布时间:
|

引言

随着互联网技术的飞速发展,嵌入式WEB服务器技术在工业生产的过程控制、环境监测以及远程数据采集等方面得到了广泛的应用,通过嵌入在目标设备中的WEB服务器,可以非常方便地获取远程数据,并实现对远程设备的干预,达到对远程现场进行监视和控制的目的。在实际系统中,远程设备往往千差万别,为了在这些目标设备中构建WEB服务器,必须针对不同的系统编写相应的WEB服务器代码,通过采用基于操作系统适配层的中间件技术,可以很好的解决WEB服务器软件在不同系统之间的移植问题,同时改善软件的可维护性。

1、嵌入式软件的可移植问题

可移植性主要指把同一软件放置到不同系统平台(如不同的硬件平台或操作系统)并使之正常运行的难易程度,可移植性有时候被表述为跨平台性,软件的可移植性主要涉及到上面提到的软硬件运行环境。开发出来的程序,如果不用修改或只需极少量的修改便能在其它种类的计算机上运行,就是可移植性好的程序。在当今的软件设计中,为了在不同的产品线上重复使用相同的代码,经常需要将代码从一个平台移植到另一个平台,这种代码的重复利用非常重要,因为它可以缩短软件开发和测试的周期,同时还能减少后期的维护工作。

计算机软件的运行环境有两个方面——硬件环境和软件环境。硬件环境主要涉及计算机的硬件体系结构,比如X86体系结构、ARM体系结构、MIPS体系结构等,不同的体系结构其指令系统、中断处理、寄存器组织、总线读写等都存在一定的差别;软件环境指的是软件依赖的操作系统。嵌入式应用需求多样,操作系统种类也非常丰富,常见的有 VxWorks、Nucleus、WinCE、Linux/uClinux、eCos、uC/OS-II、ThreadX、Hopen和Delta等,不同的操作系统都会提供一些系统服务,比如任务创建和管理、任务间件通讯等,但各个操作系统在具体实现时会存在一些差异,其对外提供的系统服务接口也有不同,比如创建任务的系统调用:VxWorks为taskSpawn,Nucleus为NU_Create_Task,为了编写具有最广泛适应性的可移植代码,开发人员必须注意到这些差异,并且采取适当的策略,来开发具有良好可移植性的软件,使用一个称为操作系统适配层的中间件可以很好的解决这个问题。

中间件(Middleware)是位于平台(硬件、操作系统)和应用程序之间的一组通用服务,这些服务具有标准的程序接口和协议,针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。基于中间件模型,需要对软件模块进行一下简单的重构:界面与功能模块分离,在模块化的软件中,界面要求以独立的模块出现,它与功能模块之间可以根据具体的情况采用API调用或者消息等通讯机制来进行交互,这样在进行界面修改时可以不修改软件的其他部分;同时功能模块不直接调用操作系统的服务函数,而是调用中间件提供的处理函数,通过中间件实现与操作系统、硬件以及人机界面之间的交互,这样整个软件的框架就变成如下结构:

基于中间件的软件结构图[page]

这种结构下操作系统服务函数一般不会被直接调用,而是将其包装到一个“操作系统适配层”的库中,把核心功能模块与操作系统隔离开来,无论是更改底层的操作系统,还是上层的应用界面,核心功能模块都可以做到最大限度的源代码级兼容,当整个软件需要移植到其他操作系统时,只要简单地移植操作系统适配层,即可保证核心模块能够正确的在新环境下运行,实现项目之间核心模块的代码共享,并共同享有测试、升级和维护工作的结果。这种基于中间件的设计技术可以广泛的应用在协议和事务软件的编写过程中,归纳起来作为操作系统适配层的中间件应该包括以下几个方面的功能:

1)任务管理,任务管理是操作系统的基本功能,包括创建任务、读取和设置任务的优先级、修改和检查任务的状态;

2)内存管理,嵌入式软件由于硬件的特殊性,使得内存的使用不能象Windows程序那样随意申请,同时也很难申请到大块连续内存,中间件内存管理实现的功能就是将一些小的内存块预先分配下来,作为一个内存池供应用程序使用,这些小的内存块可以进行拼接,最终形成应用程序需要的缓冲区;

3)消息管理,主要作用是为不同操作系统的消息处理提供统一的外部接口,应用程序只需要按照中间件规定的模式进行消息收发即可;

4)任务间同步,中间件应为多任务环境提供同步机制,可以采用底层操作系统的互斥量、信号量等;

5)定时管理,通过操作系统提供的单一定时器,实现应用程序的一些定时需求;

6)中断管理,屏蔽不同硬件平台对中断处理上的差异;

7)网络接口管理,屏蔽不同系统之间网络操作的差异;

8)其他功能: 包括总线数据读写、错误处理和可利用资源管理等;

2、基于中间件的嵌入式WEB服务器软件

在工业监控应用领域,选择WEB服务器构架的监控系统是非适合的,因为它不仅可以实现监控的目的,而且可以统一操作维护界面。在这种系统中,需要使用运行在现场的设备作为WEB服务器,在控制室则通过浏览器来查看现场的情况,还可以通过WEB服务器的CGI等接口,对现场设备进行人为的控制。

WEB服务器采用HTTP协议与客户端浏览器进行信息交互,通过服务器应用程序可以实现对远程设备的访问和控制。HTTP是应用层的协议,它于1990年提出,经过多年的使用与发展,得到了不断地完善和发展。

HTTP协议是基于请求/响应模式的,客户机与服务器建立连接后,发送一个请求给服务器,请求的格式为:统一资源标识符、协议版本号,后边是 MIME信息(包括请求修饰符、客户机信息和可能的内容)。服务器接收到请求后,会给予相应的响应信息,其格式为一个状态行(包括信息的协议版本号、一个成功或错误的代码),后边是MIME信息(包括服务器信息、实体信息和可能的内容)。

在WEB服务器中,客户与服务器是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WEB服务器运行时,一直在TCP80端口(WEB服务器的缺省端口)监听,等待连接的出现。下面是WEB服务器通过HTTP协议进行信息交换的步骤:

1)建立连接:连接的建立是通过申请套接字实现的。客户打开一个套接字并把它绑定在一个端口上,如果成功,就可以通过这个套接字进行数据收发了。

2)发送请求:打开一个连接后,客户机把请求消息送到服务器的监听端口上,服务器读取数据,并从接收数据中识别请求动作。HTTP/1.0 请求消息的典型格式为:

请求消息    = 请求行(通用信息|请求头|实体头) CRLF[实体内容]

请 求 行    = 方法 请求URL HTTP版本号 CRLF

方    法    = GET|HEAD|POST|扩展方法

URL         = 协议名称+宿主名+目录与文件名

如: GET http://192.168.1.1/index.htm HTTP/1.0

3)发送响应:服务器在处理完客户的请求之后,要向客户机发送响应消息。HTTP/1.0的响应消息格式如下:

响应消息    = 状态行(通用信息头|响应头|实体头) CRLF [实体内容]

状 态 行    = HTTP版本号 状态码 原因叙述

状态码表示响应类型

1××     保留

2××     表示请求成功地接收

3××     为完成请求,客户需进一步细化请求

4××     客户错误

5××     服务器错误

4)关闭连接:通讯结束后,客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。

在具体的嵌入式WEB服务器软件中,除了受制于目标硬件有限的资源外,还有一个限制就是对文件系统的支持上,因为并不是所有的目标设备都会采用文件系统,唯一可以肯定的就是嵌入式系统中一定会有非遗失性存储器,如FLASH,这样在设计嵌入式WEB服务器时,需要提供一种工具,将多个WEB网页文件转换成一个数组,并在WEB服务器中建立索引,当请求某个网页文件时,通过这个索引来查找对应的文件数据,并发送出去。嵌入式WEB服务器软件大致可以分为四个部分:通讯模块、HTTP请求处理模块、ROM文件系统、CGI接口模块。下面是嵌入式WEB服务器软件的模块结构图:[page]

WEB服务器软件结构示意图

 

在上图所示的模块结构图中,通讯处理模块通过中间件提供的网络服务接口完成SOCKET连接的管理和数据收发工作;HTTP请求处理模块主要完成 HTTP消息的识别和处理;ROM文件系统则实现文件系统的模拟,为HTTP请求处理模块提供文件读写操作;CGI接口模块是客户端控制远程设备的工具,它解释来自客户端的一些操作请求,并控制目标设备执行具体的操作。

3、结束语

根据以上这个模型设计的WEB服务器,满足了工业控制对基于WEB服务器的远程管理需求,扩展的CGI接口可以实现管理系统和目标系统之间的交互,达到对远程目标控制的目的,同时软件具有良好的可移植性。

本文作者创新点: 跟传统的WEB服务器相比,基于中间件技术的嵌入式WEB服务器软件,具有结构简单、操作灵活的特点,不仅可以很好的适用于资源稀缺的嵌入式系统,而且能够非常方便的在多种操作系统之间进行移植。中间件技术能以最小的代价完成代码的移植,提高整个软件的可移植性,同时这种良好的移植性还会给代码维护带来方便。

参 考 文 献

[1]李程,李迅波.Web Services在园区智能系统建设中的应用[J].微计算机信息,2006,22-14:37-39

[2]Brian W.Kernigham 裘宗燕译 程序设计实践 机械工业出版社 2003.9

[3]Andrew N.Sloss 沈建华译 ARM嵌入式系统开发—软件设计与优化

北京航空航天大学出版社 2005.5

[4]尹浩琼 TCP/IP详解(第二版) 电子工业出版社 2003.8

[5]李伯成 微型计算机嵌入式系统设计 西安电子科技大学出版 2004.6


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
现场总线系统的功能安全评价