第1章 緒論 1
1.1 無線傳感器網絡概述 1
1.1.1 無線傳感器網絡的研究進展 2
1.1.2 無線傳感器網絡的體系特征 3
1.2 無線傳感器網絡操作系統 8
1.2.1 無線傳感器網絡對操作系統的需求 8
1.2.2 現有的無線傳感器網絡操作系統 10
1.3 TinyOS操作系統概述 13
1.3.1 設計理念 14
1.3.2 技術特點 15
1.3.3 體系結構 16
1.3.4 版本說明 17
1.4 與其他WSN操作系統的比較 20
1.5 本書章節安排 24
第2章 開發環境 26
2.1 TinyOS 2.1在Windows中的安裝 26
2.1.1 搭建Java環境 27
2.1.2 安裝Cygwin平臺 30
2.1.3 安裝平臺交叉編譯器 34
2.1.4 安裝TinyOS源碼與工具包 36
2.1.5 安裝Graphviz圖形工具 38
2.2 其他安裝方法 39
2.2.1 在Ubuntu 9.10中的安裝 39
2.2.2 使用RPM包的手動安裝 41
2.2.3 TinyOS 1.x升級到TinyOS 2.x 42
2.2.4 使用CVS更新TinyOS 2.x文件 46
2.3 TinyOS安裝後的測試 47
2.3.1 TinyOS文件概覽 47
2.3.2 檢查運行環境 48
2.3.3 仿真測試 49
2.4 程序的編譯和下載 50
2.4.1 代碼編輯工具 50
2.4.2 編譯程序 52
2.4.3 USB串口驅動 53
2.4.4 下載程序 54
2.5 本章小結 57
第3章 nesC編程語言 58
3.1 nesC語言簡介 58
3.2 nesC語言規範 59
3.2.1 接口 61
3.2.2 組件 62
3.2.3 模塊及其組成 65
3.2.4 配件及其組成 68
3.3 基於nesC語言的應用程序 73
3.3.1 nesC應用程序簡介 73
3.3.2 Blink實例 77
3.3.3 BlinkSingle實例 82
3.3.4 移植TinyOS 1.x代碼到2.x 86
3.4 nesC程序運行模型 88
3.4.1 任務 88
3.4.2 內部函數 91
3.4.3 分階段作業 92
3.4.4 同步與異步 94
3.4.5 原子性代碼 95
3.4.6 無線模塊的開啟過程 96
3.5 編程約定 98
3.5.1 通用約定 98
3.5.2 軟件包 98
3.5.3 語法約定 99
3.5.4 TinyOS約定 101
3.6 可視化組件關系圖 103
3.7 本章小結 104
第4章 基本操作 106
4.1 點對點的無線通信 106
4.1.1 主動消息概述 106
4.1.2 通信接口和組件 107
4.1.3 消息緩存抽象 109
4.1.4 通過無線電發送消息 110
4.1.5 通過無線電接收消息 117
4.2 節點與PC的串口通信 119
4.2.1 信息源和端口測試 119
4.2.2 基站和監聽工具 121
4.2.3 MIG消息接口生成工具 123
4.2.4 SerialForwarder和其他信息源 126
4.2.5 發送信息包到串口 129
4.2.6 基於printf庫的打印調試 130
4.2.7 常見的串口通信故障 133
4.3 傳感 134
4.3.1 傳感簡介 134
4.3.2 Sense實例 135
4.3.3 Oscilloscope實例 138
4.4 存儲 140
4.4.1 存儲簡介 140
4.4.2 配置數據的存儲 141
4.4.3 日誌數據的存儲 146
4.4.4 大數據塊的存儲 148
4.5 本章小結 149
第5章 系統內核 151
5.1 硬件抽象架構 151
5.1.1 架構簡介 151
5.1.2 不同層次抽象的結合 154
5.1.3 橫向分解 155
5.1.4 微處理器抽象 156
5.1.5 HIL抽象級別 156
5.2 任務和調度 157
5.2.1 任務簡介 157
5.2.2 TinyOS 1.x的任務和調度器 157
5.2.3 TinyOS 2.x的任務 159
5.2.4 TinyOS 2.x的調度器 160
5.2.5 調度器的替換 162
5.2.6 調度器的具體實現 165
5.3 系統啟動順序 168
5.3.1 啟動順序簡介 168
5.3.2 TinyOS 1.x的啟動順序 168
5.3.3 TinyOS 2.x的啟動接口 169
5.3.4 TinyOS 2.x的啟動順序 170
5.3.5 系統啟動和軟件初始化 174
5.4 資源仲裁 175
5.4.1 資源簡介 175
5.4.2 資源類型 176
5.4.3 資源仲裁 178
5.4.4 ***享資源的應用實例 183
5.5 微控制器的電源管理 187
5.5.1 微控制器電源管理簡介 187
5.5.2 TinyOS 1.x的電源管理 188
5.5.3 TinyOS 2.x的電源管理 189
5.5.4 外圍設備和子系統 191
5.6 外圍設備的電源管理 191
5.6.1 外圍設備電源管理簡介 191
5.6.2 電源管理模型 192
5.6.3 顯式電源管理 193
5.6.4 隱式電源管理 196
5.7 串口通信 199
5.7.1 串口通信協議簡介 199
5.7.2 串口協議棧的實現 200
5.7.3 串口協議棧的抽象 207
5.8 本章小結 207
第6章 平臺與仿真 210
6.1 平臺 210
6.1.1 平臺簡介 210
6.1.2 底層I/O口 211
6.1.3 新平臺的建立 215
6.1.4 CC2430平臺的移植 223
6.2 編譯系統 226
6.2.1 編譯系統簡介 226
6.2.2 自定義編譯系統 227
6.2.3 makefile入門 228
6.2.4 編寫Makefile文件 230
6.2.5 編譯工具 232
6.3 TOSSIM仿真 233
6.3.1 TOSSIM簡介 233
6.3.2 仿真編譯 234
6.3.3 基於Python的仿真 237
6.3.4 調試語句 239
6.3.5 網絡配置 242
6.3.6 變量的觀察 250
6.3.7 註入消息包 253
6.3.8 C++接口 256
6.3.9 gdb調試 258
6.4 本章小結 261
第7章 網絡協議 262
7.1 分發協議 262
7.1.1 分發協議簡介 262
7.1.2 相關接口和組件 263
7.1.3 EasyDissemination實例 265
7.1.4 Drip庫和DIP庫 269
7.2 匯聚協議 276
7.2.1 匯聚協議簡介 276
7.2.2 相關接口和組件 277
7.2.3 CTP協議 279
7.2.4 CTP實現 281
7.2.5 EasyCollection實例 287
7.3 本章小結 291
第8章 高級應用技術 293
8.1 低功耗應用程序 293
8.1.1 能耗管理簡介 293
8.1.2 外圍設備的電源管理 294
8.1.3 無線模塊的電源管理 297
8.1.4 微處理器的電源管理 300
8.1.5 低功耗傳感的應用實例 300
8.2 低功耗監聽 300
8.2.1 低功耗監聽簡介 300
8.2.2 相關接口 302
8.2.3 message_t元數據 304
8.2.4 HAL層的改進建議 305
8.3 TOSThreads線程 305
8.3.1 TOSThreads線程簡介 305
8.3.2 nesC語言的API接口 306
8.3.3 C語言的API接口 309
8.3.4 支持新的系統服務 310
8.4 CC2420聯網安全功能 312
8.4.1 CC2420安全模式簡介 313
8.4.2 發送端的配置 313
8.4.3 接收端的配置 314
8.4.4 RadioCountToLeds實例 315
8.5 本章小結 319
第9章 基於TinyOS的應用開發實例 320
9.1 基於TSL2550傳感器的光照檢測 320
9.1.1 TSL2550簡介 320
9.1.2 驅動實現 323
9.1.3 傳感測試 330
9.2 基於GSM短信的遠程數據傳輸 334
9.2.1 系統簡介 334
9.2.2 功能實現 338
9.2.3 短信測試 348
9.3 基於簡單蟻群算法的路由協議 350
9.3.1 算法簡介 350
9.3.2 協議實現 353
9.3.3 仿真測試 366
9.4 本章小結 370
附錄A nesC語言基本語法 371
附錄B TinyOS編程技巧 374
附錄C 英漢對照術語表 375
參考文獻與網址 378