OpenWSN是一款开源的无线传感器网络基础平台,产品基于ANSI C语言开发。
简介
OpenWSN: 开源的无线传感器网络基础平台(事件驱动的操作系统内核,硬件的组件化封装,协议栈,示例)。
软件特点
OpenWSN与 TinyOS的比较
相同点:
* 都是事件驱动
* 都是组件架构
* 同样都提供了非常丰富的组件
不同点:
* OpenWSN基于 ANSI C语言开发,TinyOS基于nesC,语法不同;
* OpenWSN采用C容易上手,学习曲线短,但TinyOS采用nesC 不受C语言语法的制约,提供了更加优雅的组件组装方式;
* OpenWSN强调对工业界传统遗留资源(现有代码、员工和员工的经验与技能)的保护与利用,TinyOS诞生自学术界,更多的是一个创新想法的实验温床,工业界接受程度有限;
* OpenWSN实施严格的分层设计与实现,强调先分好层然后在层内再区分组件;TinyOS因为过于强调组件而在层次上不够明显,特别是在早期1.0版本中;
* 因为采用 ANSI C,所以OpenWSN移植性非常好,可被轻松移植到绝大部分资源受限的系统中,今天不支持C编译器的微控制器非常少见,且可充分利用厂家提供的C编译器或第三方提供的开发环境进行优化;而nesC的移植相对困难,且与GCC绑定,撇开nesC的移植不谈,对GCC不支持的硬件就无法运行TinyOS。
* OpenWSN 可以作为母体操作系统的一个任务运行,母体操作系统可以是uCOS, uCLinux or 其他OS。向一个母体操作系统移植与向一个新硬件平台移植遵循类似的思路;而TinyOS自成体系,要想与其他操作系统融合,利用其它操作系统的功能就非常困难;
* OpenWSN取消了TinyOS中Configurator配件的概念,组件的组装过程隐含于组件初始化过程中,TinyOS中刻意引入配件强调了组装的概念但事实上显得有些多余。
* OpenWSN的osx kernel,提供了事件调度,未来将进一步扩展到soft real time schedule
* OpenWSN中osx中的事件为单一类型,不象TinyOS中那样设计出两种不同类型事件(普通的事件和中断事件),从而简化了组件的开发。中断事件在开发实践中是不太好处理,如代码在中断态运行必然要求有辅助的各种保护措施以及中断态和非中断态之间的联络沟通机制,事实上复杂化了应用层的开发。中断事件在OpenWSN中尽量在HAL 层封装掉。即使不被封装掉,也往往是以listener方式对外提供,这在使用上比区分事件类型更清楚。
* OpenWSN的组件设计更加强调被动性,即强调一个组件应以服务方式运行,被动接受外部输入事件然后做出响应。当然,OpenWSN并不要求所有组件必须如此。