TinyOS無(wú)線傳感器網(wǎng)絡(luò)操作系統(tǒng)分析
TinyOS操作系統(tǒng)中的組件通常分為硬件抽象組件、合成組件、高層次的軟件組件三類(lèi)。其中硬件抽象組件用于將物理硬件映射成為T(mén)inyOS操作系統(tǒng)中的組件,無(wú)線發(fā)送模塊是這種組件的代表,它可提供命令以操縱與射頻收發(fā)器相連的各個(gè)單獨(dú)的I/O引腳,并且發(fā)信號(hào)給事件以將數(shù)據(jù)位的發(fā)送和接收通知其他組件,圖3所示是天線傳感器應(yīng)用程序的組件結(jié)構(gòu):合成組件可以模擬高級(jí)硬件的行為,這種組件的一個(gè)例子是圖3中的Radio Byte組件,它以字節(jié)為單位與上層組件交互,并以位為單位與下層無(wú)線發(fā)送模塊組件交互,最后將無(wú)線接口映射到UART設(shè)備接口上;高層次的軟件組件可完成控制、路由以及數(shù)據(jù)傳輸?shù)裙δ埽瑘D3中的主動(dòng)消息處理模塊是這種組件的代表,它可履行在傳輸前填充包緩存區(qū)以及將收到的消息分發(fā)給相應(yīng)的任務(wù)的功能。
4.2 輕量級(jí)線程
在TinyOS操作系統(tǒng)中,一般的輕量級(jí)線程task(即TinyOS操作系統(tǒng)中的任務(wù))可按照FIFO方式進(jìn)行調(diào)度,輕量級(jí)線程之間不允許搶占。任務(wù)一旦執(zhí)行,就必須執(zhí)行完畢,不能被其他任務(wù)中斷。而硬件處理線程(即中斷處理線程)則可以打斷用戶的輕量級(jí)線程和低優(yōu)先級(jí)的中斷處理線程,故可對(duì)硬件中斷快速響應(yīng)。
4.3 主動(dòng)消息通信
主動(dòng)消息通信是一個(gè)面向消息通信的高性能通信模型。在無(wú)線傳感器網(wǎng)絡(luò)中采用主動(dòng)消息機(jī)制的主要目的是使無(wú)線傳感器節(jié)點(diǎn)的計(jì)算能力和通信重疊。為使主動(dòng)消息更適用于無(wú)線傳感器網(wǎng)絡(luò)的需求,主動(dòng)消息提供了三個(gè)最基本的通信機(jī)制,其一是帶確認(rèn)的消息傳遞,其二是有明確的消息地址,其三是消息分發(fā)。在TinyOS操作系統(tǒng)中,主動(dòng)消息通信被視為一個(gè)系統(tǒng)組件,它屏蔽了下層各種不同的通信硬件,從而為上層提供了一致的通信原語(yǔ),可方便開(kāi)發(fā)人員實(shí)現(xiàn)各種功能的高層通信組件。
在TinyOS的主動(dòng)通信中,當(dāng)數(shù)據(jù)到達(dá)傳感器節(jié)點(diǎn)時(shí),首先進(jìn)行緩存,然后由主動(dòng)消息把緩存中的數(shù)據(jù)分發(fā)到上層應(yīng)用。TinyOS操作系統(tǒng)不支持動(dòng)態(tài)內(nèi)存分配,所以要求每個(gè)應(yīng)用程序在其所需的消息被釋放后,要能夠返回一塊未使用的消息緩存,以用于接收下一個(gè)將要來(lái)到的消息。因?yàn)樵赥inyOS操作系統(tǒng)中,各個(gè)應(yīng)用程序之間的執(zhí)行是不能搶占的,所以不會(huì)出現(xiàn)多個(gè)未使用的消息緩存發(fā)生沖突,因此,TinyOS操作系統(tǒng)的主動(dòng)消息通信組件只需要維持一個(gè)額外的消息緩存以用于接收下一個(gè)消息。如果一個(gè)應(yīng)用程序需要同時(shí)存儲(chǔ)多個(gè)消息,則需要在其私有數(shù)據(jù)幀上靜態(tài)分配額外的空間以保存消息。
一般情況下,由于TinyOS操作系統(tǒng)中只提供best-effort消息傳遞機(jī)制.所以需要接收方提供確認(rèn)反饋信息給發(fā)送方,以確定發(fā)送是否成功。確認(rèn)消息可由主動(dòng)消息通信組件生成,這樣比在應(yīng)用層生成確認(rèn)消息包更能節(jié)省開(kāi)銷(xiāo),而且反饋時(shí)間短。
4.4 事件驅(qū)動(dòng)模型
TinyOS操作系統(tǒng)是事件驅(qū)動(dòng)的操作系統(tǒng),故當(dāng)一個(gè)任務(wù)完成后,就可以使其觸發(fā)一個(gè)事件,然后由TinyOS操作系統(tǒng)自動(dòng)調(diào)用相應(yīng)的處理函數(shù)。事件驅(qū)動(dòng)分為硬件事件驅(qū)動(dòng)和軟件事件驅(qū)動(dòng)。硬件事件驅(qū)動(dòng)也就是一個(gè)硬件發(fā)出中斷,然后進(jìn)入中斷處理函數(shù);而軟件驅(qū)動(dòng)則是通過(guò)signal關(guān)鍵字來(lái)觸發(fā)一個(gè)事件。
5 結(jié)束語(yǔ)
盡管TinyOS已被廣泛使用,而且也得到了相當(dāng)?shù)恼J(rèn)可,但這并不意味著TinyOS能夠適用于WSN的所有應(yīng)用場(chǎng)景。事實(shí)上,在某些場(chǎng)合下,TinyOS并不能很好的工作,它也存在不足的地方,比如可能出現(xiàn)過(guò)載、導(dǎo)致任務(wù)丟失、通信吞吐量下降等。無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的三個(gè)典型任務(wù)一般是傳感器采集、本地?cái)?shù)據(jù)發(fā)送和作為中繼節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包。當(dāng)本地任務(wù)發(fā)生頻率過(guò)高時(shí),任務(wù)隊(duì)列很快就滿了,這時(shí)發(fā)送或接收任務(wù)就可能丟失,從而導(dǎo)致數(shù)據(jù)包丟失;另外,如果本地任務(wù)運(yùn)行時(shí)間過(guò)長(zhǎng),則發(fā)送或接收數(shù)據(jù)包的任務(wù)也要等待較長(zhǎng)時(shí)間才能得到處理,這樣,會(huì)降低通信速率。因此TinyOS的調(diào)度策略可能導(dǎo)致問(wèn)題的出現(xiàn)。而FIFO的調(diào)度機(jī)制也可能引起一些重要的任務(wù)得不到實(shí)時(shí)響應(yīng)的問(wèn)題。對(duì)于這些問(wèn)題的解決,將在以后的文章中進(jìn)行討論。本文引用地址:http://butianyuan.cn/article/162785.htm 風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理
評(píng)論