TinyOS無(wú)線(xiàn)傳感器網(wǎng)絡(luò )操作系統分析
2 TinyOS操作系統
由于無(wú)線(xiàn)傳感器網(wǎng)絡(luò )節點(diǎn)的資源十分有限,傳統的嵌入式操作系統難以正常有效地運行和工作,特別對能量和內存的需求矛盾比較突出。因此,需要一種全新的嵌入式操作系統來(lái)滿(mǎn)足無(wú)線(xiàn)傳感器節點(diǎn)的基本需求。TinyOS操作系統就是美國加州大學(xué)伯克利分校的研究人員針對無(wú)線(xiàn)傳感器網(wǎng)絡(luò )設計的開(kāi)源嵌入式操作系統。TinyOS操作系統主要使用了輕量級線(xiàn)程、主動(dòng)消息通信、事件驅動(dòng)模式、組件化編程等技術(shù)。
TinyOS操作系統最初使用匯編和C語(yǔ)言。但經(jīng)研究人員進(jìn)一步的研究及使用后發(fā)現,C語(yǔ)言并不能有效和方便地支持無(wú)線(xiàn)傳感器網(wǎng)絡(luò )應用程序的開(kāi)發(fā)。因而在經(jīng)過(guò)仔細研究和設計,并在對C語(yǔ)言進(jìn)行了一定擴展的基礎上,提出了支持組件化編程的nesC語(yǔ)言,該語(yǔ)言可以把組件化、模塊化思想和基于事件驅動(dòng)的執行模型結合起來(lái)。由于TinyOS操作系統和基于TinyOS操作系統的應用程序全部使用nesC語(yǔ)言編寫(xiě),因此,在介紹TinyOS操作系統之前,首先介紹一下nesC語(yǔ)言。
3 nesC語(yǔ)言
TinyOS和在其上運行的應用程序可以看成是一個(gè)大的“執行程序”,它由許多功能獨立且相互有聯(lián)系的軟件組件構成,圖2所示是nesC語(yǔ)言的一般程序框架。該系統中的一個(gè)組件一般會(huì )提供一些接口(假定組件名為ComA),接口可以被認為是這個(gè)軟件組件實(shí)現的一組函數的聲明,是單獨定義的一組命令和事件,其他組件通過(guò)引用相同接口聲明來(lái)使用這個(gè)組件(ComA)的函數,從而實(shí)現組件間功能的相互調用,即組件的接口是實(shí)現組件間互連的通道。但若組件中實(shí)現的函數并未被它在接口中說(shuō)明,就不能被其他組件所使用。nesC語(yǔ)言的定義中存在兩種不同功能的組件:其中組件接口中的函數功能專(zhuān)門(mén)在模塊的組件文件中實(shí)現,而不同組件之間的關(guān)系則是專(zhuān)門(mén)通過(guò)稱(chēng)為配件的組件文件來(lái)描述的。

本系統中的接口一般指一系列聲明的有名函數的集合,同時(shí),接口也是連接不同組件的紐帶。組件的接口通常是雙向的,這種接口實(shí)際上是提供者組件和使用者組件之間的一個(gè)多功能交互通道。接口的提供者所實(shí)現的接口的一組功能函數稱(chēng)為命令;接口的使用者需要實(shí)現的一組功能函數稱(chēng)為事件。
組件是nesC程序的基本單元,組件可分為模塊與配件兩種。
其中模塊是組件的邏輯功能實(shí)體,主要包括命令、事件、任務(wù)的具體實(shí)現。在TinyOS中,命令都是非阻塞的,它們完成后會(huì )通知相關(guān)的事件調用。一般情況下,命令調用都是向下的,即應用組件調用那些與硬件緊密結合的組件,事件調用則正好相反。一些特殊的基本事件的調用必須綁定在硬件中斷上。nesC語(yǔ)言中還有一類(lèi)特殊的函數稱(chēng)為任務(wù)。在TinyOS系統中,任務(wù)是一個(gè)可以被調度的實(shí)體,類(lèi)似于傳統操作系統中的進(jìn)程或線(xiàn)程概念。
配件通??赏ㄟ^(guò)一系列其他組件來(lái)實(shí)現一個(gè)組件規范,它主要實(shí)現組件間的相互訪(fǎng)問(wèn)方式。配件包括組件列表和連接說(shuō)明,組件列表定義了實(shí)現配件的組件,連接通??蓪⒍x的元素(接口、命令、事件等)聯(lián)系在一起,以完成組件之間功能的調用。
4 TinyOS系統的工作原理
為了適應無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的特點(diǎn),TinyOS操作系統使用了四個(gè)主要技術(shù),組件化編程、輕量級線(xiàn)程、主動(dòng)消息通信和事件驅動(dòng)模型。
4.1 組件模型
TinyOS操作系統中的組件有四個(gè)相互關(guān)聯(lián)的部分:一組命令處理程序句柄、一組事件處理程序句柄、一個(gè)經(jīng)過(guò)封裝的私有數據幀和一組簡(jiǎn)單的任務(wù)。任務(wù)、命令和事件處理程序在私有數據幀的上下文中執行并切換幀的狀態(tài)。 風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理
評論