从系统层次的角度看,一个完整的Sensor Node System可以分成这样几个层次(从上到下):
- Application
- Service
- Hal
- Hardware
Hal means Hardware Abstraction Layer. Service Layer包含构建在HAL之上的一些基础服务,如基于hal_timer实现的svc_actsche (action scheduler),基于hal_cc2420实现的svc_openmac(MAC协议), svc_opennet(NET协议),大部分OS的基础功能也将包含在Service中,例如调度可以部分的由action scheduler来承担。在WSN领域常出现的Location, Time Synchronization等常被归入Middleware,但在OpenWSN体系中,它们也将被归入Service。因为,从OOD/OOP的观点看,整个系统System是由多个对象object的实例instance组成的,location, time sync, mac, scheduler等都被设计实现成为一个个独立的小service,而Application,则被简化成为各个service实例的创建和连接(相当于TinyOS nesC中的配置Configuration)。
OpenWSN项目的参考实现,将提供Service和Hal,而Application将由开发者完成,不属于OpenWSN。
因此,从已经完成的工作看,Service中尚不包含完备的调度器,系统中也没有引入Thread/Process之类的概念,当然进程同步与互斥等问题更无从谈起。所以,认为现在的OpenWSN是一个Sensor Node OS为时尚早,但这不排除未来为其加入一个针对sensor应用的RTOS。事实上,目前里面已经包含一份uCOS-II,但uCOS-II用于低功耗sensor node并不合适,真希望uCOS-II的调度能够改进一下。
OpenWSN同TinyOS一样,非常强调组件,但是OpenWSN比TinyOS更强调编程模式,因为在TinyOS中,编程模式已经被固定,而OpenWSN中,编程模式在于程序员自己的掌握,因此灵活性也更大一些。
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment