0 引 言
无线传感器网络是当前国内和国外备受关注的、多学科交叉的热门研究方向,被认为是将对21世纪产生巨大影响力的技术之一。
无线传感器中间件技术作为一种能解决传感网大范围应用中产生的异构性、兼容性等问题的新技术,能够提供标准化服务,适应资源和应用需求动态变化的自适应策略和机制,是当前的一大研究热点。传感网中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层网络、硬件和操作系统存在多少差异,只要对中间件进行升级,并保持中间件对外接口定义不变,便可以给用户提供一个统一的运行平台,有利于加快传感网大规模产业化进展步伐。但目前,无线传感器网络中间件的研究仍处于初始阶段,现有的传感网中间件对物与物间关系及服务的可管理性支持较弱,并且缺乏统一的数据处理接口,难以与多个应用程序连接,其发展面临着诸多挑战[5?7]。
本文主要以“新一代宽带无线移动通信网”国家科技重大专项课题下“支持多传感网应用的中间件平台研发”子课题为背景,设计并实现了一种轻量级的传感网节点设备的中间件平台框架,包括硬件抽象层、操作系统抽象层、网络协议、中间件管理器及应用域中间件,其中中间件管理器又由服务原语解释器、管理中间件及通用中间件服务组件构成。
1 现有传感网中间件的分析
目前,基于传感网的中间件大概可以分为以下5类:
(1) 基于数据库的中间件。可以把整个无线传感器网络看成是一个分布式的数据库,通过该方法把网络抽象虚拟实体,屏蔽系统分布式问题。用户可以使用类似SQL的命令对数据库进行访问。此类中间件典型的有TinyDB,Cougar,SINA等。
(2) 自适应中间件。该方法大多采用跨层优化机制,采用前摄或者后摄反射方法使用网络环境的动态变化,以满足传感网的QoS需求。此类中间件相关的有Milan和TinyCubus开发的中间件架构。
(3) 基于元组空间的中间件。元组空间是一个共享存储模型,数据被表示为称为元组的基本数据结构,通过对元组的读、写实现进程的协同。此类中间件有TinyLime,Agilla等。
(4) 事件驱动中间件。应用程序通过指定感兴趣的某种状态的变化,使得节点一旦检测到此事件就立即向应用程序发送通知。这种基于事件的通信模式,通常采用publish/subscribe机制。此类中间件典型的有DSWare,Impala。
(5) 基于虚拟机的中间件。虚拟机通过屏蔽底层硬件资源和软件系统的异构性,来提供灵活的编程接口。但是在指令解释开销和资源占用开销直接常常存在矛盾。典型的有Mat,MagnetOS和SensorWare等[8?10]。
由于无线传感器网络自身资源受限、数量庞大、网络拓扑动态变化等特点,使得传感网中间件的研究困难重重,上述的各种传感网中间件在可靠性、自适应性、可扩展性等性能上也都有自身的缺点。
2 传感网节点设备中间件平台整体架构
中间件框架整体架构如图1所示。
如图1所示,框架的最底层是硬件,包括了主控芯片在内的各种芯片和电路;之上是嵌入式操作系统抽象层及硬件抽象层,这两层可以合成为传感网中间件平台的支撑软件,因为其上所有的应用,都会最后调用这些抽象接口。网络协议栈,实现传感网网络协议,完成网络组网、路由管理、邻居管理等功能;中间件管理器处于上层应用和下层接口之间,起到一个承上启下的作用,包括服务原语解释器,管理中间件和功能组件三部分;最上面的应用域中间件是直接面向应用程序的,它根据传感网的应用领域及范围(包括智能家居、智能交通等在内的多个应用领域),抽象出一些特定功能的接口,这一层的应用层事实上是伪应用层,而真正意义上的应用层是通过调用该层的接口,来间接调用服务组件的功能,从而实现具体功能。
3 传感网节点中间件实现
3.1 中间件支持软件
中间件平台的支持软件包括操作系统抽象层和硬件抽象层两部分。
3.1.1 操作系统抽象层
传感网节点运行环境位于操作系统之上,该环境主要是为了屏蔽不同OS的差异性,为上层程序提供统一的运行平台,以方便应用程序的移植和扩展。传感网节点的运行环境主要分为两大类:一种是虚拟机机制,另一种是操作系统抽象层。
但是虚拟机机制对节点的内存资源和计算能力要求较高,不太适合在传感网中普遍使用,并且现有的传感网虚拟机基本以特定的操作系统为基础,很多也只处于实验室研究阶段,在成熟度和执行效率方面还有待改进和完善。现阶段该方法是一种比较切实可行的实现方法。传统的应用程序支持跨平台的方法是采用在应用程序中加入条件编译的方法,没有将与平台无关和相关的部分隔离起来,如果需要移植到新的操作系统上,就要改写代码,代码重用率低。而OSEL则是在各操作系统之上,提供了一层API接口,应用程序直接使用该API接口,无需关心底层接口,这样在移植的时候,应用程序不用修改,使得应用程序与操作系统本身无关,增加了代码重用率,提高了开发速度,降低了开发成本。操作系统抽象层的实现,主要是提取不同嵌入式操作系统共性的功能,设计一个对上统一的调用接口。考虑到传感网节点的资源限制,因此只选取必要的操作系统模块进行抽象,如任务相关、任务同步、内存管理、电源管理等,操作系统抽象层内容框架图如图2所示。
本文采用接口参数归一化和适当缺省的方法,仅对任务相关、任务间同步、系统时钟相关和内存管理相关的接口进行抽象,考虑篇幅限制,在此仅列出任务相关的接口抽象:
●RTOS_TaskCreate(void (*task)(void *p_arg), void *p_arg, uint32 *ptos, uint8 prio)
●RTOS_TaskDelete(uint8 prio)
●RTOS_TaskSuspend(uint8 prio)
●RTOS_TaskResume(uint8 prio)
3.1.2 硬件抽象层
中间件平台的硬件抽象层位于硬件驱动层之上,与传感网节点相关的基础硬件主要有射频部分、模数转换部分、LED灯、串口等。
硬件抽象层的实现方法同样采取接口参数的归一化与适当缺省,以串口部分为例,抽象接口如下所示:
●HAL_SerialInit(uint32 baud_rate)
●HAL_SerialReadByte(void)
●HAL_SerialWriteByte(char c)
●HAL_SerialReadStr(void)
●HAL_SerialWriteStr(char *p)
3.2 网络协议栈层
现有的传感网网络协议有UC Berkeley研发的TinyOS中的网络协议、Colorado大学研发的Mantis OS中的网络协议、California大学研发的SOS中的网络协议、Swedish Institute of Computer Science研发的Contiki以及Yonsei大学研发的RETOS中的网络协议等[11],以上网络协议都有各自的特点和作用,为兼容以后出现的各种协议,本网络协议层采用如图3所示结构。
该层由网络接口层、转移解释层和具体协议组成。网络接口层用以抽象出网络协议的共性接口,使上层应用可以屏蔽底层具体网络协议的差异,使用统一的网络接口来调用不同的网络协议实现相应功能,这里设计的数据发送接口为:MIDWARE_NET_SEND(ID,PROTOCOL,LEN,TYPE,DATA/CMD),其中参数ID为传感网节点的ID号,PROTOCOL为需要使用的网络协议类型,LEN为数据包长度,DATA/CMD为数据包内容或者网络命令,而TYPE的值决定了该内容为网络数据还是网络命令;转义解释层位于网络接口层和具体网络协议之间,它是用来解释网络层接口传入的各类参数,然后转抽象为具体,选择某一种具体的网络协议进行操作,该层的设计核心是找到一种有效的方法,使得能够通过网络层接口的PROTOCOL形参名字快速而准确地找到相应网络协议的执行函数接口,即从网络协议字符串到网络函数接口的映射过程,本文采用的是一种基于字符串的散列查找法;底层网络协议可以依据具体的应用场景,采用已有的传感网网络协议,或者自己设计新的网络协议,然后植入该框架。
3.3 中间件管理器的设计
中间件管理器的设计是本中间件平台较为核心的部分,它起着承上启下的作用,上接应用层,为应用层提供一系列的接口,应用层通过服务原语的形式,调用接口,实现相关的功能;下接底层软硬件抽象层和网络协议栈,通过相关接口,直接调用底层相关功能,实现从应用层功能调用到底层硬件实现的作用。中间件管理器采用模块化设计,是一个功能独立并且结构完整的功能模块,具有很好的移植性和可扩展性。上述提到的服务原语是一种在同一开放系统中,(N+1)实体向N实体请求服务时,服务用户和服务提供者之间进行交互的交互信息[12],服务原语有4种类型,4种基本原语解释如下:
(1) 请求(Request):用户实体要求服务做某项工作:源(N+1)实体→源(N)实体
(2) 指示(Indication):用户实体被告知某事件发生:目的(N)实体→目的(N+1)实体
(3) 响应(Response):用户实体表示对某事件的响应:目的(N+1)实体→目的(N)实体
(4) 确认(Confirm):用户实体收到关于它的请求的答复:源(N)实体→源(N+1)实体
中间件管理器采用模块化设计方案,共由三部分组成:中间件服务原语解释器、中间件执行器和通用中间件服务模块。其中中间件服务原语解释器用于接受应用层最原始的服务原语命令字符串,然后解析命令,并翻译成中间件执行器能识别的语句。中间件执行器接收已经被翻译过后的命令,根据命令类型,选择相应的功能实现接口进行调用,执行相关的操作。通用中间件服务模块部分,是一个服务组件的容器,包含了传感网相关的一系列具体功能组件,包括节点的定位服务、传感探测模块、统计服务、安全管理等,也可根据需要进行组件的扩充。中间件管理器结构图如图4所示。
整个中间件管理器的软件执行流程图如图5所示,其中GIMD为服务组件标识码,每个服务组件都有惟一的一个标识码跟它相匹配;SignalCode是命令解释器经过对上层命令进行翻译和解释之后传递给中间件执行器的值,代表该项服务是某个服务组件里面的一种具体类型的请求或者返回确认。
3.4 应用域中间件
无线传感网根据应用领域划分,可以分为智能家居、智能交通、智能电网等多个领域,而传感网中的服务组件则是由数量相对比较稳定的一些具备基本功能的功能模块组成。应用域中间件根据各应用领域的不同,按照各自的需求特点,提出属于自己功能需求,而每一种功能需求都会调用单个或者多个基本的服务组件。应用域中间件与中间件管理器中的通用中间件服务组件模块的关系如图6所示。
如图6所示,某一应用域的一种功能接口,可以同时跟一个或者多个通用中间件服务组件相关联,而不同功能接口之间,也可以同时共享同一个服务组件。
4 结 语
传感网节点设备是整个传感网应用中占据数量最多的工作单元,而相应的传感网节点中间件用来屏蔽底层硬件、网络平台复杂性及异构性,是减小用户高层应用需求与网络复杂性差异的一种软件平台。传统的中间件技术虽然已得到比较深入的研究和发展,但是因为传感网自身计算能力、存储能力、应用场景等独特性质,使得直接移植已有的传统中间件到传感网节点中间件中变得困难重重。而现有的传感网中间件技术的研究也处于初始阶段,在可移植性、可扩展性、实现方式的简洁性等方面也都存在缺陷。为此,本文提出一种基于接口抽象、分层设计和模块化的传感网节点中间件框架,该框架由软硬件抽象层、网络协议栈层、中间件管理器和应用域中间件四部分组成,以轻量级的方式实现。该中间件平台已经成功运行于STM32,MSP430和CC2530三种硬件平台和μCOS?Ⅱ,FreeRTOS和OSAL三种软件平台,并在实验室的智能家居演示系统中得到初步应用。实验证明,该中间件框架具有较好的可移植性和可扩展性,对无线传感网的广泛使用有着积极的促进作用。
参考文献
[1] 孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005.
[2] 张为.无线传感器网络应用研究[J].信息通信,2013,27(9):94?95.
[3] 丁博,王怀民,史殿习.普适计算中间件技术[J].计算机科学与探索,2007(3):241?253.
[4] 吴泉源.网络计算中间件[J].软件学报,2013,24(1):67?76.
[5] 阴躲芬,龚华明.一种基于无线传感器的扩展型中间件框架[J].计算机与现代化,2012,28(7):116?119.
[6] 王汝传,孙力娟,沙超,等.无线传感器网络中间件技术[J].南京邮电大学学报:自然科学版,2010,30(4):36?40.
[7] 罗娟,顾传力,李仁发.基于角色的无线传感网络中间件研究[J].通信学报,2011,32(1):79?86.
[8] 李仁发,魏叶华,付彬,等.无线传感器网络中间件研究进展[J].计算机研究与发展,2008,45(3):383?391.
. ACM Transactions on Database Systems, 2005, 30(1): 122?173.
[10] MARRN P J, MINDER D, LACHENMANN A, et al, Tiny
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。