基于无线传感器网络的桥梁监测系统研究
4 TinyOS 的研究与移植
TinyOS 是由UCBerkeley 开发的一种基于组件的开源嵌入式操作系统,其应用领域是无线传感器网络。在传感器网络中, 传感器节点有两个突出的特点: 一是并发性强, 可能存在多个需要同时执行的逻辑控制; 二是节点的模块化程度高。这两个特点给设计面向传感器网络的操作系统提出了新的挑战。针对这些特点, 加州大学伯克利分校开发出了适合无线传感网络的组件化编程语言nesC 和微型操作系统TinyOS, 引入了轻量级线程( lightweight thread) 、主动消息( active message) 、事件驱动( event-driven) 模式、 组件化编程( componentbased programming ) 等技术, 很好地利用了传感器节点的有限资源。目前这个系统被国内外大学和研究机构广泛应用。
4.1 TinyOS 的组件模型
TinyOS 基于组件化编程语言nesC 实现, 将模块化/组件化编程同基于事件驱动的执行联系起来。可以将TinyOS 及在其上运行的应用程序看成是由许多功能独立且相互有联系的软件组件构成, 一个组件提供一些接口。接口中包含命令和事件,命令是接口具有的功能,接口使用者可以通过关键字call 来调用命令; 事件是接口具有事件通告的能力, 可以通过关键字signal 来通知使用者事件发生, 事件在接口使用者的组件中实现。组件又分为模块文件(module)和配线文件(configuration)两种。模块文件具体实现接口中的命令和事件; 配线文件则完成组件之间的接口连接。一般一个应用程序,只能有一个顶层配件。
4.2 TinyOS 的调度机制
TinyOS 的调度机制比较简单, 按照轻量级线程( 即任务) 以FIFO 的方式调度, 线程之间不允许强占; 当有硬件中断到来时,可以打断用户的轻量级线程, 对硬件中断进行快速响应。任务可以调用下层命令, 可以向上层发信号通知事件发生, 也可以在组件内部调度其他任务。任务的原子性, 使得TinyOS 只需要维护一个任务堆栈就可以了。这种方法在资源极其有限的传感器节点中显得十分有效。TinyOS 是事件驱动型的操作系统。当一个任务完成后, 就可以触发一个事件, TinyOS就会自动调用相应的处理函数。因此, CPU 只有在有事件触发时才唤醒处理, 其余时间都可以处于睡眠状态, 从而可以大大降低系统的能耗。
4.3 TinyOS 通信机制
TinyOS 的通信方式采用主动消息模型(AM)。AM是面向消息通信的一种通信模式, 它是基于地址的, 并且支持信息确认和分发。为了在应用层实现更加复杂的通信协议, 需要把主动消息模型实现为TinyOS 的一个基本通信组件, 这样既可以屏蔽下层不同的通信硬件, 也可以为上层提供统一的通信原语, 方便应用开发。当数据通过网络到达传感器节点时, 首先要进行缓存, 然后主动消息的分发(dispatch)层把缓存中的消息交给上层处理。因为nesC不支持动态分配内存, 所以要求每个应用程序在消息被释放以后, 必须能返回一块未用的内存, 来接收下一个将要到来的消息。因此, 主动消息通信组件需要维持一个额外的消息缓存。在TinyOS 中, 每次消息发送后, 接收方都会发送一个同步的确认消息。为了节省开销,在主动消息的最底层生成确认包,并且每次仅仅发送一个随机数序列作为确认。
4.4 TinyOS的移植处理
TinyOS 操作系统的移植主要考虑硬件处理器是否支持对nesC(gcc) 的编译, 以及对TinyOS 中与硬件平台相关部分的处理。我们选用Atmel 公司的AVR 芯片作为微处理器, gcc对AVR 有良好的支持, 因此不需要做nesC 从GCC 里的解耦。TinyOS 有三层硬件抽象结构(HAA) , 分别为硬件描述层(HPL) 、硬件改编层(HAL) 和硬件接口层(HIL) 。分层结构和组件化描述提高了可移植性, 并简化了应用层软件的开发。越底层的跟硬件越相关, 上层的组件调用下层提供的接口。HPL层主要是对硬件资源的描述, 通过内存或I/O 映射端口与硬件建立通讯。它隐藏了硬件的复杂性, 为上层提供显示硬件能力的接口; HAL则是在HPL基础上对硬件特定功能的封装, 是与硬件相关的功能函数接口; HIL则是与硬件无关的功能函数接口。
据上分析,移植时, 只需要根据我们硬件平台的资源修改HPL和HAL开头的文件即可, 在HPL文件中加入硬件资源的描述, 在HAL文件中修改硬件资源的功能函数。
5 网络通信协议
目前, 通信协议特别是链路层的MAC协议和网络层的路由协议是传感网络研究的热点。针对不同的应用, 研究人员提出了不同的MAC 协议和路由协议, 这些协议各有长处。本系统在网络层采用CTP(Collection Tree Protocol) 路由协议, 链路层则采用LEEP( Link Es timate ExchangeProtocol)协议来计算双向链路质量, 以给上层的路由选择提供基础。通讯协议抽象层结构如图2。

图2 系统通讯协议层结构
光纤传感器相关文章:光纤传感器原理
评论