1TinyOS操作系统概述浙江工业大学浙江省嵌入式系统联合重点实验室2010年4月10日《无线传感器网络操作系统TinyOS》讲义2内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构3无线传感器网络及其操作系统•无线传感器网络(WirelessSensorNetwork,WSN)是由部署在监测区域内大量的廉价微型传感器节点组成,通过无线通信方式形成的一个多跳的自组织网络系统,其目的是协作地感知、采集和处理网络覆盖区域中感知对象的信息,并发送给观察者。•有人认为没有必要设计一个专门的操作系统,可以直接在硬件上设计应用程序,但在实际过程中会碰到许多问题:–面向传感器网络的应用开发难度会加大,应用开发人员不得不直接面对硬件进行编程,无法得到像操作系统那样提供的丰富的服务。–软件的重用性差,程序员无法继承已有的软件成果,降低了开发效率。4无线传感器网络的特点•传感器网络具有◇应用多样性、◇硬件功能有限、◇资源受限、◇节点微型化、◇分布式任务协作的特点。•单个传感器节点有两个很突出的特点:–并发性密集,即可能存在多个需要同时执行的逻辑控制;–传感器节点模块化程度很高,要求系统能够让应用程序方便的对硬件进行控制。•因此,必须针对这些特点来设计WSN操作系统。5WSN操作系统的设计目标•WSN是应用相关的网络,其硬件节点功能、结构、组织方式会随应用而不同。由此要求WSN操作系统能够良好的模块化设计,使应用/协议/服务与硬件资源之间可以随意搭配。•WSN节点资源非常有限(通信带宽资源/能量资源/计算资源),操作系统必须能够高效地使用各种资源。•WSN是一个网络系统,其操作系统也必然是面向网络化开发的。网络化系统要求操作系统必须为应用提供高效的组网和通信机制。6现有的WSN操作系统•当前已有多个有代表性的开源的无线传感器网络操作系统:TinyOS2.1:美国加州大学伯克利分校开发MantisOS0.9.5(MultimodalNetworksofIn-situSensors):美国克罗拉多大学开发SOS1.7:美国加州大学洛杉矶分校开发7内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构8TinyOS简介TinyOS是一个开源的嵌入式操作系统,它是由加州大学的伯利克分校开发出来的,主要应用于无线传感器网络方面。它是基于一种组件(Component-Based)的架构方式,使得能够快速实现各种应用。因为与同样是他们设计的硬件平台珠联璧合而声名鹊起,目前已经成为无线传感器网络领域事实上的标准平台。支持的平台:eyesIFXv2、intelmote2、mica2、mica2dot、micaZ、telosb、tinynode。9TinyOS简介TinyOS的程序采用的是模块化设计,其程序核心往往都很小(一般来说核心代码和数据大概在400Bytes左右),能够突破传感器存储资源少的限制,让TinyOS很有效地运行在无线传感器网络节点上并去执行相应的管理工作等。10TinyOS的设计理念•由于WSN的特殊性,研究人员在设计TinyOS系统时就提出以下几个原则:–1)能在有限的资源上运行:要求执行模式允许在单一的协议栈上运行;–2)允许高度的并发性:要求执行模式能对事件作出快速的直接响应;–3)适应硬件升级:要求组件和执行模式能够应对硬件/软件的替换;–4)支持多样化的应用程序:要求能够根据实际需要,裁减操作系统的服务;–5)鲁棒性强:要求通过组件间有限的交互渠道,就能应对各种复杂情况;–6)支持一系列平台:要求操作系统的服务具有可移植性。11内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构12TinyOS的技术特点-1组件化编程(Componented-Based)TinyOS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(AWiringSpecification)将各种组件连接起来,以完成它所需要的功能。事件驱动模式(Event-Driven)TinyOS的应用程序都是基于事件驱动模式的,采用事件触发去唤醒传感器工作。事件相当于不同组件之间传递状态信息的信号。当事件对应的硬件中断发生时,系统能够快速地调用相关的事件处理程序。13TinyOS的技术特点-2轻量级线程(lightweightthread)轻量级线程,即任务。任务之间是平等的,不能相互抢占,按先入先出队列(FirstInputFirstOutput,FIFO)进行调度。轻线程是针对节点并发操作可能比较频繁,且线程比较短的问题提出的。两级调度方式(TasksAndEventsConcurrencyModel)任务一般用在对于时间要求不是很高的应用中,通常要求每一个任务都很短小,能够使系统的负担较轻;事件一般用在对于时间的要求很严格的应用中,且它可以占先优于任务和其他事件执行,在TinyOS中一般由硬件中断处理来驱动事件。14TinyOS的技术特点-3分阶段作业(Split-PhaseOperations)TinyOS没有提供任何阻塞操作,为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的请求和这个操作的完成分开来实现,以便获得较高的执行效率。主动消息通信(ActiveMessage)每一个消息都维护一个应用层的处理程序。当节点收到消息后,就会把消息中的数据作为参数,传递给应用层的处理程序,由其完成消息数据的解析、计算处理或发送响应消息等工作。15与其他WSN操作系统的比较•下面从设计操作系统必须考虑的几个方面列举了TinyOS、MOS和SOS这三个系统的区别:系统特征TinyOSMOSSOS事件驱动√√线程驱动√处理器能量管理√√√外设能量管理√√优先级调度√√实时服务√动态重编程服务√√外设管理√√模拟服务√√√内存管理静态静态动态系统执行模型组件线程模块16内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构17TinyOS的编程语言•TinyOS最初是用汇编和C语言编写的,后来改用支持组件化编程的nesC语言。该语言把组件化/模块化思想和基于事件驱动的执行模型结合起来。•nesC:使用C作为其基础语言,支持所有的C语言词法和语法,其独有的特色如下:增加了组件(component)和接口(interface)的关键字定义;定义了接口及如何使用接口表达组件之间关系的方法;目前只支持组件的静态连接,不能实现动态连接和配置。18组件•一个nesc编写的程序由一个或多个组件构成或连接而成。•一个组件由两部分组成:一个是规范说明,包含要用接口的名字;另一部分是它们的具体实现。•组件分两种:Module组件(模块):实现某种逻辑功能;Configuration组件(配件):将各个组件连接起来成为一个整体。•组件特征:组件内变量、函数可以自由访问,但组件之间不能访问和调用。19组件,接口,命令和事件•一个组件可以提供接口(provides),也可以使用接口(uses)。提供的接口描述了该组件提供给上一层调用者的功能,而使用的接口则表示该组件本身工作时需要的功能。•接口是一组相关函数的集合,它是双向的并且是组件间的唯一访问点。接口声明了两种函数:–命令(command):接口的提供者必须实现它们;–事件(event):接口的使用者必须实现它们。20组件,接口,命令和事件•接口的特点:Provides未必一定有组件使用,但uses一定要有人提供,否则编译会提示出错。在动态组件配置语言中uses也可以动态配置。接口可以连接多个同样的接口,叫做多扇入/扇出。一个module可以同时提供一组相同的接口,又称参数化接口,表明该Module可提供多份同类资源,能够同时给多个组件分享。interfaceSend{commanderror_tsend(message_t*msg,uint8_tlen);commanderror_tcancel(message_t*msg);eventvoidsendDone(message_t*msg,error_terror);commanduint8_tmaxPayloadLength();commandvoid*getPayload(message_t*msg);}command:命令关键字interface:接口关键字event:事件关键字21组件模型ComponentM1{provides{interfaceP1;interfaceP2;……}uses{interfaceU1;interfaceU2;……}}implementation{……//实现部分}组件的实现(implementation)作用域,对于模块来说该部分是程序功能的代码实现部分,它实现了所提供的接口中的命令和使用的接口中的事件;对于配件来说该部分用于将接口的使用组件和提供组件之间连接起来组成一个程序。组件(模块或配件)的规范(specification)作用域。组件根据功能需要可以声明所使用和提供的接口,也可以不提供(或)使用任何接口。component代表module或configuration组件标识符(identifier)P1:接口标识符(名字),模块M1必须实现它所提供接口的命令(command)。U1:接口标识符,模块M1必须实现它所使用的接口中事件(event)。22内容提要1.WSN操作系统2.TinyOS简介3.主要技术4.编程规范5.体系结构23TinyOS的体系结构•TinyOS操作系统采用了组件的结构。系统本身提供了一系列的组件供用户调用,其中包括主组件、应用组件、执行组件、传感组件、通信组件和硬件抽象组件,如下图所示:硬件抽象组件感知组件执行组件通信组件应用组件主组件(包括调度器)•组件由下到上可分为3类:硬件抽象组件、综合硬件组件和高层软件组件。–硬件抽象组件将物理硬件映射到TinyOS的组件模型;–综合硬件组件模拟高级的硬件行为,如感知组件、通信组件等;–高层次的软件组件实现控制、路由以及数据传输等应用层的功能。24TinyOS的应用程序•每个TinyOS程序应当具有至少一个应用组件,即用户组件。该应用组件通过接口调用下层组件提供的服务,实现针对特定应用的具体逻辑功能,如数据采集、数据处理、数据收发等。•一个完整的应用系统由一个内核调度器(简称调度器)和许多功能独立且相互联系的组件构成,可以把TinyOS系统和在其上运行的应用程序看成是一个大的“执行程序”。•现有的TinyOS系统提供了大多数传感网硬件平台和应用领域里都可用到的组件,例如定时器组件、传感器组件、消息收发组件、电源管理组件等,从而把用户和底层硬件隔离开来。在此基础上,用户只需开发针对特殊硬件和特殊应用需求的少量组件,大大提高了应用的开发效率。25zjutwsn@126.com/123456zj浙江工业大学浙江省嵌入式系统联合重点实验室