无线传感网络的构件化软件开发
时间:2023-09-29 10:35来源: 作者: 点击: 次随着移动技术和互联网技术的飞速发展,移动将是下一代发展的大趋势。而移动的重要子网之一器网络能够大大扩展互联网的触角。由于器网络低功耗、低成本、分布式和资源有限等特点,使得开发器网络的相关协议成为无线传感器网络发展的关键技术因素之一。传统的方法显然已经不适合无线传感器协议的开发,而近来兴起的新的开发模式是基于化的方法。
基于化的(CBSD,comp onent-based SOFTWARE development)方法是一种可以提供软件复用性的开发方法。是用于进行软件开发、复用和软件组装的基本单元。在面向构件的技术里,一个应用软件不是通过大量的代码来描述,而是通过数量有限的构件来描述,如图1(a)所示。与传统的嵌入式软件不同,构件化的嵌入式软件是由一组软件构件构成的,这些构件的一个或者几个组合成一个完整的应用;而且新的应用也可以使用已有构件,从而提高软件复用性。传统模式下开发出来的嵌入式软件提供的是专用服务,软件与应用是一一对应的,如图1(b)所示。整个过程中代码量大,复杂度高,代码重用性小,并且更新困难,不适应无线传感器节点资源有限的要求。
TinyOS是一种基于构件化的无线传感器网络操作系统,该系统本身就是一个构件库。其开发语言nesC 提供了对软件构件技术的支持。通过灵活组装各个固定功能的芯片级构件可以方便地搭建起不同硬件平台级构件。因此在TinyOS 系统下开发构件化的无线传感器协议的方法已被广泛使用。但是,目前由于开发者过度依靠现有的集成构件,导致开发出来协议性能并不理想。
图1 构件化的嵌入式软件与传统嵌入式软件
1 现有开发方法描述
系统为了简化开发者的开发难度,对各芯片的底层构件进行了构件化包装。调用硬件底层构件所提供的最基本功能接口,来组合实现一些功能模块,如配制芯片模块、发送数据模块、接收数据模块等。系统对各芯片的硬件抽象层的集成化操作基本是一样的,图2 是CC2420系统集成构件调用硬件抽象层构件的关系。
图2 系统集成构件和硬件抽象层构件关系
由图2 可以看出,系统集成构件起到一个桥梁作用,使开发者简化了开发工作。但是,系统集成构件在调用硬件抽象构件实现自身功能的时候出现重复调用问题。并且构件CC2420SpiC 在不同的层(系统集成层和硬件抽象层)都有使用,这本身使得系统集成层和物
理抽象层关系变得模糊和复杂,加大开发者开发难度。
根据构件化系统编程可知,调用构件的接口需要实现提供接口构件中的event 事件。如果多个构件重复使用同一个构件的同一个接口,每个使用该接口的构件都需要将该接口中的event 事件执行一次。系统集成构件同时调用相同的硬件抽象层构件中的接口命令时,完成命令的signal 事件会通知每个使用该接口的构件。这就导致了构件化系统下编程常见问题:扇出(fan-out)。系统为了解决这一问题不得不将构件性质改为generic 类型。而这会引入新的构件调用模式。所有这些使得系统集成构件对硬件抽象层构件的调用变得比实际要复杂,代码的执行效率大大降低。
2 直接调用底层构件方法描述
对系统集成构件的研究发现,应用层构件在调用系统集成构件时最终调用了硬件抽象层构件,只是系统集成构件将硬件抽象层构件重新整合到某个大的集成构件中,方便用户查找接口。实际上,由于嵌入式软件和硬件结合性高、硬件资源有限等特点,为了使得软件系统性能达到最高,嵌入式软件开发者在开发之前对硬件已经非常熟悉。在这种情况下没有必要在硬件抽象层之上硬性加上系统抽象层。对开发者而言,直接调用底层硬件抽象层构件会更直观、简单。
具体实现方法如图3 所示,在构件操作上对没有引入新功能的构件在配线构件配线时候可以跨过整个系统集成构件,而不会影响系统功能,并可以简化开发过程,提高运行效率。以下将这一方法简称为直接调用法。
图3 构件简化过程