您当前的位置:首页 > 淘宝百科

TinyOS操作系统的工作原理、应用技术及应用分析

时间:2023-02-07 20:38:47

TinyOS操作系统的工作原理、应用技术及应用分析

无线传感器网络(WSN)是由大量部署在监测区域的廉价微型传感器节点通过无线通信组成的多跳自组织网络系统。其目的是协同感知、收集和处理网络覆盖区域内感知对象的信息并发送给观察者。无线传感器网络技术的研究涉及传感器技术、现代网络技术、嵌入式计算机技术、无线通信技术等多个热门学科的前沿领域。由于无线传感器网络在工业监控、环境检测、医疗监测、军事侦察等诸多领域具有广阔的应用前景,因此受到了世界各国工业界、学术界和军事部门的关注,并迅速成为当今世界的研究热点之一。

1无线传感器网络的主要特点

传感器网络节点的硬件一般由四个单元组成:数据采集、数据处理、数据收发和电源。数据采集单元通过传感器采集外部数据,并转换成数字信号;数据处理单元是节点的核心模块,负责协调节点各部分的工作,如对数据采集单元采集的数据进行必要的处理和存储,设置数据收发单元的工作模式等。数据收发单元负责无线数据传输和与数据处理单元的数据交互。以上四个基本模块,加上相应的操作系统、协议栈和应用程序,构成了一个基本的无线传感器网络节点,多个网络节点分布在一起就可以完成无线传感器网络的基本功能。

在软件设计方面,该系统依靠专用的嵌入式实时操作系统来管理和协调传感器节点各硬件部分的工作。各层的上层应用和通信协议都以节能为中心,必要时可以牺牲一些其他网络性能指标来获得更高的能效。图1显示了传感器网络节点的基本组成。

传统的无线网络设计基本上是同时满足人们的各种需求,比如语音、文章、图像等等。无线传感器网络通常是为特定需求而设计的。这是一个基于应用的无线网络。与移动通信网络、无线局域网和蓝牙相比,无线传感器网络具有以下主要特点:

(1)电源有限:在无线网络中,每个节点的电源都是有限的,而且大部分网络都工作在无人区或者对人体有害的恶劣环境中,所以几乎总是很难更换电源。

(2)计算能力有限:所有的传感器网络节点都采用嵌入式处理器,但是嵌入式处理器的处理能力使得传感器节点的计算能力相对有限。

(3)无线传感器网络节点数量多,分布范围广。网络中传感器节点的数量非常密集和庞大,有时可能达到数百、数千甚至更多。

(4)动态拓扑:传感器网络的拓扑结构可能会因环境或节点功耗等因素而发生变化,这就要求传感器网络系统能够适应这种变化。

2 TinyOS操作系统

由于无线传感器网络节点资源有限,传统的嵌入式操作系统难以正常有效地运行和工作,尤其是能量和内存需求之间的矛盾更加突出。因此,需要一种全新的嵌入式操作系统来满足无线传感器节点的基本需求。TinyOS操作系统是由加州大学伯克利分校的研究人员为无线传感器网络设计的开源嵌入式操作系统。TinyOS操作系统主要采用轻量级线程、主动消息通信、事件驱动模式、组件编程等技术。

TinyOS操作系统最初使用汇编和C语言。然而,经过研究人员的进一步研究和使用,发现C语言并不能有效方便地支持无线传感器网络应用的开发。因此,经过仔细的研究和设计,并在对C语言进行一定扩展的基础上,提出了支持组件编程的nesC语言,它可以将组件和模块化的思想与基于事件驱动的执行模型相结合。因为TinyOS操作系统和基于TinyOS操作系统的应用都是用nesC语言编写的,所以在介绍TinyOS操作系统之前,先介绍一下nesC语言。

3 nesC语言

TinyOS和其上运行的应用程序可以看作是一个大型的“执行程序”,由许多功能独立而又相互关联的软件组件组成。图2显示了nesC语言的一般程序框架。这个系统中的一个组件一般会提供一些接口(假设组件名为ComA)。接口可以看作是这个软件组件实现的一组功能声明,是一组单独定义的命令和事件。其他组件通过引用同一个接口声明来使用本组件(ComA)的函数,从而实现组件间函数的相互调用,即组件的接口是实现组件间互联的通道。但是,如果在一个组件中实现的功能没有在接口中解释,它就不能被其他组件使用。nesC语言的定义中有两种功能不同的组件:组件接口中的功能在模块的组件文件中实现,不同组件之间的关系由称为附件的组件文件描述。

这个系统中的接口一般是指一组声明的著名函数,同时接口也是连接不同组件的纽带。组件的接口通常是双向的,实际上是提供者组件和使用者组件之间的多功能交互通道。由接口的提供者实现的接口的一组功能函数被称为命令;界面用户需要实现的一组功能称为事件。

组件是nesC程序的基本单位,可分为模块和附件两种类型。

模块是组件的逻辑功能实体,主要包括命令、事件和任务的具体实现。在TinyOS中,命令是非阻塞的,相关的事件调用在完成时会得到通知。一般来说,命令调用是向下的,即应用组件调用那些与硬件紧密结合的组件,而事件调用正好相反。一些特殊基本事件的调用必须绑定到硬件中断。nesC语言中还有一种特殊的函数叫做task。在TinyOS系统中,任务是可以被调度的实体,类似于传统操作系统中进程或线程的概念。

附件通常可以通过一系列其他组件实现一个组件规范,主要实现组件之间的相互访问。附件包括部件清单和连接说明。组件列表定义了实现附件的组件。连接通常可以链接已定义的元素(接口、命令、事件等)。)来完成组件之间的函数调用。

4 TinyOS系统的工作原理

为了适应无线传感器网络的特点,TinyOS操作系统采用了组件编程、轻量级线程、主动消息通信和事件驱动模型四种主要技术。

4.1组件模型

TinyOS操作系统中的组件有四个相互关联的部分:一组命令处理程序句柄、一组事件处理程序句柄、一个封装的私有数据帧和一组简单的任务。任务、命令和事件处理程序在私有数据帧的上下文中执行,并切换帧的状态。

TinyOS操作系统中的组件通常分为三类:硬件抽象组件、综合组件和高级软件组件。其中,硬件抽象组件用于将物理硬件映射到TinyOS操作系统中的组件,无线传输模块是该组件的代表,它可以提供命令来操纵连接到RF收发器的各个I/O引脚和信号事件,以通知其他组件数据比特的发送和接收。图3显示了天线传感器应用的组件结构:合成组件可以模拟高级硬件的行为,此组件的一个示例是图3中的无线电字节组件,它以字节与上层组件交互,以位与下层无线传输模块组件交互,并最终将无线接口映射到UART设备接口。高级软件组件可以完成控制、路由和数据传输等功能。图3中的主动消息处理模块是该组件的代表,它可以完成填充包缓冲区的功能,并在传输之前将接收到的消息分配给相应的任务。

4.2轻质螺纹

在TinyOS操作系统中,一般的轻量级线程任务(TinyOS操作系统中的任务)可以采用FIFO模式调度,不允许轻量级线程之间的抢占。任务一旦执行,就必须完成,不能被其他任务打断。而硬件处理线程(即中断处理线程)可以中断用户的轻量级线程和低优先级中断处理线程,因此可以快速响应硬件中断。

4.3主动消息通信

主动消息通信是一种面向消息通信的高性能通信模型。在无线传感器网络中采用主动消息机制的主要目的是使无线传感器节点的计算能力和通信重叠。为了使主动消息更适合无线传感器网络的需要,主动消息提供了三种基本的通信机制,一是带确认的消息传递,二是明确的消息地址,三是消息分发。在TinyOS操作系统中,主动消息通信被视为一个系统组件,它屏蔽了下层不同的通信硬件,从而为上层提供了一致的通信原语,可以方便开发者实现各种功能的高层通信组件。

在TinyOS的主动通信中,当数据到达传感器节点时,先进行缓存,然后将缓存的数据通过主动消息分发给上层应用。TinyOS操作系统不支持动态内存分配,因此要求每个应用程序能够在它需要的消息被释放后返回一个未使用的消息缓存,以便它可以用来接收下一个到来的消息。因为在TinyOS操作系统中,应用之间的执行是不能被抢占的,所以不会出现多个未使用的消息缓存之间的冲突。因此,TinyOS操作系统的主动消息通信组件只需要维护一个额外的消息缓存,用于接收下一条消息。如果应用程序需要同时存储多条消息,它需要在私有数据帧上静态分配额外的空间来保存消息。

一般情况下,由于TinyOS操作系统只提供尽力而为的消息传递机制,接收方需要向发送方提供确认反馈信息,以确定传输是否成功。确认消息可以由主动消息通信组件生成,这比在应用层生成确认消息包可以节省更多的开销并缩短反馈时间。

4.4事件驱动模型

TinyOS操作系统是一个事件驱动的操作系统,所以当一个任务完成时,可以触发一个事件,然后TinyOS操作系统自动调用相应的处理函数。事件驱动分为硬件事件驱动和软件事件驱动。硬件事件驱动是指一个硬件发出中断,然后进入中断处理函数;软件驱动程序通过signal关键字触发事件。

5摘要

虽然TinyOS已经得到了广泛的应用和相当的认可,但这并不意味着TinyOS可以适用于WSN的所有应用场景。实际上,在某些情况下,TinyOS并不能很好地工作,它也有一些缺点,例如过载、任务丢失和通信吞吐量下降。无线传感器网络节点的三个典型任务一般是传感器采集、本地数据传输和作为中继节点的数据包转发。当本地任务的频率过高时,任务队列很快就会满,然后可能会丢失发送或接收任务,导致数据包丢失;此外,如果本地任务运行时间过长,发送或接收数据包的任务将需要等待很长时间才能处理,这将降低通信速率。因此,TinyOS的调度策略可能会导致问题。FIFO的调度机制也可能造成一些重要任务得不到实时响应的问题。这些问题的解决方案将在以后的文章中讨论。

标签:组件传感器网络

组件

最新文章