论文关键词:无线传感器网络 mantisos 软件工程
论文摘要:无线传感器网络是当今信息领域新的研究方向,应用前景十分广阔。考虑无线传感器网络的应用相关性,总结无线传感器网络应用程序开发研究经验,引入软件工程思想,提出一个无线传感器网络应用开发过程模型,可以提高开发速度和开发质量;随后给出了一个在manti-sos下开发应用程序的技术模型,降低了使用mantisos的线程管理机制开发多任务应用程序可能出现的线程上下文切换开销。
0引言
无线传感器网络(wirelesssensornetwork,wsn)就是由部署在监测区域内大量的廉价微型传感器节组成,通过无线通信方式形成的一个多跳的自组织的网络系统,其目的是协作地感知、采集和处理网络覆盖区域中感知对象的信息,并发送给观察者。无线传感器网络在军事、环境监测和预报、医疗、农业、采矿及智能家居、城市交通等领域的应用前景非常广阔,已经成为近年来信息网络的一个研究热点。
无线传感器网络操作系统实现对物理资源的抽象,并管理有限的内存、处理器等资源,是无线传感器网络领域的一个研究重点。目前,具有代表性的无线传感器网络操作系统有tinyos,mantisos,sos,contiki,eyesos等,其中,tinyos是实际上的传感器网络节点操作系统标准,tinyos和基于tinyos的应用基本上用nesc语言编写,把组件化、模块化的思想和基于事件驱动的执行模型结合起来,提高了应用开发的方便性和应用执行的可靠性。WWw.133229.COmmantisos的内核和api用标准的c语言编写,对于应用程序开发人员来讲,不需要学习新的语言。但由于没有开发模型可供参考,给开发人员带来很大的不便。将无线传感器网络应用开发的特点和具体的开发环境结合起来,提出了一个基于mantisos的wsn应用开发模型,由一个融人软件工程思想的通用的开发过程模型和一个基于mantisos的单线程多任务技术模型组成。
1mantisos
美国科罗拉多大学开发的mantisos是一个以易用性和灵活性为目标的无线传感器操作系统,支持快速、灵活地搭建无线传感器网络原型系统。在易用性方面,mantisos以很小的内存需求实现了典型的分层操作系统结构(如图1所示),支持多线程、抢占式调度和同步信号量、设备驱动的典型服务,并使用c语言作为整个内核及api的编程语言,从而获得良好的跨平台开发和代码重用支持,降低了原型开发的难度。mantisos的网络协议栈采用用户线程的形式,充分考虑了性能和灵活性的折中。目前,一个包含多线程可抢占调度器、标准vo同步支持以及网络协议栈的mantisos内核,对ram的需求不到soobyte(不包括线程栈),对flash的需求约4kb。
2wsn应用程序开发模型
2.i开发平台及工具
wsn应用程序开发的硬件平台包括传感器节点,如mica2,mica2dot,nymph等,传感器板,编程板,pc机及串口连接线等。如图2所示。其中,传感器节点上集成了处理器和flash存储器,传感器板上集成了通用的传感技术,用于采集温度、光线等环境数据,编程板用来将应用程序导人节点,pc机通过串口连接线读取节点的数据,然后对节点数据进行分析。
wsn应用程序开发的软件平台是在unix/linux环境中下载mantisos工具包及mantisos系统源码进行解压安装,并设置相应的系统环境变量。应用程序代码编写工具可用记事本、文本编辑器等。
2.2开发过程
依据软件工程的思想,结合无线传感器网络及嵌人式系统开发的特征,总结在开发无线传感器网络应用过程中的经验,形成了如图3所示的wsn应用程序开发过程,遵循这个过程,可以提高开发速度和提升开发质量。整个开发过程分为分析、设计、实现和测试四个阶段。
2.2.1分析阶段
整个开发过程始于分析阶段,这个阶段显示系统应该做什么。系统分析员定义需求,指出系统要实现的目标,wsn应用程序的系统分析阶段有三个步骤:定义应用环境、定义要求、定义系统需求。无线传感器网络是应用相关的,不同的应用背景对传感器网络的要求不同,其硬件平台、软件系统和网络协议必然会有很大差别,在开发传感器网络应用中,更关心传感器网络的差异川。因此,在分析阶段,要分析具体的应用背景及用户或用户代表对系统的期望,并给出明确的定义,在此基础上分析员要能够准确地定义系统的需求。只有让系统更贴近应用,才能做出最高效地目标系统。例如要开发一个防火监控系统,应对节点能耗、报警及安全等问题作出明确定义。
2.2.2设计阶段
设计阶段定义系统怎样完成在分析阶段所定义的需求。依据分析阶段定义的系统需求,设计选用适合目标系统的硬件平台、软件系统等。如在防火监控系统开发中,可以选用mica2节点和mantisos分别作为目标系统的传感器节点和软件平台。然后使用模块化原则,使用结构图将系统应用程序先划分为较小的部分,以便能够容易理解和处理。在模块划分的过程中,要尽量达到模块间的松散藕合,以提高可重用性,使维护修改更容易,实现新的用户需求。
2.2.3实现阶段
在实现阶段,要完成系统软硬件平台的定制和创建实际的程序。根据目标系统的设计和需求,定制传感器节点的功能,并对wsn操作系统(软件平台)进行裁减,剔除开发目标系统所不需要的部分,以节省有限的空间,提高系统运行效率。
使用流程图或伪代码将应用程序模块间的数据逻辑流程表示出来,然后开始使用指定或选定的语言编写程序代码。语言的选择是基于系统开发所使用的软件平台,即wsn操作系统。如在tinyos下使用nesc语言,而在mantisos下则使用c语言。最后在unix/linux环境中进行调试。
2.2.4测试阶段
将编译成功的应用程序导人节点进行测试。白盒测试是程序员的责任,必须确保每一条指令和每一种可能的情况都已经被测试过,需要构造多组测试用例来验证应用程序。当目标系统构建完毕,测试工程师通过利用系统需求和他的系统开发知识以及用户的工作环境来产生测试计划对整个系统进行测试,以确保所有的应用程序能够在一起工作。
2.3技术模型
无线传感器网络操作系统实现对物理资源的抽象,并管理有限的内存、处理器等资源。不同的操作系统的实现机制和策略不尽相同,如tinyos操作系统在软件体系结构上体现了事件驱动模式和组件化编程技术,但没有区分用户和内核模式,没有提供内存保护机制。而mantisos是一个支持无线传感器网络快速构建的多线程嵌人式操作系统,支持多模态原型以及传感器节点动态重编程、远程调试70因此,在不同的操作系统上开发具体应用,必须充分考虑各个操作系统的技术特点,充分发挥其优势,开发出高效的应用程序。
这一部分给出了在mantisos平台上开发应用程序的一个技术模型,如图4所示,采用队列结构来实现单线程多任务,降低了多线程多任务所可能出现的线程切换开销,适合传感器节点能源、内存等资源十分有限的特点。
在这个模型中,定义一个任务队列结构,每个应用程序创建一个线程,线程启动时初始化任务队列,并对队列进行管理。每隔一定时间间隔,检查队列中是否有任务到达,如果有任务,则启动任务执行,完成后将该任务从队列中删除;如果没有任务,线程睡眠。共享缓冲区用于数据的接收和发送或节点其他参数的存储和处理。
3结束语
无线传感器网络的应用前景十分广阔,基于mantisos的无线传感器网络应用开发研究的基础上,引人软件工程的思想,结合无线传感器网络应用开发本身的特点,提炼出一个通用的wsn应用程序开发过程模型,该模型可以指引无线传感器网络应用开发的过程,提高开发速度和质量。随后,给出了一个单线程多任务的技术模型供开发人员参考,解决了在线程驱动的wsn操作系统mantisos下开发应用程序可能出现的线程上下文切换开销增加的问题。