TinyOS无线传感器网络操作系统分析
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语言中还有一类特殊的函数称为任务。在TinyOS系统中,任务是一个可以被调度的实体,类似于传统操作系统中的进程或线程概念。
配件通常可通过一系列其他组件来实现一个组件规范,它主要实现组件间的相互访问方式。配件包括组件列表和连接说明,组件列表定义了实现配件的组件,连接通常可将定义的元素(接口、命令、事件等)联系在一起,以完成组件之间功能的调用。
4 TinyOS系统的工作原理
为了适应无线传感器网络的特点,TinyOS操作系统使用了四个主要技术,组件化编程、轻量级线程、主动消息通信和事件驱动模型。
4.1 组件模型
TinyOS操作系统中的组件有四个相互关联的部分:一组命令处理程序句柄、一组事件处理程序句柄、一个经过封装的私有数据帧和一组简单的任务。任务、命令和事件处理程序在私有数据帧的上下文中执行并切换帧的状态。 风速传感器相关文章:风速传感器原理
评论