您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第3章4无线传感器网络操作系统TinyOS.
1TinyOS操作系统概述无线传感器网络操作系统TinyOS2内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构3无线传感器网络及其操作系统•无线传感器网络(WirelessSensorNetwork,WSN)是由部署在监测区域内大量的廉价微型传感器节点组成,通过无线通信方式形成的一个多跳的自组织网络系统,其目的是协作地感知、采集和处理网络覆盖区域中感知对象的信息,并发送给观察者。•有人认为没有必要设计一个专门的操作系统,可以直接在硬件上设计应用程序,但在实际过程中会碰到许多问题:–面向传感器网络的应用开发难度会加大,应用开发人员不得不直接面对硬件进行编程,无法得到像操作系统那样提供的丰富的服务。–软件的重用性差,程序员无法继承已有的软件成果,降低了开发效率。4无线传感器网络的特点•传感器网络具有◇应用多样性、◇硬件功能有限、◇资源受限、◇节点微型化、◇分布式任务协作的特点。•单个传感器节点有两个很突出的特点:–并发性密集,即可能存在多个需要同时执行的逻辑控制;–传感器节点模块化程度很高,要求系统能够让应用程序方便的对硬件进行控制。•因此,必须针对这些特点来设计WSN操作系统。5WSN操作系统的设计目标•WSN是应用相关的网络,其硬件节点功能、结构、组织方式会随应用而不同。由此要求WSN操作系统能够良好的模块化设计,使应用/协议/服务与硬件资源之间可以随意搭配。•WSN节点资源非常有限(通信带宽资源/能量资源/计算资源),操作系统必须能够高效地使用各种资源。•WSN是一个网络系统,其操作系统也必然是面向网络化开发的。网络化系统要求操作系统必须为应用提供高效的组网和通信机制。6节点操作系统发展史节点操作系统区别于传统操作系统的主要特点是:其硬件平台资源极其有限7现有的WSN操作系统•当前已有多个有代表性的开源的无线传感器网络操作系统:TinyOS2.1:美国加州大学伯克利分校开发MantisOS0.9.5(MultimodalNetworksofIn-situSensors):美国科罗拉多大学开发SOS1.7:美国加州大学洛杉矶分校开发8节点操作系统功能:硬件驱动、资源管理、任务调度、编程借口其他常用微型OS对比9内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构10TinyOS简介TinyOS是一个开源的嵌入式操作系统,它是由加州大学的伯利克分校开发出来的,主要应用于无线传感器网络方面。它是基于一种组件(Component-Based)的架构方式,使得能够快速实现各种应用。因为与同样是他们设计的硬件平台珠联璧合而声名鹊起,目前已经成为无线传感器网络领域事实上的标准平台。支持的平台:eyesIFXv2、intelmote2、mica2、mica2dot、micaZ、telosb、tinynode、shimmer。11TinyOS简介TinyOS的程序采用的是模块化设计,其程序核心往往都很小(一般来说核心代码和数据大概在400Bytes左右),能够突破传感器存储资源少的限制,让TinyOS很有效地运行在无线传感器网络节点上并去执行相应的管理工作等。12TinyOS的设计理念•由于WSN的特殊性,研究人员在设计TinyOS系统时就提出以下几个原则:–1)能在有限的资源上运行:要求执行模式允许在单一的协议栈上运行;–2)允许高度的并发性:要求执行模式能对事件作出快速的直接响应;–3)适应硬件升级:要求组件和执行模式能够应对硬件/软件的替换;–4)支持多样化的应用程序:要求能够根据实际需要,裁减操作系统的服务;–5)鲁棒性强:要求通过组件间有限的交互渠道,就能应对各种复杂情况;–6)支持一系列平台:要求操作系统的服务具有可移植性。13内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构14TinyOS的技术特点-1组件化编程(Componented-Based)TinyOS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(AWiringSpecification)将各种组件连接起来,以完成它所需要的功能。事件驱动模式(Event-Driven)TinyOS的应用程序都是基于事件驱动模式的,采用事件触发去唤醒传感器工作。事件相当于不同组件之间传递状态信息的信号。当事件对应的硬件中断发生时,系统能够快速地调用相关的事件处理程序。15TinyOS的技术特点-2轻量级线程(lightweightthread)轻量级线程,即任务。任务之间是平等的,不能相互抢占,按先入先出队列(FirstInputFirstOutput,FIFO)进行调度。轻线程是针对节点并发操作可能比较频繁,且线程比较短的问题提出的。两级调度方式(TasksAndEventsConcurrencyModel)任务一般用在对于时间要求不是很高的应用中,通常要求每一个任务都很短小,能够使系统的负担较轻;事件一般用在对于时间的要求很严格的应用中,且它可以占先优于任务和其他事件执行,在TinyOS中一般由硬件中断处理来驱动事件。16TinyOS的技术特点-3分阶段作业(Split-PhaseOperations)TinyOS没有提供任何阻塞操作,为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的请求和这个操作的完成分开来实现,以便获得较高的执行效率。主动消息通信(ActiveMessage)每一个消息都维护一个应用层的处理程序。当节点收到消息后,就会把消息中的数据作为参数,传递给应用层的处理程序,由其完成消息数据的解析、计算处理或发送响应消息等工作。17与其他WSN操作系统的比较•下面从设计操作系统必须考虑的几个方面列举了TinyOS、MOS和SOS这三个系统的区别:系统特征TinyOSMOSSOS事件驱动√√线程驱动√处理器能量管理√√√外设能量管理√√优先级调度√√实时服务√动态重编程服务√√外设管理√√模拟服务√√√内存管理静态静态动态系统执行模型组件线程模块181.安装JDK1.5从(若计算机上己安装过jdk1.6建议先将其卸解)。JDK的安装目录并不作要求,并且如果只是单纯安装TinyOS2.0.2可以不用去环境变量中配置JDK。TinyOS2.0的安装与调试TinyOS系统的一些工具命令都是需要Java支持的,因此先要为操作系统搭建Java开发环境。192.安装Cygwin从上下载Cygwin及其他安装所需package的压缩包cygwin-1.2a.tgz,在Windows环境下面直接用winRAR解压即可,双击解压后产生的文件夹中的setup.exe文件;TinyOS2.0的安装与调试运行环境:TinyOS2.1+Cygwin(WindowsXP)Cygwin在Windows下提供一个类似Linux的环境203.安装Atmega128单片机的AVR工具包和MSP430单片机工具包从文件用如下命令安装即可:cd/tmprpm–ivhavr-binutils-2.15tinyos-3.cygwin.1386.rpmrpm–qarpm–ivhavr-gcc-3.4.3-1.cygwin.i386.rpmrpm–ivhavr-libc-1.2.3-1.cygwin.i386.rpmrpm–ivhavaricc-2.4-1.cygwin.i386.rpmTinyOS2.0的安装与调试平台交叉编译器用于将C代码交叉编译成硬件终端可以运行的二进制文件。在编译TinyOS应用程序时,会产生针对特定微控制器芯片的C代码和汇编代码,就需要有相应平台的编译器支持。214.安装nesc和tinyos-tools使用rpm-ivh即可正常安装,不得以可以考虑采用-ignoreos参数。5.安装tinyos-2.0下载tinyos-2.0.2-2.cygwin.noarch.rpm,也是用rpm–ivhrpmname命令进行安装。TinyOS2.0的安装与调试TinyOS操作系统内核和应用程序都是采用nesC语言编写,所以需要nesC编译工具将其编译成C代码,编译后的C代码就可以交给平台交叉编译工具。226.安装Graphviz下载graphviz-1.10.exe文件,双击下载的文件运行安装程序。桌面上的cygwin.bat应修改为后来所建目录里的cygwin.bat。双击即可运行,输入tos-check-env运行,出现如下信息:$tos-check-envPath:/opt/msp430/bin。。。。。。tos-check-envcompletedwithouterror.如上信息表明TinyOS基本安装成功,可以进行下一步的测试。TinyOS2.0的安装与调试23内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构24TinyOS的编程语言•TinyOS最初是用汇编和C语言编写的,后来改用支持组件化编程的nesC语言。该语言把组件化/模块化思想和基于事件驱动的执行模型结合起来。•nesC:使用C作为其基础语言,支持所有的C语言词法和语法,其独有的特色如下:增加了组件(component)和接口(interface)的关键字定义;定义了接口及如何使用接口表达组件之间关系的方法;目前只支持组件的静态连接,不能实现动态连接和配置。25组件(conponent)•一个nesc编写的程序由一个或多个组件构成或连接而成。•一个组件由两部分组成:一个是规范说明,包含要用接口的名字;另一部分是它们的具体实现。•组件分两种:Module组件(模块):实现某种逻辑功能;Configuration组件(配件):将各个组件连接起来成为一个整体。•组件特征:组件内变量、函数可以自由访问,但组件之间不能访问和调用。26模块和配件•组件有两种:配件和模块。•模块(module):提供一个或多个接口的实现。•配件(configuration):把其他的组件装配起来,连接组件使用的接口到其提供者。•每个nesC应用程序都必须有且只有一个顶层配件(top-levelconfiguration)连接内部组件。•之所以区别设计模块与配件,是为了让系统设计者在构建应用程序的时候可以脱离现有的实现。例如:设计者可以提供配件,只是简单地把一个或多个模块连接起来,而不涉及其中具体的工作。同样地,另一个开发者负责提供一组模块库,这些模块可以普遍使用到众多应用中。27接口、命令和事件•接口(interface)是一组相关函数的集合,它是双向的(提供或使用)并且是组件间的唯一访问点。•一个组件可以提供接口(provides),也可以使用接口(uses)。提供的接口描述了该组件提供给上一层调用者的功能,而使用的接口则表示该组件本身工作时需要的功能。•接口声明了两种函数:–命令(command):提供了接口的组件必须实现该接口的命令函数;–事件(event):使用了某接口的组件必须实现该接口的事件函数。28•一个组件使用了一个接口,它可以调用(call)这个接口的命令,单必须实现该接口的事件。•一个组件可以使用(use)或提供(provide)多个接口或者同一接口的多个实例。•接口的特点:Provides未必一定有组件使用,但uses一定要有人提供,否则编译会提示出错。在动态组件配置语言中uses也可以动态配置。接口可以连接多个同样的接口,叫做多扇入/扇出。一个module可以同时提供一组相同的接口,又称参数化接口,表明该Module可提供多份同类资源,能够同时给多个组件分享。组件、接口、命令和事件29组件、接口、命令和事件interfaceSend{commanderror_tsend(message_t*msg,uint8
本文标题:第3章4无线传感器网络操作系统TinyOS.
链接地址:https://www.777doc.com/doc-2155518 .html