第1章 无线传感网与TinyOS 1
1.1 无线传感网 1
1.1.1 无线传感网的提出与发展 2
1.1.2 无线传感网的特点与优势 4
1.1.3 无线传感网的应用 7
1.2 无线传感网节点软件技术 8
1.3 TinyOS 10
1.3.1 TinyOS的特点 11
1.3.2 TinyOS体系结构 12
第2章 TinyOS安装与常用命令 13
2.1 TinyOS安装 13
2.1.1 在Windows下安装TinyOS 13
2.1.2 在Linux下安装TinyOS 19
2.2 目录结构 21
2.2.1 Cygwin的目录结构 21
2.2.2 TinyOS的目录结构 21
2.3 常用命令与快捷键 22
2.3.1 常用命令 22
2.3.2 快捷键 24
2.4 一个简单的应用分析 25
2.4.1 分析Powerup应用程序 25
2.4.2 Powerup应用程序的图形化说明 26
2.4.3 编译Powerup应用程序 26
2.4.4 Powerup应用程序中nesC到C的映射 27
2.4.5 仿真Powerup应用程序 27
2.4.6 下载应用程序 28
第3章 TinyOS编程语言nesC 30
3.1 C与nesC的比较 30
3.1.1 C与C++ 30
3.1.2 nesC 32
3.2 组件定义 36
3.2.1 组件规范 36
3.2.2 关键字as 37
3.2.3 将接口分成组 38
3.3 接口 39
3.3.1 一般接口 39
3.3.2 分阶段操作 40
3.3.3 通用接口 41
3.4 模块 42
3.4.1 接口函数 42
3.4.2 任务 44
3.4.3 模块数据 46
3.5 配件与连接 50
3.5.1 配件实现 50
3.5.2 多连接 57
3.6 参数化接口 59
3.6.1 为什么需要参数化接口 60
3.6.2 基于参数化接口的两个典型例子 61
3.6.3 基于参数化接口的连接 62
3.6.4 参数化接口的实现 64
3.6.5 unique()和uniqueCount()函数 65
3.6.6 Default函数 66
3.7 通用化组件 66
3.7.1 为什么需要通用组件 67
3.7.2 通用组件的定义与实例化 67
3.7.3 通用化模块 69
3.7.4 通用化配件 71
3.7.5 属性attributes 73
第4章 并发执行模型 75
4.1 任务 75
4.1.1 任务的执行 77
4.1.2 执行和事件处理 78
4.2 任务和分阶段调用 78
4.2.1 硬件与软件 78
4.2.2 任务和调用循环 78
4.3 异步代码 80
4.3.1 关键字async 80
4.3.2 异步的代价 81
4.3.3 原子语句和关键词atomic 82
4.3.4 状态切换的管理 84
4.3.5 CC2420ControlP组件的工作 85
4.3.6 任务的再次调用 86
4.4 功率锁 86
4.4.1 功率锁需求实例——链路层确认 87
4.4.2 分阶段锁 87
4.4.3 锁的内部结构 88
4.4.4 能量管理 88
4.4.5 硬件配置 89
4.4.6 MSP430 USART配置 89
4.4.7 功率锁库 90
第5章 TinyOS驱动程序与平台硬件抽象 91
5.1 硬件抽象结构简介 91
5.1.1 什么是硬件抽象 91
5.1.2 硬件表示层 92
5.1.3 硬件适配层 93
5.1.4 硬件接口层 93
5.1.5 不同层次抽象的结合 94
5.1.6 横向分解 94
5.2 TinyOS平台 96
5.2.1 TinyOS平台简介 96
5.2.2 新建TinyOS平台 97
第6章 TinyOS其他主要功能模块分析 103
6.1 资源仲裁 103
6.1.1 资源的分类 104
6.1.2 资源的仲裁 105
6.1.3 跨组件预约 109
6.1.4 执行 110
6.2 微控制器能量管理 112
6.2.1 TinyOS 1.x中的微控制器能量管理 112
6.2.2 TinyOS 2.x中微控制器能量管理 113
6.2.3 外围设备和子系统 115
6.3 外围设备能量管理 115
6.3.1 能量管理模型 115
6.3.2 显式能量管理 116
6.3.3 隐式能量管理 118
第7章 TinyOS典型应用 122
7.1 传感 122
7.1.1 传感简介 122
7.1.2 Sense实例 122
7.1.3 Oscilloscope实例 125
7.2 存储 127
7.2.1 存储简介 127
7.2.2 配置数据的存储 128
7.2.3 日志数据的存储 133
7.2.4 大数据块的存储 135
7.3 节点与PC的通信 135
7.3.1 串口通信堆栈 136
7.3.2 MIG 140
7.3.3 数据包源 142
7.3.4 串口通信测试 143
7.4 节点之间通信 144
7.4.1 AM通信 144
7.4.2 单跳发送数据包 150
7.5 定时器(Timer) 154
7.5.1 接口 154
7.5.2 定时器HAL方案 158
7.5.3 定时器HIL需求 158
7.5.4 用到的其他组件 159
7.5.5 实现 161
第8章 TinyOS应用程序运行过程剖析 163
8.1 系统初始化 163
8.1.1 任务调度器初始化 165
8.1.2 组件初始化 167
8.1.3 触发Boot接口中的事件 168
8.2 Blink执行过程 169
8.2.1 配置文件 169
8.2.2 模块文件 172
8.2.3 Blink应用程序的图形化说明 173
8.2.4 程序运行过程 173
8.3 Blink应用程序中nesC到C的映射 174
8.4 仿真Blink应用程序 174
第9章 仿真、调试与编程提示 176
9.1 TinyOS自带仿真工具——TOSSIM 176
9.1.1 概述 176
9.1.2 编译TOSSIM 177
9.1.3 在Python下运行TOSSIM 177
9.2 GDB/ddd调试 179
9.3 编程提示 182
9.3.1 Packages包 182
9.3.2 语法约定 182
第10章 基于WSN的煤矿井下定位系统 185
10.1 功能需求 185
10.2 系统设计 186
10.3 硬件组成 187
10.4 TinyOS实现 187
10.4.1 软件结构框架 187
10.4.2 模块介绍 188
10.4.3 主要接口与连通情况介绍 189
10.4.4 节点运行流程 190
附录 缩略语 193
参考文献 194