第14章 无线传感器网络的操作系统

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