Google
 

Monday, January 15, 2007

Q: OpenWSN软件平台参考实现

整个软件系统大致分成四层:

- 应用层 Application
- 服务层 Service
- 驱动层 DRIVER + RTOS
- 硬件抽象层 HAL + BOOT



Fig. OpenWSN软件平台架构

HAL提供硬件的软件抽象,这是OpenWSN具有良好可移植性的主要原因。事实上,从诞生之日起,可移植性就是OpenWSN的重要目标。BOOT引导与HAL也处于同一层次。在代码中放在hal子目录下,并以"hal_"前缀标明。

DRIVER提供了更高层次的操作抽象。例如OpenWSN针对Uart提供一个Uart硬件抽象,提供基于byte的通信方式,在UART HAL基础上,系统提供SioComm串行通信对象,提供以行或者packet通信的方式。为简单实用起见,对很多硬件,系统只提供了Hal,因为没有必要再去提供额外的Driver. 在代码中放在service子目录下并以"svc_"前缀标明。

Service 更高层次的操作抽象。例如location服务。在代码中放在service子目录下并以"svc_"前缀标明。部分人所说的WSN Middleware也属于这个层次,但OpenWSN的Service目前只囊括了WSN Middleware中的基本必须部分,例如location, time sync等,还未包括诸如data aggregation等服务,原因是data aggregation非常接近于应用,应用相关性太强,难以抽象出来单独实现。

Application代表整个应用。在OOD/OOP体系下,由于service目录中已经提供了大多数可用对象,Application简化成为对象实例的初始化和对象之间的连接功能。代码中提供的rfmodem/analyzer等测试程序示例就展示了这点。当然,根据需要,用户也可以创建新的service对象并在Application中使用。OpenWSN鼓励用户开发新的service对象并反馈给OpenWSN项目。


由这个划分大家也可以看到,我们并未过多强调WSN系统本身的特性,这个设计是出于实用性考虑.目标是开发出的软件要足够的稳定可靠,可满足高可靠的工业实际应用要求.

No comments:

Google