TinyOS 2.x 编程入门教程
Version 1.0
2010/12/17
目录
前言 ........................................................................................................................................... 1 第1章 编程环境的建立 ....................................................................................................... 2
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 2.1
安装JAVA 1.6 JDK ........................................................................................... 2 安装CWGWIN(WINDOW ONLY) .................................................................................. 2 安装编译器 ................................................................................................... 3 安装TINYOS工具 ............................................................................................ 3 设置环境变量 ................................................................................................ 4 安装 GRAPHVIZ ................................................................................................. 4 检测软件安装情况 .......................................................................................... 4 USB串口驱动下载及安装................................................................................... 5
第2章
NESC
TINYOS简介 .......................................................................................................... 7
语言简介 ................................................................................................ 7 组件(components) ........................................................... 7 并发模型 .................................................................. 11
2.1.1 2.1.2 2.2 2.3
常用MAKE命令简介 ........................................................................................ 12 应用举例:BLINK ---TINYOS编程的“HELLO WORLD”程序 ............................................. 12 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5
Blink配件 ................................................................ 13 BlinkC模块 ............................................................... 14 事件evenst和命令commands ................................................ 16 编译Blink应用程序 ........................................................ 17 安装Blink程序到Telosb节点并运行 ......................................... 17
2.4 2.5 3.1
下载程序出错故障排除 ................................................................................... 18 小结 ......................................................................................................... 20
第3章
3.1.1 3.1.2 3.2
3.2.1 3.2.2 3.3
3.3.1 3.3.2 3.4
3.4.1 3.4.2 3.5 4.1 4.2 5.1
TELOSB硬件平台常用可编程器件和对应的TINYOS组件介绍 ...................... 21
Telosb硬件平台上的Led器件展示 ........................................... 22 TinyOS中Led编程组件介绍 ................................................. 22 Telosb硬件平台上的传感器展示 ............................................. 23 TinyOS中传感器编程组件介绍 ............................................... 24 Telosb硬件平台上的串口展示 ............................................... 25 TinyOS中串口编程组件介绍 ................................................. 26 Telosb硬件平台上的Radio相关器件展示...................................... 26 TinyOS中Radio编程组件介绍 ............................................... 27
LED ........................................................................................................... 22
传感器 ...................................................................................................... 23
串口 ......................................................................................................... 25
RADIO ......................................................................................................... 26
小结 ......................................................................................................... 27 模块实现 ................................................................................................... 28 ADC .......................................................................................................... 30
第4章 用事件驱动方式从传感器获取数据 ..................................................................... 27
第5章 TINYOS任务及应用举例 .................................................................................... 32
任务的创建和调度 ........................................................................................ 32
5.2 5.3 6.1 6.2 6.3 6.4 6.5 6.6
举例:SENSETASK应用程序 ................................................................................ 33 小结 ......................................................................................................... 33
第6章 TINYOS串口编程 ................................................................................................ 34
TESTSERIAL应用程序 ....................................................................................... 34 串口助手:PC上显示从串口读取的数据 .............................................................. 38 TELOSB从串口读取数据 ................................................................................... 39 OSCILLOSCOPE应用程序——数据感知 .................................................................... 41 BASESTATION应用程序 ...................................................................................... 45 小结 ......................................................................................................... 51
附录1 TINYOS命名约定 ....................................................................................................... 52
附录2 NESC语言特有关键字 ............................................................................................... 54
TinyOS Programming
前言
随着传感器技术、微机电系统、现代网络、无线通信、低功耗等技术的飞速发展,推动了无线传感器网络 (WSN:wireless sensor network) 的产生和发展。无线传感器网络涉及IT领域的多种技术,成为目前IT领域的研究热点之一。无线传感器网络就是由部署在监测区域内大量的廉价微型传感器节点组成,通过无线通信方式形成一个多跳的自组织网络。
无线传感器网络所具有的众多类型的传感器,可探测包括地震、电磁、温度、湿度、噪声、光强度、压力、土壤成分、移动物体的大小、速度和方向等各种各样的现象。具有广阔应用前景,潜在的应用领域可归纳为:军事、航空、反恐、防暴、救灾、环境、医疗、保健、家居、城市管理等诸多领域。
传感器节点是一个微型的嵌入式系统,具有非常有限的硬件资源,需要操作系统能够高效地使用其仅有的内存、处理器和通信模块,且能够对各种特定应用提供最大的支持。
传感器节点有两个突出的特点。一是并发性密集,即可能存在多个需要同时执行的逻辑控制,这需要操作系统能够有效地满足这种发生频繁、并发程度高、执行过程比较短的控制逻辑流程;另一个特点是传感器节点模块化程度很高,要求操作系统能够很方便让应用程序方便地对硬件进行控制,且保证在不影响整体开销的情况下,应用程序中的各个部分能够比较方便地进行重新组合。美国加州大学伯克利分校针对无线传感器网络的特点研发了TinyOS操作系统,在科研机构的研究中应用比较广泛。
TinyOS是无线传感器网络中较为流行的操作系统,所用编程语言为nesC (network embedded system C),nesC语言由C语言扩展而来,意在把组件化、模块化思想和TinyOS基于事件驱动的执行模型结合起来。
目前在国内,关于TinyOS的资料并不多,而且很散,给各个方面的人员在使用TinyOS时造成了诸多不便,我们在使用TinyOS时积累了一些经验,在此希望能对大家有一定的帮助。
本教程所用硬件平台为Telosb,操作系统版本为TinyOS 2.x,nesC语言版本为1.3。主要内容的几乎覆盖Telosb硬件平台的所有常用可编程器件及TinyOS一些重要概念,内容不是很深入,适合没有接触过TinyOS的初学者,但就其对于Telosb硬件平台而言,是使用Telosb硬件平台的工作人员或爱好者不可多得的参考文档,并且在熟悉了此教程之后,读者朋友们可以很容易地转到其它硬件平台上去。
在范例的选择方面,本教程尽量选择了TinyOS自带的例子,方便读者测试。只有少数例子在TinyOS中没有,已编写了尽量简短的程序并在教程中展示了这些例子的完整代码。在讲解某些内容方面,特别是概念性的内容,我们借鉴了TinyOS官方公布的一些讲解方式、引用了部分内容及例子,以便尽可能准确传达TinyOS研发者的初衷。
最后,本教程要求读者均具有C语言编程的基础。因为nesC是C语言的扩展,在此教程不会讲解任何C编程方面的内容,如有读者未有C语言基础,请先学习C方面内容,以便可以进一步学习此教程涉及的内容。更加深入的内容及本教程使用到的工具会在“相关资源”列出,以方便大家进一步学习。
Page 1 of 94