TinyOS無(wú)線(xiàn)傳感器網(wǎng)絡(luò )操作系統分析
TinyOS操作系統中的組件通常分為硬件抽象組件、合成組件、高層次的軟件組件三類(lèi)。其中硬件抽象組件用于將物理硬件映射成為T(mén)inyOS操作系統中的組件,無(wú)線(xiàn)發(fā)送模塊是這種組件的代表,它可提供命令以操縱與射頻收發(fā)器相連的各個(gè)單獨的I/O引腳,并且發(fā)信號給事件以將數據位的發(fā)送和接收通知其他組件,圖3所示是天線(xiàn)傳感器應用程序的組件結構:合成組件可以模擬高級硬件的行為,這種組件的一個(gè)例子是圖3中的Radio Byte組件,它以字節為單位與上層組件交互,并以位為單位與下層無(wú)線(xiàn)發(fā)送模塊組件交互,最后將無(wú)線(xiàn)接口映射到UART設備接口上;高層次的軟件組件可完成控制、路由以及數據傳輸等功能,圖3中的主動(dòng)消息處理模塊是這種組件的代表,它可履行在傳輸前填充包緩存區以及將收到的消息分發(fā)給相應的任務(wù)的功能。

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