第14章 无线传感器网络的操作系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TinyOS任务调度机制
TinyOS的调度策略是基于硬件事件句柄(Hardware Handles)和任务 (Task)的两级调度方式,其中事件句柄是由硬件中断触发的,任务则是 基于FIFO的轻量级线程队列。任务具有较低的优先级,任务之间不能相 互抢占;而硬件中断触发的事件具有较高的优先级,可以打断正在执行 的任务以保证硬件中断的快速响应。 1.TinyOS任务与调度器 TinyOS以接口的形式实现任务,使得任务的可用类型进一步扩展。
第三章:无线传感器网络的网络层
第三章:无线传感器网络的网络层
无线传感器网络操作系统概述
TinyOS操作系统 MANTIS OS操作系统
SOS操作系统
操作系统比较分析
无线传感器网络操作wenku.baidu.com统概述
操作系统的传统任务是控制和保护对资源的访问(包 括对输出的支持),管理不同用户的配置,支持几个进程 的并行运行和通信。但是,这些仅仅是嵌入式系统任务的 一部分,因为这种系统比通用系统更加严格和协调。此外, 嵌入式系统往往不完全拥有支持一个成熟操作系统所必需 的资源。
TinyOS的能量管理机制
通信机制
application 接收 GenericComm AMStandard RadioCRCRPacket 消息 SecDadRadioByteSignal hardware 消息 发送
主动消息(AM)是一种异步通信机 制,其基本思想是:消息头部的控制信 息是用户层的指令序列的地址,这些指 令序列会从网络中取出消息数据,并将 消息合并到此后的计算当中去。消息在 其头部包含一个用户层的处理程序地址, 当消息到达时,就会执行这个程序,消 息体就作为一个参数。 在TinyOS中,组件是构造程序的基本单 元,通信功能的实现也是通过由低到高 的组件之间的通信实现的。
通信机制
TinyOS的通信机制主要包括消息发 送和消息接收。 1.消息发送
整个消息的发送涉及组件、接口和事 件三方面,当上层组件有消息发送时 通过接口调用下层组件来实现,下层 组件完成发送后也通过接口向上层组 件回送消息。
2.消息接收 消息的接收主要是以事件逐层向上传 递来进行的。如右图所示。
MANTIS OS操作系统
SOS操作系统
1.模块 在SOS里,模块是可以实现某些功能或者任务的二进制可执行文件,相当于 TinyOS里的组件。模块可能会同时负责很多部分的功能,包括底层驱动、路由 协议、应用程序等。 1)模块结构 SOS实现了一个定义完整并且优化的带有入口和出口的模块,这样一类模块组成 一个模块的结构,SOS通过这样的一个结构来维护模块性。模块之间有两种入口 机制来相互流通:一种是通过内核的调度表,另一种是通过被模块注册的对方 使用的函数。
TinyOS的并发性
nesC提供了进一步的检查机制,保证原子操作内部变 量被保护。例如,变量b和c在别的程序中已经应用且没有 声明原子操作,变量就有可能会发生自我抢占,此时系统 会报错。因此,被异步函数访问的变量通常都需要声明原 子操作。可见,TinyOS系统通过松散地设置一些原子操作 块可以避免发生数据竞争。
TinyOS操作系统
TinyOS把组件化/模块化思想和基于事件驱动的执行模型结合起来。 基本概念如下所述: 1.结构和内容的分离
2.提供接口的设置说明组件功能
5.nesC基于由编译器生成完整程序代码的需求设计 4.组件通过接口彼此静态地相连 3.接口有双向性
TinyOS的系统架构
TinyOS的系统架构
应用程序设计
4.应用程序开发 根据MANTIS OS操作系统的特点,利用节点处理数据的功能,可 以在节点对采集数据进行分析,然后控制节点相应设备。利用传感器 的网络特性,可以将采集的数据进行传送。
SOS操作系统
无线传感网络操作系统可以完成动态链接等一般嵌入式操 作系统可以完成的工作,并且没有性能的丢失。SOS由一个公共 的内核和动态应用模块组成,这些动态应用模块可以在运行时 被加载或者卸载。
WSN对操作系统提出了特殊要求。主要表现在: ① 节点的计算资源有限,需要尽可能地减小系统开销; ② 节点由电池供电,且要求较长的工作周期,因此需要系统 的能耗管理策略与方案,包括操作系统的支持; ③ 节点的各模块之间需要一定的调度协调机制,同时支持并 发控制; ④ 观测任务需要操作系统支持实时性; ⑤ 自适应,包括改变系统行为,以适应环境和资源(如能源) 变化的节点自适应能力; ⑥ 可信赖,包括可靠性、容错性、安全和私密性、易用性等; ⑦ 可升级,指对系统软件进行透明或不透明的升级,以适应 环境和功能需求的变化,
TinyOS以组件的形式实现任务调度器,使得任务调度机制的定制化更 加容易。TinyOS中的任务实际上是一种延迟过程调用,它允许程序推 迟执行相关的计算和操作。 TinyOS中的任务都是执行到底且互不抢占的,即相对于其他任务来说, 正在执行的任务是同步的且具有原子操作特点。
TinyOS任务调度机制
TinyOS的并发性
任务的存在提供了一种管理系统优先权的机制。由于任务之间互不抢占,任务 中执行的代码较为简单,因此在任务执行期间抢占和修改数据,并不会对系统造成 危险。在TinyOS中,中断可以打断正在执行的任务代码,并优先执行。 nesC语言规定,在任务之外可以优先执行的函数由关键字“async”声明,凡 是没有声明“async”的都默认为同步“sync”命令和事件。由于中断的抢占执行 可能会造成数据竞争,特别是状态变量的变化,所以只有当代码的时序非常重要或 被重要的时序使用时,才能声明“async”。例如,假设下列一段发送命令为异步 函数。 command result_t SendMsg.send{ if(!state){ state=TRUE; //send a packet return SUCCESS;} else{ return FALL;}
原子操作块最基本的作用是组件的状态转换。
TinyOS的能量管理机制
微控制器通常有多个能量状态,可以根据功率的不同、 是否有唤醒延迟、周围设备是否支持等进行区别。
TinyOS使用三种机制决定微控制器转入哪种低功耗模式: 页面重写标志位告知TinyOS何时需要重新计算低功耗模 式, 针对芯片的低功耗状态计算函数完成计算功能, 电源状态重写函数允许高层组件引入其他的要求。
MANTIS OS的系统架构
应用程序设计
1.需求分析
在需求分析阶段,对系统的需求进行详细分析,并给出明确的定义,编制系 统分析说明书和初步的MANTIS OS用户手册,作为今后MANTIS OS系统应用 程序开发的依据。并根据需求分析说明书,编制MANTIS OS应用程序开发模 型,进一步制定详细的开发计划,为逐步实现应用程序做好准备。 2.开发模型
TinyOS启动机制
模块RealMainP启动程序时首先通过原子操作初始化系统,操作如下:
atomic{ platform_bootstrap(); call Scheduler.init(); call Platformlnit.Init(); while(call Scheduler.runNextTask()); call Softwarelnit.Init(); while(call Scheduler.runNextTask());}
依据无线传感器网络操作系统的特征以及嵌入式系统开发的思想,在MANT IS OS开发应用程序的实质是利用操作系统的特性,定制节点的功能,并将 其扩大到实际应用中。依据软件工程思想,可方便无线传感器网络中应用程 序的开发,提高应用程序开发的速度、质量以及实用性。
应用程序设计
应用程序设计
3.平台构建 应用程序的开发建立在MANTIS OS平台上,因此建立一个稳定的开发 平台是必须的。 传感器节点上集成了处理器以及Flash存储器,传感器板相当于节点 的运行环境,PC的目的是对接收到的网络节点数据进行分析,串口连 接线是方便PC对节点接收数据的读取,而编程板的作用是将应用程序 导入到节点中。
无线传感器网络操作系统概述
传统的嵌入式操作系统,如μC/OS或嵌入式Linux等,较难满足以上 要求,原因在于:
(1)虽然它们提供了线程(或进程)级的并发,但需要在内存中维 护进程的上下文,并且进程间的切换也需要一定的开销,虽然在微 机或者PDA等设备上这些开销算不上大,但对WSN节点却是难以接 受的。 (2)传统的嵌入式操作系统对I/O进行操作时,除中断方式外,还 提供了阻塞线程或轮询的方式,但它们都要大量的CPU或内存开销, 也与WSN节点资源有限的制约相冲突。 (3)出于安全性考虑,多数操作系统在内核和用户空间的之间有明 显划分,它们之间的交互是通过系统调用和中断处理来完成的。综 合考虑开销和WSN应用模式的特点,这种机制显得臃肿,至少目前 必要性不大。
TinyOS编译机制
TinyOS启动机制
TinyOS的早期版本使用StdControl接口来处理系统初始化,启动所需的软 件。TinyOS2.0以后的版本将StdControl接口分为三个不同的接口:一个负 责初始化组件,一个负责启动和停止组件,一个负责通知TinyOS启动已经 完成。 TinyOS2.X启动程序用到三个接口: Init接口,用来初始化硬件及组件; Scheduler接口,用来初始化和运行任务; Boot接口,用束告知系统已经启动成功。
TinyOS启动机制
模块RealMainP和配件MainC如下所示:
module RealMainP{ provides interface Booted; uses{ interface Scheduler; interface Init as PlatformInit; interface Init as Softwarelnit;}} implementation{......} configuration MainC{ provides interface Boot; uses interface Init as Softwarelnit;} implementation{ components PlatformC,RealMainP,TinySchedulerC; RealMainP.Scheduler→TinySchedulerC; RealMainP.PlatformInit→PlatfomaC; SoftwareInit=RealMainP.SoflwareInit; Boot=RealMainP;}
为增加任务的种类,TinyOS还引入了任务接口。任务接口允许使用者 扩展任务的语法和语义。 TinyOS的任务调度器由TinySchedulerC.nc文件表示,调度器的真正实 现是由模件SchedulerBasicP.nc中一系列的C函数完成的,为协调不同类型 的任务提供策略,要修改TinyOS调度策略需替换或修改此文件。每种调度 器都必须支持nesC任务和任务接口,调度器提供参数化的接口 Taskbasic[uint8_t tasklD],连接至调度器接口的任务使用unique()函数得 到一个唯一的标识符,由关键字“TinySchedulerC.TaskBasic”表示。 McuSleep接口用来进行微处理器的能量管理。 TinyOS任务调度器还必须提供调度器接口Scheduler,包括初始化和运行任 务的命令。TinyOS使用此接口来执行任务。
硬件表示层通过寄存器或I/O寻址直接访问硬件资源,同样 地,硬件也可以触发中断申请服务。
硬件适应层是硬件抽象结构的核心,它使用HPL组件提供的 原始接口将硬件资源的复杂性进一步隐藏。
硬件接口层将HAL提供的针对具体平台的抽象转化为独立于 平台的接口。这些接口隐藏了硬件平台的不同,提供典型的 硬件服务,使应用开发更加简化
MANTIS OS是一个多模型系统[,提供多频率通信,适合 多任务传感器节点,具备动态重新编程等特点。与现在流行 的TinyOS操作系统(支持nesC语言)相比,MANTIS OS支持 C语言,无须学习新的编程语言。另外,MANTIS OS基于线 程管理模型开发,提供线程控制API(应用编程接口),而 TinyOS是基于事件驱动的,因此,对于多任务应用程序开发, 前者更加灵活。目前,对MANTIS OS的研究理论很多,但都 是针对MANTIS OS系统特性进行的研究,在具体应用上仍然 没有产生一个详细的应用开发模型。