可移植的嵌入式WEB服务器软件设计
引言
随着互联网技术的飞速发展,嵌入式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调用或者消息等通讯机制来进行交互,这样在进行界面修改时可以不修改软件的其他部分;同时功能模块不直接调用操作系统的服务函数,而是调用中间件提供的处理函数,通过中间件实现与操作系统、硬件以及人机界面之间的交互,这样整个软件的框架就变成如下结构:

基于中间件的软件结构图
这种结构下操作系统服务函数一般不会被直接调用,而是将其包装到一个“操作系统适配层”的库中,把核心功能模块与操作系统隔离开来,无论是更改底层的操作系统,还是上层的应用界面,核心功能模块都可以做到最大限度的源代码级兼容,当整个软件需要移植到其他操作系统时,只要简单地移植操作系统适配层,即可保证核心模块能够正确的在新环境下运行,实现项目之间核心模块的代码共享,并共同享有测试、升级和维护工作的结果。这种基于中间件的设计技术可以广泛的应用在协议和事务软件的编写过程中,归纳起来作为操作系统适配层的中间件应该包括以下几个方面的功能:
1)任务管理,任务管理是操作系统的基本功能,包括创建任务、读取和设置任务的优先级、修改和检查任务的状态;
2)内存管理,嵌入式软件由于硬件的特殊性,使得内存的使用不能象Windows程序那样随意申请,同时也很难申请到大块连续内存,中间件内存管理实现的功能就是将一些小的内存块预先分配下来,作为一个内存池供应用程序使用,这些小的内存块可以进行拼接,最终形成应用程序需要的缓冲区;
3)消息管理,主要作用是为不同操作系统的消息处理提供统一的外部接口,应用程序只需要按照中间件规定的模式进行消息收发即可;
4)任务间同步,中间件应为多任务环境提供同步机制,可以采用底层操作系统的互斥量、信号量等;
5)定时管理,通过操作系统提供的单一定时器,实现应用程序的一些定时需求;
6)中断管理,屏蔽不同硬件平台对中断处理上的差异;
7)网络接口管理,屏蔽不同系统之间网络操作
- LPC2292的μC/OS-II硬件抽象层构建(04-26)
- 浅谈Win CE应用程序的可移植性(03-02)
- 一种DSP小系统接口电路可移植性设计方案(03-09)
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
