TinyOS無線傳感器網(wǎng)絡(luò)操作系統(tǒng)分析
2 TinyOS操作系統(tǒng)
由于無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的資源十分有限,傳統(tǒng)的嵌入式操作系統(tǒng)難以正常有效地運(yùn)行和工作,特別對能量和內(nèi)存的需求矛盾比較突出。因此,需要一種全新的嵌入式操作系統(tǒng)來滿足無線傳感器節(jié)點(diǎn)的基本需求。TinyOS操作系統(tǒng)就是美國加州大學(xué)伯克利分校的研究人員針對無線傳感器網(wǎng)絡(luò)設(shè)計(jì)的開源嵌入式操作系統(tǒng)。TinyOS操作系統(tǒng)主要使用了輕量級線程、主動消息通信、事件驅(qū)動模式、組件化編程等技術(shù)。
TinyOS操作系統(tǒng)最初使用匯編和C語言。但經(jīng)研究人員進(jìn)一步的研究及使用后發(fā)現(xiàn),C語言并不能有效和方便地支持無線傳感器網(wǎng)絡(luò)應(yīng)用程序的開發(fā)。因而在經(jīng)過仔細(xì)研究和設(shè)計(jì),并在對C語言進(jìn)行了一定擴(kuò)展的基礎(chǔ)上,提出了支持組件化編程的nesC語言,該語言可以把組件化、模塊化思想和基于事件驅(qū)動的執(zhí)行模型結(jié)合起來。由于TinyOS操作系統(tǒng)和基于TinyOS操作系統(tǒng)的應(yīng)用程序全部使用nesC語言編寫,因此,在介紹TinyOS操作系統(tǒng)之前,首先介紹一下nesC語言。
3 nesC語言
TinyOS和在其上運(yùn)行的應(yīng)用程序可以看成是一個(gè)大的“執(zhí)行程序”,它由許多功能獨(dú)立且相互有聯(lián)系的軟件組件構(gòu)成,圖2所示是nesC語言的一般程序框架。該系統(tǒng)中的一個(gè)組件一般會提供一些接口(假定組件名為ComA),接口可以被認(rèn)為是這個(gè)軟件組件實(shí)現(xiàn)的一組函數(shù)的聲明,是單獨(dú)定義的一組命令和事件,其他組件通過引用相同接口聲明來使用這個(gè)組件(ComA)的函數(shù),從而實(shí)現(xiàn)組件間功能的相互調(diào)用,即組件的接口是實(shí)現(xiàn)組件間互連的通道。但若組件中實(shí)現(xiàn)的函數(shù)并未被它在接口中說明,就不能被其他組件所使用。nesC語言的定義中存在兩種不同功能的組件:其中組件接口中的函數(shù)功能專門在模塊的組件文件中實(shí)現(xiàn),而不同組件之間的關(guān)系則是專門通過稱為配件的組件文件來描述的。
本系統(tǒng)中的接口一般指一系列聲明的有名函數(shù)的集合,同時(shí),接口也是連接不同組件的紐帶。組件的接口通常是雙向的,這種接口實(shí)際上是提供者組件和使用者組件之間的一個(gè)多功能交互通道。接口的提供者所實(shí)現(xiàn)的接口的一組功能函數(shù)稱為命令;接口的使用者需要實(shí)現(xiàn)的一組功能函數(shù)稱為事件。
組件是nesC程序的基本單元,組件可分為模塊與配件兩種。
其中模塊是組件的邏輯功能實(shí)體,主要包括命令、事件、任務(wù)的具體實(shí)現(xiàn)。在TinyOS中,命令都是非阻塞的,它們完成后會通知相關(guān)的事件調(diào)用。一般情況下,命令調(diào)用都是向下的,即應(yīng)用組件調(diào)用那些與硬件緊密結(jié)合的組件,事件調(diào)用則正好相反。一些特殊的基本事件的調(diào)用必須綁定在硬件中斷上。nesC語言中還有一類特殊的函數(shù)稱為任務(wù)。在TinyOS系統(tǒng)中,任務(wù)是一個(gè)可以被調(diào)度的實(shí)體,類似于傳統(tǒng)操作系統(tǒng)中的進(jìn)程或線程概念。
配件通常可通過一系列其他組件來實(shí)現(xiàn)一個(gè)組件規(guī)范,它主要實(shí)現(xiàn)組件間的相互訪問方式。配件包括組件列表和連接說明,組件列表定義了實(shí)現(xiàn)配件的組件,連接通??蓪⒍x的元素(接口、命令、事件等)聯(lián)系在一起,以完成組件之間功能的調(diào)用。
4 TinyOS系統(tǒng)的工作原理
為了適應(yīng)無線傳感器網(wǎng)絡(luò)的特點(diǎn),TinyOS操作系統(tǒng)使用了四個(gè)主要技術(shù),組件化編程、輕量級線程、主動消息通信和事件驅(qū)動模型。
4.1 組件模型
TinyOS操作系統(tǒng)中的組件有四個(gè)相互關(guān)聯(lián)的部分:一組命令處理程序句柄、一組事件處理程序句柄、一個(gè)經(jīng)過封裝的私有數(shù)據(jù)幀和一組簡單的任務(wù)。任務(wù)、命令和事件處理程序在私有數(shù)據(jù)幀的上下文中執(zhí)行并切換幀的狀態(tài)。 風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理
評論