第6章无线传感器网络操作系统

上传人:人*** 文档编号:568217294 上传时间:2024-07-23 格式:PPT 页数:94 大小:3.89MB
返回 下载 相关 举报
第6章无线传感器网络操作系统_第1页
第1页 / 共94页
第6章无线传感器网络操作系统_第2页
第2页 / 共94页
第6章无线传感器网络操作系统_第3页
第3页 / 共94页
第6章无线传感器网络操作系统_第4页
第4页 / 共94页
第6章无线传感器网络操作系统_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《第6章无线传感器网络操作系统》由会员分享,可在线阅读,更多相关《第6章无线传感器网络操作系统(94页珍藏版)》请在金锄头文库上搜索。

1、第第6 6章章 无线传感器网络操作系统无线传感器网络操作系统6.16.2无线传感器网络操作系统概述无线传感器网络操作系统概述TinyOS操作系统操作系统MantisOS操作系统操作系统6.36.46.5SOS操作系统操作系统无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战2针对传感器网络应用的多样性、硬件针对传感器网络应用的多样性、硬件功能有限、资源有限、节点微型化和分布功能有限、资源有限、节点微型化和分布式多协作等特点,需要研究和设计新的基式多协作等特点,需要研究和设计新的基于传感器网络的操作系统。于传感器网络的操作系统。目前已经出现的无线传感器网络操作目前已经出现的

2、无线传感器网络操作系统有系统有TinyOS、MantisOS和和SOS。1 16.1无线传感器网络操作系统概述无线传感器网络操作系统概述3第六章第六章 无线传感器网络操作系统无线传感器网络操作系统6.16.2无线传感器网络操作系统概述无线传感器网络操作系统概述TinyOS操作系统操作系统MantisOS操作系统操作系统6.36.46.5SOS操作系统操作系统无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战4TinyOS是一个典型的无线传感器网是一个典型的无线传感器网络操作系统,是由加州大学伯克利分校开络操作系统,是由加州大学伯克利分校开发出来的一个开源的嵌入式操作系统。

3、它发出来的一个开源的嵌入式操作系统。它采用一种基于组件(采用一种基于组件(component-Based)的开发方式,能够快速实现各种)的开发方式,能够快速实现各种应用。应用。1 16.2TinyOS操作系统操作系统5TinyOS操作系统、库程序和应用服操作系统、库程序和应用服务程序均是用务程序均是用nesC语言编写的语言编写的,TinyOS的很多特性,如并发模型、组件结构等都的很多特性,如并发模型、组件结构等都是由是由nesC语言体现的。语言体现的。2 26.2TinyOS操作系统操作系统66.2.1 nesC语言基础语言基础6.2.2 TinyOS的组件模型的组件模型6.2.3 TinyO

4、S的通信模型的通信模型6.2TinyOS操作系统操作系统6.2.4 TinyOS 1.0的安装与调试的安装与调试6.2.5 TinyOS 2.0的安装与调试的安装与调试6.2.6 TinyOS的典型应用与分析的典型应用与分析76.2.1 nesC语言基础语言基础1. 简简 介介2. 接接 口口(interface)3. 组组 件件(component)4. 模模 块块(module)5. 配配 置置(configuration)81. 简简 介介nesC是对是对C的扩展,它基于体现的扩展,它基于体现TinyOS的结构化概念和执行模型而设计。的结构化概念和执行模型而设计。nesC在设在设计时强调

5、组件化的编程思想,基本特性如下:计时强调组件化的编程思想,基本特性如下: 结构和内容的分离。结构和内容的分离。 根据接口的设置说明组件功能。根据接口的设置说明组件功能。 组件通过接口彼此静态地相连。组件通过接口彼此静态地相连。9一个一个nesC程序的基本组成是组件,一个程序的基本组成是组件,一个组件是一个组件是一个*.nc文件。文件。一个应用程序(一个应用程序(app)一般有一个称为)一般有一个称为Main的组件的组件(类似于(类似于C的的main函数函数),它调,它调用其他的组件以实现程序的功能。用其他的组件以实现程序的功能。1. 简简 介介10 nesC的接口实际上是一系列声明的有名的接口

6、实际上是一系列声明的有名函数的集合,是连接不同组件的纽带。函数的集合,是连接不同组件的纽带。 nesC的接口有双向性:它们描述多功能的接口有双向性:它们描述多功能的两个组件(供给者和使用者)之间的交互的两个组件(供给者和使用者)之间的交互渠道。渠道。接口声明了两组函数,命令接口声明了两组函数,命令(command)和事件()和事件(event)。接口的提)。接口的提供者实现命令,而接口的使用者实现事件。供者实现命令,而接口的使用者实现事件。一个组件可以使用或提供多个接口。一个组件可以使用或提供多个接口。2. 接接 口(口(interface)11任何一个任何一个nesC应用程序都是有一个或多应

7、用程序都是有一个或多个组件连接起来的。在个组件连接起来的。在nesC中有两种类型的中有两种类型的组件,分别称为模块组件,分别称为模块(module)和配置)和配置(configuration)。每个每个nesC应用程序都由一个顶级配置所应用程序都由一个顶级配置所描述,其内容就是将该应用程序所用到的所描述,其内容就是将该应用程序所用到的所有组件连接起来,形成一个有机整体。有组件连接起来,形成一个有机整体。3. 组组 件件(component)12模块(模块(module)是使用)是使用C语言语言实现的组件。实现的组件。完成具体的功能,包括:完成具体的功能,包括: (1)接口)接口 命令命令(co

8、mmand)、事件)、事件(event) (2)任务()任务(Task)4. 模模 块(块(module)13配置通过连接一系列其他组件来实现一个组配置通过连接一系列其他组件来实现一个组件的规范件的规范。5. 配配 置置(configuration)14(1)配置)配置中要包含组件中要包含组件列表列表用用connection-list指出用来构建这一个配置指出用来构建这一个配置的所有组件的所有组件,用连接,用连接(wiring)来连接它们。)来连接它们。(2)连接()连接(wiring)连接用来把规范元素(接口、命令和事件)连接用来把规范元素(接口、命令和事件)联系在一起联系在一起。6.2.1

9、 nesC语言基础语言基础6.2.2 TinyOS的组件模型的组件模型6.2.3 TinyOS的通信模型的通信模型6.2TinyOS操作系统操作系统6.2.4 TinyOS 1.0的安装与调试的安装与调试6.2.5 TinyOS 2.0的安装与调试的安装与调试6.2.6 TinyOS的典型应用与分析的典型应用与分析156.2.2 TinyOS的组件模型的组件模型TinyOS包含经过特殊设计的组件模型,包含经过特殊设计的组件模型,其目标是高效的模块化和易于构造组件型应用其目标是高效的模块化和易于构造组件型应用软件。软件。组件模型允许应用程序开发人员方便快捷组件模型允许应用程序开发人员方便快捷地将

10、独立组件组合到各层配置文件中,并在面地将独立组件组合到各层配置文件中,并在面向应用程序的顶层配置文件中完成应用的整体向应用程序的顶层配置文件中完成应用的整体装配。装配。166.2.2 TinyOS的组件模型的组件模型图图6-1 支持多跳无线通信的传感器应用程序的组件结构支持多跳无线通信的传感器应用程序的组件结构176.2.1 nesC语言基础语言基础6.2.2 TinyOS的组件模型的组件模型6.2.3 TinyOS的通信模型的通信模型6.2TinyOS操作系统操作系统6.2.4 TinyOS 1.0的安装与调试的安装与调试6.2.5 TinyOS 2.0的安装与调试的安装与调试6.2.6 T

11、inyOS的典型应用与分析的典型应用与分析18TinyOS中的通信遵循中的通信遵循主动消息主动消息主动消息主动消息(Active Message,AM)通信模型,它是一个简单的、可)通信模型,它是一个简单的、可扩展的、面向消息通信的高性能通信模式,一般扩展的、面向消息通信的高性能通信模式,一般广泛应用在并行分布式处理系统中。广泛应用在并行分布式处理系统中。6.2.3 TinyOS的通信模型的通信模型19主动消息主动消息主动消息主动消息不但可以让应用程序开发者避免使不但可以让应用程序开发者避免使用忙等待(用忙等待(Busy-Waiting)方式等待消息数据的)方式等待消息数据的到来;到来;而且可

12、以在通信和计算之间形成重叠,这可而且可以在通信和计算之间形成重叠,这可以极大地提高以极大地提高CPU的使用效率,并减少传感器节的使用效率,并减少传感器节点的能耗。点的能耗。6.2.3 TinyOS的通信模型的通信模型20主动消息通信主动消息通信实现为一个实现为一个TinyOS系统的系统的组件,屏蔽了下层各种不同的通信硬件,为上组件,屏蔽了下层各种不同的通信硬件,为上层应用提供基本的、一致的通信原语,方便应层应用提供基本的、一致的通信原语,方便应用层序开发人员开发各种不同应用。用层序开发人员开发各种不同应用。6.2.3 TinyOS的通信模型的通信模型21TinyOS只能提供只能提供最基本的通信

13、组件最基本的通信组件最基本的通信组件最基本的通信组件,最,最后由应用程序选择或定制所需要的特殊通信后由应用程序选择或定制所需要的特殊通信组件。组件。6.2.1 nesC语言基础语言基础6.2.2 TinyOS的组件模型的组件模型6.2.3 TinyOS的通信模型的通信模型6.2TinyOS操作系统操作系统6.2.4 TinyOS 1.0的安装与调试的安装与调试6.2.5 TinyOS 2.0的安装与调试的安装与调试6.2.6 TinyOS的典型应用与分析的典型应用与分析221. 手动安装手动安装2. wizard向导安装向导安装3. 卸卸 载载4. TinyOS安装测试和试运行编译程序功能安装

14、测试和试运行编译程序功能6.2.4 TinyOS 1.0的安装与调试的安装与调试236.2.1 nesC语言基础语言基础6.2.2 TinyOS的组件模型的组件模型6.2.3 TinyOS的通信模型的通信模型6.2TinyOS操作系统操作系统6.2.4 TinyOS 1.0的安装与调试的安装与调试6.2.5 TinyOS 2.0的安装与调试的安装与调试6.2.6 TinyOS的典型应用与分析的典型应用与分析241安装安装JDK1.5从从http:/上下载上下载jdk1.5(若计(若计算机上己安装过算机上己安装过jdk1.6建议先将其卸解)。建议先将其卸解)。JDK的安装目录并不作要求,并且如果

15、只是的安装目录并不作要求,并且如果只是单纯安装单纯安装TinyOS2.0可以不用去环境变量中配置可以不用去环境变量中配置JDK。6.2.5 TinyOS 2.0的安装与调试的安装与调试252安装安装Cygwin从从http:/ TinyOS 2.0的安装与调试的安装与调试263安装安装avr单片机工具和单片机工具和MSP430单片机工具单片机工具从从上下载所需的上下载所需的rpm文件用文件用如下命令安装即可:如下命令安装即可:cd /tmprpm ivh avr-binutils-2.15tinyos-3.cygwin.1386.rpmrpm qarpm ivh avr-gcc-3.4.3-1

16、.cygwin.i386.rpmrpm ivh avr-libc-1.2.3-1.cygwin.i386.rpmrpm ivh avaricc-2.4-1.cygwin.i386.rpm6.2.5 TinyOS 2.0的安装与调试的安装与调试274安装安装nesc和和tinyos-tools使用使用rpm -ivh即可正常安装,不得以可以考即可正常安装,不得以可以考虑采用虑采用-ignoreos参数。参数。5安装安装tinyos-2.0下载下载tinyos-2.0.2-2.cygwin.noarch.rpm,也是用也是用rpm ivh rpmname命令进行安装。命令进行安装。6.2.5 Ti

17、nyOS 2.0的安装与调试的安装与调试28在所有安装结束后,找到在所有安装结束后,找到/etc/profile.d,进,进入该文件夹后,需要新建一个名为入该文件夹后,需要新建一个名为tinyos.sh的的文件,建议复制其目录下的某个文件,建议复制其目录下的某个.sh文件,再修文件,再修改名字,并将其中的内容用以下的内容替代改名字,并将其中的内容用以下的内容替代# script for profile.d for bash shells,adjusted for each users# installation by substituting /opt for the actual tinyo

18、s tree# installation pointexport TOSROOT=/opt/tinyos-2.xexport TOSDIR=$TOSROOT/tosexport CLASSPATH=“cygpath -w 。6.2.5 TinyOS 2.0的安装与调试的安装与调试296安装安装Graphviz下载下载graphviz-1.10.exe文件,双击下载的文件,双击下载的文件运行安装程序。文件运行安装程序。桌面上的桌面上的cygwin.bat应修改为后来所建目应修改为后来所建目录里的录里的cygwin.bat。双击即可运行,输入。双击即可运行,输入tos-check-env运行,出现

19、如下信息:运行,出现如下信息: $ tos-check-env Path: /opt/msp430/bin 。 tos-check-env completed without error. 如上信息表明如上信息表明TinyOS基本安装成功,可以进行下一步的测试。基本安装成功,可以进行下一步的测试。6.2.5 TinyOS 2.0的安装与调试的安装与调试307运行运行Blink测试程序测试程序(1)进入目录:)进入目录:cygwinopttinyos-2.xappsBlink。(2)编写文件:)编写文件:C:Program Filescygwinopttinyos-2.xappsBlinkBli

20、nk.py。(3)$ make micaz sim。(4)$ python Blink.py。(5)显示模拟结果。)显示模拟结果。6.2.5 TinyOS 2.0的安装与调试的安装与调试317运行运行Blink测试程序测试程序(1)进入目录:)进入目录:cygwinopttinyos-2.xappsBlink。(2)编写文件:)编写文件:C:Program Filescygwinopttinyos-2.xappsBlinkBlink.py。(3)$ make micaz sim。(4)$ python Blink.py。(5)显示模拟结果。)显示模拟结果。6.2.5 TinyOS 2.0的安装

21、与调试的安装与调试326.2.1 nesC语言基础语言基础6.2.2 TinyOS的组件模型的组件模型6.2.3 TinyOS的通信模型的通信模型6.2TinyOS操作系统操作系统6.2.4 TinyOS 1.0的安装与调试的安装与调试6.2.5 TinyOS 2.0的安装与调试的安装与调试6.2.6 TinyOS的典型应用与分析的典型应用与分析33应用程序应用程序Blink位于位于appsBlink目录下,是一目录下,是一个简单的测试程序,作用是使传感器节点上红色的个简单的测试程序,作用是使传感器节点上红色的LED灯以灯以1Hz的频率闪烁。的频率闪烁。下面通过实例来具体了解在下面通过实例来具

22、体了解在TinyOS环境中使环境中使用用nesC应用程序的结构和使用细节。应用程序的结构和使用细节。Blink应用程序由两个组件组成:一个名为应用程序由两个组件组成:一个名为BlinkM.nc的模块和一个名为的模块和一个名为Blink.nc的配置。的配置。6.2.6 TinyOS 的典型应用与分析的典型应用与分析34BlinkM.nc是提供是提供Blink应用程序实际实现应用程序实际实现的文件;的文件;Blink.nc是是Blink应用程序的配置,也是应用程序的配置,也是nesC编译器用来生成可执行程序文件的源文编译器用来生成可执行程序文件的源文件。件。6.2.6 TinyOS 的典型应用与分

23、析的典型应用与分析35第六章第六章 无线传感器网络操作系统无线传感器网络操作系统6.16.2无线传感器网络操作系统概述无线传感器网络操作系统概述TinyOS操作系统操作系统MantisOS操作系统操作系统6.36.46.5SOS操作系统操作系统无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战366.3.1 MantinsOS简介简介6.3.2 MantinsOS的体系架构的体系架构6.3.3 MantinsOS应用程序开发与发布应用程序开发与发布MantisOS操作系统操作系统6.337美国科罗拉多大学开发的美国科罗拉多大学开发的MantisOS是一个以易用性和灵活性为

24、主要目标的无是一个以易用性和灵活性为主要目标的无线传感器操作系统(或简称线传感器操作系统(或简称MOS)。利)。利用该操作系统,可以快速、灵活地搭建无用该操作系统,可以快速、灵活地搭建无线传感器网络原型系统。线传感器网络原型系统。它的内核和它的内核和API采用标准采用标准C语言编写,语言编写,提供提供Linux和和Windows开发环境,易于用开发环境,易于用户使用。户使用。1 16.3.1 MantinsOS简介简介386.3.1 MantinsOS简介简介6.3.2 MantinsOS的体系架构的体系架构6.3.3 MantinsOS应用程序开发与发布应用程序开发与发布MantisOS操作

25、系统操作系统6.3396.3.2 MantinsOS的体系架构的体系架构 MantisOS的体系结构分为的体系结构分为3个部分,即核心个部分,即核心层、系统层、系统API层、网络栈和命令行服务器。层、网络栈和命令行服务器。其中核心层包括进程调度和管理、通信层及其中核心层包括进程调度和管理、通信层及设备驱动层,系统设备驱动层,系统API层与核心层进行交互,向上层与核心层进行交互,向上层提供应用程序接口,层提供应用程序接口,其体系结构如图其体系结构如图6-2所示。所示。406.3.2 MantinsOS的体系架构的体系架构图图6-2 MantisOS6-2 MantisOS体系结构体系结构416.

26、3.2 MantinsOS的体系架构的体系架构1内核和进程调度内核和进程调度MantisOS使用了类似于使用了类似于UNIX的进程调度模的进程调度模式,提供基于优先级的多线程调度和同一优先级式,提供基于优先级的多线程调度和同一优先级中进行轮转调度服务。中进行轮转调度服务。 内核主要的全局数据结构是线程表,每个线内核主要的全局数据结构是线程表,每个线程有一个条目。程有一个条目。内内核还为每一个优先级别的线程保存表头和核还为每一个优先级别的线程保存表头和表尾指针,可方便快速增加和删除。表尾指针,可方便快速增加和删除。426.3.2 MantinsOS的体系架构的体系架构2网络栈和通信层(网络栈和通

27、信层(COMM)MOS网络栈支持网络的第三层及第三层以上,网络栈支持网络的第三层及第三层以上,如路由层、传输层和应用层。如路由层、传输层和应用层。MOS的通信层为通信设备驱动程序提供统一的通信层为通信设备驱动程序提供统一的接口(如串口、的接口(如串口、USB或者无线通信设备),如或者无线通信设备),如图图6-3所示。所示。436.3.2 MantinsOS的体系架构的体系架构图图6-3 MOS6-3 MOS通信层和设备驱动层通信层和设备驱动层446.3.2 MantinsOS的体系架构的体系架构COMM层也负责实现管理数据包缓冲和同步层也负责实现管理数据包缓冲和同步功能。功能。网络线程或应用程

28、序线程通过网络线程或应用程序线程通过4个函数与通信个函数与通信设备进行交互:设备进行交互:com_send、com_recv、com_mode、com_ioctl。456.3.2 MantinsOS的体系架构的体系架构3设备驱动层设备驱动层MOS采用传统的采用传统的“逻辑逻辑/物理物理”分层方式来对分层方式来对应硬件的设备驱动设计。应硬件的设备驱动设计。MOS设备驱动层涵盖了同步设备驱动层涵盖了同步I/O设备的驱动设备的驱动程序和异步通信设备、串行口、循环接口的驱动程序和异步通信设备、串行口、循环接口的驱动程序。每一个设备都为上层用户提供了如表程序。每一个设备都为上层用户提供了如表6-2所所示

29、的示的POSIX风格的系统调用函数风格的系统调用函数466.3.2 MantinsOS的体系架构的体系架构表表6-2 6-2 与与DEVDEV相关的系统调用函数相关的系统调用函数函函 数数功功 能能dev_read(dev, buf, count)从设备从设备dev中读取中读取count个字节,并把结果个字节,并把结果存入缓冲区存入缓冲区buf中中dev_write(dev, buf, count)把缓冲区把缓冲区buf中的中的count个字节数据写入个字节数据写入dev中中dev_mode(dev, mode)把设备把设备dev设置成设置成mode模式模式dev_ioctl(dev,requ

30、est, args)给设备给设备dev发送一个控制命令(发送一个控制命令(request),),args是各种命令参数是各种命令参数dev_open(dev)打开设备打开设备devdev_close(dev)关闭设备关闭设备dev476.3.1 MantinsOS简介简介6.3.2 MantinsOS的体系架构的体系架构6.3.3 MantinsOS应用程序开发与发布应用程序开发与发布MantisOS操作系统操作系统6.3486.3.3 MantinsOS应用程序开发与发布应用程序开发与发布首先介绍硬件平台的建立。首先介绍硬件平台的建立。装置的硬件结构如图装置的硬件结构如图6-4所示,主要由传

31、感器所示,主要由传感器节点、传感器板、节点、传感器板、PC机、串口连接线、编程板等机、串口连接线、编程板等组成。组成。图图6-46-4硬件结构图硬件结构图496.3.3 MantinsOS应用程序开发与发布应用程序开发与发布然后是软件环境的建立,在然后是软件环境的建立,在Windows环境中,环境中,首先安装首先安装Cygwin环境,下载环境,下载MantisOS工具包并工具包并配置相应系统环境变量。配置相应系统环境变量。在基于在基于MantisOS的用户应用程序中,都是的用户应用程序中,都是以以start()函数开始,类似函数开始,类似main(),系统适当地初,系统适当地初始化其他系统级线

32、程,如网络栈,并且可以调用始化其他系统级线程,如网络栈,并且可以调用thread_new()产生新的线程。产生新的线程。506.3.3 MantinsOS应用程序开发与发布应用程序开发与发布MOS提供了一系列提供了一系列API便于系统与便于系统与I/O进行进行交互,例如交互,例如网络层:网络层:com_send,com_revc,。传感器(传感器(ADC):):dev_write,dev_read。虚拟映射(虚拟映射(LED):):mos_led_toggle()。进程调度:进程调度:thread_new()。在这里,应用程序主要包括两个部分:基站在这里,应用程序主要包括两个部分:基站节点应用

33、程序和普通节点应用程序。节点应用程序和普通节点应用程序。516.3.3 MantinsOS应用程序开发与发布应用程序开发与发布1基于基于MantisOS的定时器的定时器API详细设计详细设计 (1)信号量函数)信号量函数sem.cMantisOS中下信号量函数中下信号量函数sem.c,主要调用,主要调用了了Linux底层的信号量函数接口底层的信号量函数接口semaphore.c来来控制多线程环境中共享资源的计数器。控制多线程环境中共享资源的计数器。inline void mos_sem_init(mos_sem_t *s, int8_t value) sem_init(s,0,value);/

34、调用调用Linux底层底层sem_init函数函数526.3.3 MantinsOS应用程序开发与发布应用程序开发与发布信号量是在多线程环境中共享资源的计数器。信号量是在多线程环境中共享资源的计数器。对信号量的基本操作无非有对信号量的基本操作无非有3个:个:对信号量的增加;对信号量的增加;然后阻塞线程等待,直到信号量不为空才返回;然后阻塞线程等待,直到信号量不为空才返回;对信号量的减少。对信号量的减少。在编程中,信号量最常用的方式就是一个线程在编程中,信号量最常用的方式就是一个线程A使用使用sem_wait阻塞。阻塞。536.3.3 MantinsOS应用程序开发与发布应用程序开发与发布(2)

35、定时器函数)定时器函数clock.c定时器函数主要通过回调函数来实现计时的定时器函数主要通过回调函数来实现计时的功能功能。首先要实例化首先要实例化alarm的结构,再确定的结构,再确定alarm的的回调函数,当回调函数,当alarm函数被触发时该函数将被调函数被触发时该函数将被调用;其次根据不同的平台,确定用;其次根据不同的平台,确定mos_alarm_t的的其他参数。其他参数。546.3.3 MantinsOS应用程序开发与发布应用程序开发与发布mos_alarm_t的结构如下所示:的结构如下所示:typedef struct mos_alarm_ /* 定义回调函数指针定义回调函数指针*/

36、 alarm_func func; /* 传递给回调函数的参数传递给回调函数的参数 */ void *data; /* 计时时间计时时间 */ uint32_t ticks; /* 指向下一个指向下一个alarm的指针的指针 */ struct mos_alarm_ *next; mos_alarm_t;556.3.3 MantinsOS应用程序开发与发布应用程序开发与发布Mos_alarm函数的传递调用过程如下所示:函数的传递调用过程如下所示:int8_t mos_alarm (mos_alarm_t *new, uint32_t secs, uint32_t usecs) / 将参数转化为

37、将参数转化为ticks数值数值 uint32_t ticks = secs * TICKS_PER_SEC + usecs / USECS_PER_TICK; return mos_alarm_ticks(new, ticks);566.3.3 MantinsOS应用程序开发与发布应用程序开发与发布在基于在基于MantisOS的多线程开发模式下,必须使用信的多线程开发模式下,必须使用信号量和定时器函数才能够正确地实现时间上处理流程的划号量和定时器函数才能够正确地实现时间上处理流程的划分,通用结构如下:分,通用结构如下:mos_sem_init (&timer_sem, 0);/初始化信号量初始

38、化信号量timer_sem.backoff_alarm.func = backoff_alarm_func; /定时器的回调函数定时器的回调函数mos_alarm(&backoff_alarm, 11, 0);/时间到后进行另外的操作时间到后进行另外的操作mos_sem_wait(&timer_sem);/等待信号量的释放等待信号量的释放.static void backoff_alarm_func(void *p)/定时器的回调函数,定时器的回调函数,11s后后释放信号量释放信号量mos_sem_post(&timer_sem);576.3.3 MantinsOS应用程序开发与发布应用程序开

39、发与发布2基于基于MantisOS的普通节点应用程序详细设计的普通节点应用程序详细设计 普通节点应用程序的功能是采集数据,分析普通节点应用程序的功能是采集数据,分析数据是否达到报警级别,并通过网络将数据发送数据是否达到报警级别,并通过网络将数据发送给基站节点,同时具备接收数据以及转发数据的给基站节点,同时具备接收数据以及转发数据的功能。功能。为实现这些具体功能,创建的线程有接收线为实现这些具体功能,创建的线程有接收线程、数据采集线程、数据分析处理线程以及发送程、数据采集线程、数据分析处理线程以及发送线程。线程。586.3.3 MantinsOS应用程序开发与发布应用程序开发与发布 在数据采集线

40、程中,在数据采集线程中,启动传感器节点相应设启动传感器节点相应设备感知周围环境数据以及系统数据备感知周围环境数据以及系统数据,然后将相然后将相关数据写到缓冲区中供其他线程读取关数据写到缓冲区中供其他线程读取。 数据分析处理线程的功能是对所采集数据进数据分析处理线程的功能是对所采集数据进行分析,判断是否达到节点规定的上下限,行分析,判断是否达到节点规定的上下限,并并及时打开节点上的报警装置及时打开节点上的报警装置。596.3.3 MantinsOS应用程序开发与发布应用程序开发与发布 数据发送线程的功能是对节点所采集数据通数据发送线程的功能是对节点所采集数据通过网络进行发送,数据传输协议可以利用

41、洪泛过网络进行发送,数据传输协议可以利用洪泛协议或者其他协议。协议或者其他协议。 接收线程的功能是对接收到的网络数据包进接收线程的功能是对接收到的网络数据包进行分析,并选择转发数据包。行分析,并选择转发数据包。606.3.3 MantinsOS应用程序开发与发布应用程序开发与发布3基于基于MantisOS的基站节点应用程序详细设计的基站节点应用程序详细设计基站节点上运行的线程包括数据接收线程、基站节点上运行的线程包括数据接收线程、串口设备数据读取线程以及串口发送线程。串口设备数据读取线程以及串口发送线程。 数据接收线程的功能是从网络上接收其他节数据接收线程的功能是从网络上接收其他节点通过点通过

42、RF传递给自己的数据,对这些数据进传递给自己的数据,对这些数据进行分析并处理。行分析并处理。616.3.3 MantinsOS应用程序开发与发布应用程序开发与发布 串口设备数据读取线程是从编程板串行口读串口设备数据读取线程是从编程板串行口读取取PC机发送给基站的数据,机发送给基站的数据,基站分析数据类基站分析数据类型型,根据类型选择不同的处理方式,如将报警,根据类型选择不同的处理方式,如将报警级别数据发送给网络所有节点等。级别数据发送给网络所有节点等。 串口发送线程的功能是将接收到的数据经处串口发送线程的功能是将接收到的数据经处理后发送到编程板串行口,等待理后发送到编程板串行口,等待PC机应用

43、程机应用程序读取序读取。626.3.3 MantinsOS应用程序开发与发布应用程序开发与发布4编编码码编码分为两个部分,即编码分为两个部分,即C语言程序源代码和语言程序源代码和makefile文件代码。文件代码。C语言程序源代码语言程序源代码编写完将其复制到编写完将其复制到MantisOS目录中名为目录中名为src的的apps文件夹下,然文件夹下,然后才是后才是makefile的书写过程。的书写过程。636.3.3 MantinsOS应用程序开发与发布应用程序开发与发布5编译调试编译调试在在MantisOS中应用程序是与内核一起进行编译的,中应用程序是与内核一起进行编译的,必须对平台进行定制

44、才能将源代码编译成目标文件,步必须对平台进行定制才能将源代码编译成目标文件,步骤如下。骤如下。启动启动Cygwin环境,进入到环境,进入到MantisOS主目录下,找主目录下,找到一个到一个autogen.sh的脚本文件,并执行的脚本文件,并执行autogen.sh命令,命令,等待成功执行完毕以后,再进入等待成功执行完毕以后,再进入build目录,根据现有的目录,根据现有的硬件节点类型,选择各种节点硬件目录,如选择硬件节点类型,选择各种节点硬件目录,如选择mica2,进入相应目录,找到进入相应目录,找到configure文件,执行文件,执行configure命命令。令。64第六章第六章 无线传

45、感器网络操作系统无线传感器网络操作系统6.16.2无线传感器网络操作系统概述无线传感器网络操作系统概述TinyOS操作系统操作系统MantisOS操作系统操作系统6.36.46.5SOS操作系统操作系统无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战656.4.1 SOS简介简介6.4.2 系统架构系统架构6.4.3 SOS的通信机制的通信机制6.4.4 SOS应用程序开发与发布应用程序开发与发布6.4SOS操作系统操作系统66SOS是洛杉矶加利福尼亚大学的是洛杉矶加利福尼亚大学的NESL实验室开发的一套无线传感器网络实验室开发的一套无线传感器网络操作系统。操作系统。S

46、OS可以消除很多操作系统静态的局可以消除很多操作系统静态的局限性。它引入了消息模式来实现用户应用限性。它引入了消息模式来实现用户应用程序和操作系统内核的绑定。程序和操作系统内核的绑定。1 16.4.1 SOS简介简介676.4.1 SOS简介简介6.4.2 系统架构系统架构6.4.3 SOS的通信机制的通信机制6.4.4 SOS应用程序开发与发布应用程序开发与发布6.4SOS操作系统操作系统686.4.2 系统架构系统架构SOS的体系结构分为的体系结构分为4层:硬件抽象层、设层:硬件抽象层、设备驱动层、内核层和动态模块层。备驱动层、内核层和动态模块层。硬件抽象层提供与硬件抽象层提供与mica2

47、、Ubicell等硬件的虚拟接等硬件的虚拟接口,如口,如UART、clock等,等,设备驱动提供设备驱动信息,如设备驱动提供设备驱动信息,如sensordriver内核(内核(blank)提供内核服务,读取上层模块信息,)提供内核服务,读取上层模块信息,并与底层进行交互等,并与底层进行交互等,SOS动态模块信息供用户开发应用程序,动态装载动态模块信息供用户开发应用程序,动态装载到到SOS内核上。内核上。696.4.2 系统架构系统架构SOS由动态加载的模块和静态内核组成,如由动态加载的模块和静态内核组成,如图图6-5所示。所示。静态内核可以先烧写到节点上,节点运行过程中用静态内核可以先烧写到节

48、点上,节点运行过程中用户还可以根据任务的需要动态地增删模块。户还可以根据任务的需要动态地增删模块。模块实现了系统大多数的功能,包括驱动程序、协模块实现了系统大多数的功能,包括驱动程序、协议、应用程序等。这些模块都是独立的,对模块的修改议、应用程序等。这些模块都是独立的,对模块的修改不会中断系统的操作。不会中断系统的操作。706.4.2 系统架构系统架构图图6-5 SOS6-5 SOS系统体系结构系统体系结构716.4.2 系统架构系统架构下面讨论下面讨论SOS架构中的关键设计。架构中的关键设计。1模块模块在在SOS中,模块是可以实现某些功能或者任务的二中,模块是可以实现某些功能或者任务的二进制

49、可执行文件,就相当于进制可执行文件,就相当于TinyOS中的组件。中的组件。模块可能会同时负责很多部分的功能,包括底层驱模块可能会同时负责很多部分的功能,包括底层驱动、路由协议、应用程序等。动、路由协议、应用程序等。在在SOS中一个实际的应用程序一般由一个模块或者中一个实际的应用程序一般由一个模块或者多个的相互交互的模块组成,模块之间,位置独立,主多个的相互交互的模块组成,模块之间,位置独立,主要是通过消息机制或者函数接口来相互联系。要是通过消息机制或者函数接口来相互联系。726.4.2 系统架构系统架构2模块结构模块结构SOS实现了一个定义完整并且优化的带有入实现了一个定义完整并且优化的带有

50、入口和出口的模块,这一类模块组成一个模块结构,口和出口的模块,这一类模块组成一个模块结构,SOS通过这样的一个结构来维护模块性。通过这样的一个结构来维护模块性。模块之间用两种入口机制来相互流通。第一模块之间用两种入口机制来相互流通。第一种是通过内核的调度表,另一种是通过被模块注种是通过内核的调度表,另一种是通过被模块注册的对方使用的函数。册的对方使用的函数。736.4.2 系统架构系统架构3模块交互模块交互模块之间的交互是通过消息机制,调用被模模块之间的交互是通过消息机制,调用被模块注册的函数,调用块注册的函数,调用ker_*system(API)访问)访问内核实现的。内核实现的。消息本身是灵

51、活变化的,并且传递比较缓慢,消息本身是灵活变化的,并且传递比较缓慢,所以所以SOS提供一些直接的调用方法,可以被模块提供一些直接的调用方法,可以被模块注册使用,这些调用方法可以通过调度表为模块注册使用,这些调用方法可以通过调度表为模块提供反应时间短的联系。提供反应时间短的联系。 746.4.2 系统架构系统架构4模块的插入和删除模块的插入和删除模块的插入是通过分发协议(模块的插入是通过分发协议(Distribution Protocol)侦听新的模块在网络中发送的广播来)侦听新的模块在网络中发送的广播来初始化的。初始化的。模块的删除是通过模块发送一个模块的删除是通过模块发送一个final消息触

52、消息触发内核开始进行的。这个消息通知内核释放模块发内核开始进行的。这个消息通知内核释放模块持有的资源。持有的资源。756.4.2 系统架构系统架构5动态内存动态内存无线传感网络嵌入式系统一般不支持动态内无线传感网络嵌入式系统一般不支持动态内存。但静态内存会导致存在大量的垃圾内存碎片,存。但静态内存会导致存在大量的垃圾内存碎片,可能对公共任务产生复杂的语义。可能对公共任务产生复杂的语义。SOS中的动态内存就解决了这些问题,而且中的动态内存就解决了这些问题,而且消除了模块加载过程中本来需要对静态内存的依消除了模块加载过程中本来需要对静态内存的依赖。赖。766.4.1 SOS简介简介6.4.2 系统

53、架构系统架构6.4.3 SOS的通信机制的通信机制6.4.4 SOS应用程序开发与发布应用程序开发与发布6.4SOS操作系统操作系统776.4.3 SOS的通信机制的通信机制1模块通信模块通信SOS提供了两种模块间的通信机制方式,一提供了两种模块间的通信机制方式,一种是通过模块的功能指针来进行通信,该种方式种是通过模块的功能指针来进行通信,该种方式提供的是同步通信方式,如图提供的是同步通信方式,如图6-6所示。所示。 图图6-6 SOS6-6 SOS模块间通信方式一模块间通信方式一 786.4.3 SOS的通信机制的通信机制SOS的另一种模块间通信方式如图的另一种模块间通信方式如图6-7所示,

54、所示,该方式提供异步通信机制。消息机制虽然灵活,该方式提供异步通信机制。消息机制虽然灵活,但是执行比较慢,消息分发的优先级也较低。但是执行比较慢,消息分发的优先级也较低。 图图6-7 SOS6-7 SOS模块间通信方式二模块间通信方式二796.4.3 SOS的通信机制的通信机制在在SOS操作中,模块与内核之间也可以进行通信,操作中,模块与内核之间也可以进行通信,内核提供系统服务以及上层应用与硬件的接口,如图内核提供系统服务以及上层应用与硬件的接口,如图6-8所示。所示。 图图6-8 SOS6-8 SOS内核模块通信方式内核模块通信方式806.4.3 SOS的通信机制的通信机制2通信模式通信模式

55、SOS最重要的模块就是它的无线通信模块。最重要的模块就是它的无线通信模块。基于基于SOS的无线传感器应用程序多采用支持多跳的无线传感器应用程序多采用支持多跳无线通信的模块结构,支持无线通信的模块结构,支持cc1000、cc2420等等通信栈。通信栈。上层模块通过内核将消息递交给底层硬件,上层模块通过内核将消息递交给底层硬件,通过底层无线发送模块以字节形式将消息发送出通过底层无线发送模块以字节形式将消息发送出去。去。 816.4.1 SOS简介简介6.4.2 系统架构系统架构6.4.3 SOS的通信机制的通信机制6.4.4 SOS应用程序开发与发布应用程序开发与发布6.4SOS操作系统操作系统8

56、26.4.4 SOS应用程序开发与发布应用程序开发与发布在构建基于在构建基于SOS的无线传感器网络之前,应的无线传感器网络之前,应事先将系统内核烧进节点中。事先将系统内核烧进节点中。构建网络时,应该有一个安插在编程面板上构建网络时,应该有一个安插在编程面板上的能量可再续的基站节点,它通过串口通信的方的能量可再续的基站节点,它通过串口通信的方式连接到用户端服务器上,以无线通信的方式与式连接到用户端服务器上,以无线通信的方式与其他传感节点通信,并向其他传感器节点动态加其他传感节点通信,并向其他传感器节点动态加载应用程序模块。载应用程序模块。 836.4.4 SOS应用程序开发与发布应用程序开发与发

57、布在构建基于在构建基于SOS的无线传感器网络之前,应的无线传感器网络之前,应事先将系统内核烧进节点中。事先将系统内核烧进节点中。构建网络时,应该有一个安插在编程面板上构建网络时,应该有一个安插在编程面板上的能量可再续的基站节点,它通过串口通信的方的能量可再续的基站节点,它通过串口通信的方式连接到用户端服务器上,以无线通信的方式与式连接到用户端服务器上,以无线通信的方式与其他传感节点通信,并向其他传感器节点动态加其他传感节点通信,并向其他传感器节点动态加载应用程序模块。载应用程序模块。 846.4.4 SOS应用程序开发与发布应用程序开发与发布在在SOS操作系统中,用户开发的应用程序被操作系统中

58、,用户开发的应用程序被编译为编译为*.sos文件装载到内核上,应用程序的功文件装载到内核上,应用程序的功能通过内核调用系统能通过内核调用系统API与底层设备硬件进行交与底层设备硬件进行交互控制来实现的。互控制来实现的。在在SOS操作系统中,其系统文件包含如下:操作系统中,其系统文件包含如下:Config、Contrib、Doc、Driver、Kernel、Module、Platform、Processor、Tools。 856.4.4 SOS应用程序开发与发布应用程序开发与发布SOS也使用标准的也使用标准的C语言作为编程语言,可语言作为编程语言,可以充分利用以充分利用C语言的许多编译器、开发环

59、境、调语言的许多编译器、开发环境、调试器和其他为试器和其他为C语言所设计的工具。语言所设计的工具。C语言也提供了在资源受限的语言也提供了在资源受限的8位微处理器上位微处理器上操作所需要的执行效率。操作所需要的执行效率。 866.4.4 SOS应用程序开发与发布应用程序开发与发布以下提供的是简单的以下提供的是简单的Blink3源程序(定义在源程序(定义在$SOSROOTmodulestest_modulesblink3blink3)。)。/Blink3部分源程序部分源程序#include#includeswitch(msg-type) case MSG_INIT: s-pid=msg-did;

60、87第六章第六章 无线传感器网络操作系统无线传感器网络操作系统6.16.2无线传感器网络操作系统概述无线传感器网络操作系统概述TinyOS操作系统操作系统MantisOS操作系统操作系统6.36.46.5SOS操作系统操作系统无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战886.5无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战1结构的层次化技术结构的层次化技术结构的层次化是指把组成系统的各成分,按结构的层次化是指把组成系统的各成分,按一定的级别和规则进行分组,并按照一定的级别和规则进行分组,并按照“独立功能,独立功能,独立模块独立模块”的原则

61、将这些组排成若干层,以分层的原则将这些组排成若干层,以分层的形式来组织系统,并确定层内和层间的联系方的形式来组织系统,并确定层内和层间的联系方式,如图式,如图6-9所示。所示。896.5无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战图图6-9 6-9 无线传感器网络操作系统结构化模块示意图无线传感器网络操作系统结构化模块示意图906.5无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战(1)硬件抽象层包含硬件属性模块和硬件行为)硬件抽象层包含硬件属性模块和硬件行为模块模块硬件抽象层用于屏蔽不同的硬件特性,防止应用程硬件抽象层用于屏蔽不同的硬件特性

62、,防止应用程序代码直接与硬件打交道,并且负责对目标系统的硬件序代码直接与硬件打交道,并且负责对目标系统的硬件平台进行操作和控制。平台进行操作和控制。(2 2)组织管理层组织管理硬件抽象层的硬件属)组织管理层组织管理硬件抽象层的硬件属性和行为模块性和行为模块向下层硬件抽象层发送硬件组织命令,向上层应用向下层硬件抽象层发送硬件组织命令,向上层应用服务层报告下层硬件组织形式和状态。服务层报告下层硬件组织形式和状态。(3)应用层一般包括两个模块,即人机对话模)应用层一般包括两个模块,即人机对话模块和用户任务模块块和用户任务模块在人机对话模块中,允许用户依据实际的硬件环境在人机对话模块中,允许用户依据实

63、际的硬件环境和用户的具体任务选择合适的软件系统配置。和用户的具体任务选择合适的软件系统配置。916.5无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战2框架技术框架技术良好的框架是一个经过实践检验的成熟系统良好的框架是一个经过实践检验的成熟系统整体结构。成熟的框架应具有以下特征整体结构。成熟的框架应具有以下特征:(1)模块化)模块化(2)可复用性)可复用性(3)扩展性)扩展性无线网络操作系统的框架应符合层次化结构无线网络操作系统的框架应符合层次化结构的要求,从顶到底一般由主程序模块、服务子程的要求,从顶到底一般由主程序模块、服务子程序模块和应用子程序模块组成。序模块和应用子程序模块组成。926.5无线传感器网络操作系统的主要技术挑战无线传感器网络操作系统的主要技术挑战3节能型通信技术节能型通信技术关于无线传感器网络的节能研究成为热门问关于无线传感器网络的节能研究成为热门问题。当前对无线传感器网络节能性的研究主要集题。当前对无线传感器网络节能性的研究主要集中在两方面:中在两方面: 以增强能源利用效率和供电能力为主的研究以增强能源利用效率和供电能力为主的研究。 以增强网络能源利用效率为主的研究。以增强网络能源利用效率为主的研究。93THANKSTHANKS

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号