TinyOS本身是由一组组件构成的,为实现TinyOS和TinyOS应用程序的开发设计,Berkeley推出了一种支持组件的程序设计语言nesC。TinyOS提供了大多数传感器网络硬件平台和应用领域里都可用到的组件,例如定时器组件、传感器组件、消息收发组件、电源管理组件等,而用户只需要针对特殊硬件和特殊应用需要开发少许组件。
TinyOS组件由4个部分组成:命令函数、事件函数、任务和一个固定大小的局部存储区。组件之间通过接口实现交互。接口就是声明的一组函数,其中的函数有两种类型:一类称为命令函数,以关键字描述,这类函数由接口的提供者实现;另一类称为事件函数,以关键字event描述,这类函数由接口的使用者实现。事件函数用于直接或间接地响应硬件事件。最底层组件的事件函数直接作为硬件中断的中断处理程序,如收发器中断、定时器中断等。组件之间交互的具体方式是上层组件调用下层组件中的命令函数;下层组件触发上层组件中的事件函数,如图4-10所示。
TinyOS程序模型如图4-11所示。一个完整的TinyOS程序就是一个由若干组件按一定层次关系装配而成的复合组件。在TinyOS程序模型中,处于最上层的是Main组件。该组件由操作系统提供,传感器上电复位后会首先执行该组件中的函数,其主要功能是初始化硬件、启动任务调度器以及执行用户组件的初始化函数。每个TinyOS程序至少应该具有一个用户组件,该用户组件通过接口调用下层组件提供的服务,实现程序功能,如数据采集、数据处理、数据收发等。用户组件的开发是TinyOS程序设计的重点。TinyOS提供一些常用组件,如执行组件、传感器组件、通信组件。执行组件用于控制LED指示灯、继电器、步进电动机等硬件模块。传感器组件用于采集环境数据,如温度、亮度等。通信组件则实现与其他节点通信。TinyOS提供了两种通信组件:通过无线电收发器通信的组件和通过UART口通信的组件,后者仅应用于槽节点中。硬件抽象层对上层组件屏蔽了底层硬件的特性,从而实现上层组件的硬件无关性,以方便程序移植。
(www.xing528.com)
图4-10 TinyOS组件模型
图4-11 TinyOS基于组件的程序模型
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。