TinyOS的通信模型
發(fā)布時(shí)間:2012/4/3 0:03:09 訪問次數(shù):1683
TinyOS中的通信遵循主動(dòng)消息(Active Message,AM)通信 SCP6F86-GL-CWH模型,它是一個(gè)簡單的、可擴(kuò)展的、面向消息通信的高性能通信模式,一般廣泛應(yīng)用在并行分布式處理系統(tǒng)中。主動(dòng)消息不但可以讓應(yīng)用程序開發(fā)者避免使用忙等待( Busy-Baiting)方式等待消息數(shù)據(jù)的到來,而且可以在通信和計(jì)算之間形成重疊,這可以極大地提高CPU的使用效率,并減少傳感器節(jié)點(diǎn)的能耗為了讓主動(dòng)消息機(jī)制更適合于傳感器網(wǎng)絡(luò)的需求,要求主動(dòng)消息至少提供3種最基本的通信機(jī)制:帶確認(rèn)消息的消息傳遞、有明確的消息地址、消息分發(fā)。應(yīng)用程序可以進(jìn)一步增加其他通信機(jī)制以滿足特定需求。如果把主動(dòng)消息通信實(shí)現(xiàn)為一個(gè)TinyOS系統(tǒng)的組件,則可以屏蔽下層各種不同的通信硬件,為上層應(yīng)用提供基本的、一致的通信原語,方便應(yīng)用層序開發(fā)人員開發(fā)各種不同應(yīng)用。由于應(yīng)用千差萬別,硬件功能又具有限制性,所以TinyOS不可能提供功能復(fù)雜的通信組件,而只能提供最基本的通信組件,最后由應(yīng)用程序選擇或定制所需要的特殊通信組件。由于TinyOS木支持動(dòng)態(tài)內(nèi)存分配,所以在主動(dòng)消息通信組件中保存一個(gè)固定尺寸且預(yù)先分配好的緩存隊(duì)列。由于TinyOS只提供最佳效率(best-effort)消息傳遞機(jī)制,所以在接收方提供確認(rèn)反饋給發(fā)送方以確定發(fā)送是否成功是很重要的。
TinyOS 2.x中每一個(gè)主動(dòng)消息有一個(gè)16bit的目的地址和一個(gè)8bit的消息類型。在TinyOSl.x中,消息結(jié)構(gòu)是TOS_Msg。在TinyOS 2.x中,消息結(jié)構(gòu)是message_t,并且仍采用了靜態(tài)包緩沖區(qū)。message_t(定義在opt\tinyos-2.x\tos\typesYmessage.h中)定義如下:
typedef nx_struct message_t{
nx_uint8_t header [sizeof (message_header_t)]j
nx_uint8_t data [TOSH_DATA_LENGTH]j
nx-uint8_t footer[sizeof (message_footer_t)];
nx_uint 8_t metadata[message_metadata_t];
}message_t;
緩沖區(qū)大小可以適合任何節(jié)點(diǎn)的通信接口,并且結(jié)構(gòu)中header、footer祁metadata對用戶是不透明的,組件不能直接訪問結(jié)構(gòu)的各域,所有緩沖區(qū)的訪問必須通過接口AMPackage和Packet(定義在opt\tinyos-2.x\tos\interfaces目錄中)實(shí)現(xiàn)。不同的鏈路層需要定義自己的header、footer和metadata結(jié)構(gòu)。這些結(jié)構(gòu)必須是外部結(jié)構(gòu)(nx_struct),并且它們所有的域也必須是外部類型(nx_木)。這樣做有兩個(gè)好處:第一,外部類型確保了交叉平臺的兼容性;第二,它使得結(jié)構(gòu)都對齊了字節(jié)邊界,解決了包緩沖區(qū)對齊和內(nèi)部的域偏移量的問題。
TinyOS 2.x中每一個(gè)主動(dòng)消息有一個(gè)16bit的目的地址和一個(gè)8bit的消息類型。在TinyOSl.x中,消息結(jié)構(gòu)是TOS_Msg。在TinyOS 2.x中,消息結(jié)構(gòu)是message_t,并且仍采用了靜態(tài)包緩沖區(qū)。message_t(定義在opt\tinyos-2.x\tos\typesYmessage.h中)定義如下:
typedef nx_struct message_t{
nx_uint8_t header [sizeof (message_header_t)]j
nx_uint8_t data [TOSH_DATA_LENGTH]j
nx-uint8_t footer[sizeof (message_footer_t)];
nx_uint 8_t metadata[message_metadata_t];
}message_t;
緩沖區(qū)大小可以適合任何節(jié)點(diǎn)的通信接口,并且結(jié)構(gòu)中header、footer祁metadata對用戶是不透明的,組件不能直接訪問結(jié)構(gòu)的各域,所有緩沖區(qū)的訪問必須通過接口AMPackage和Packet(定義在opt\tinyos-2.x\tos\interfaces目錄中)實(shí)現(xiàn)。不同的鏈路層需要定義自己的header、footer和metadata結(jié)構(gòu)。這些結(jié)構(gòu)必須是外部結(jié)構(gòu)(nx_struct),并且它們所有的域也必須是外部類型(nx_木)。這樣做有兩個(gè)好處:第一,外部類型確保了交叉平臺的兼容性;第二,它使得結(jié)構(gòu)都對齊了字節(jié)邊界,解決了包緩沖區(qū)對齊和內(nèi)部的域偏移量的問題。
TinyOS中的通信遵循主動(dòng)消息(Active Message,AM)通信 SCP6F86-GL-CWH模型,它是一個(gè)簡單的、可擴(kuò)展的、面向消息通信的高性能通信模式,一般廣泛應(yīng)用在并行分布式處理系統(tǒng)中。主動(dòng)消息不但可以讓應(yīng)用程序開發(fā)者避免使用忙等待( Busy-Baiting)方式等待消息數(shù)據(jù)的到來,而且可以在通信和計(jì)算之間形成重疊,這可以極大地提高CPU的使用效率,并減少傳感器節(jié)點(diǎn)的能耗為了讓主動(dòng)消息機(jī)制更適合于傳感器網(wǎng)絡(luò)的需求,要求主動(dòng)消息至少提供3種最基本的通信機(jī)制:帶確認(rèn)消息的消息傳遞、有明確的消息地址、消息分發(fā)。應(yīng)用程序可以進(jìn)一步增加其他通信機(jī)制以滿足特定需求。如果把主動(dòng)消息通信實(shí)現(xiàn)為一個(gè)TinyOS系統(tǒng)的組件,則可以屏蔽下層各種不同的通信硬件,為上層應(yīng)用提供基本的、一致的通信原語,方便應(yīng)用層序開發(fā)人員開發(fā)各種不同應(yīng)用。由于應(yīng)用千差萬別,硬件功能又具有限制性,所以TinyOS不可能提供功能復(fù)雜的通信組件,而只能提供最基本的通信組件,最后由應(yīng)用程序選擇或定制所需要的特殊通信組件。由于TinyOS木支持動(dòng)態(tài)內(nèi)存分配,所以在主動(dòng)消息通信組件中保存一個(gè)固定尺寸且預(yù)先分配好的緩存隊(duì)列。由于TinyOS只提供最佳效率(best-effort)消息傳遞機(jī)制,所以在接收方提供確認(rèn)反饋給發(fā)送方以確定發(fā)送是否成功是很重要的。
TinyOS 2.x中每一個(gè)主動(dòng)消息有一個(gè)16bit的目的地址和一個(gè)8bit的消息類型。在TinyOSl.x中,消息結(jié)構(gòu)是TOS_Msg。在TinyOS 2.x中,消息結(jié)構(gòu)是message_t,并且仍采用了靜態(tài)包緩沖區(qū)。message_t(定義在opt\tinyos-2.x\tos\typesYmessage.h中)定義如下:
typedef nx_struct message_t{
nx_uint8_t header [sizeof (message_header_t)]j
nx_uint8_t data [TOSH_DATA_LENGTH]j
nx-uint8_t footer[sizeof (message_footer_t)];
nx_uint 8_t metadata[message_metadata_t];
}message_t;
緩沖區(qū)大小可以適合任何節(jié)點(diǎn)的通信接口,并且結(jié)構(gòu)中header、footer祁metadata對用戶是不透明的,組件不能直接訪問結(jié)構(gòu)的各域,所有緩沖區(qū)的訪問必須通過接口AMPackage和Packet(定義在opt\tinyos-2.x\tos\interfaces目錄中)實(shí)現(xiàn)。不同的鏈路層需要定義自己的header、footer和metadata結(jié)構(gòu)。這些結(jié)構(gòu)必須是外部結(jié)構(gòu)(nx_struct),并且它們所有的域也必須是外部類型(nx_木)。這樣做有兩個(gè)好處:第一,外部類型確保了交叉平臺的兼容性;第二,它使得結(jié)構(gòu)都對齊了字節(jié)邊界,解決了包緩沖區(qū)對齊和內(nèi)部的域偏移量的問題。
TinyOS 2.x中每一個(gè)主動(dòng)消息有一個(gè)16bit的目的地址和一個(gè)8bit的消息類型。在TinyOSl.x中,消息結(jié)構(gòu)是TOS_Msg。在TinyOS 2.x中,消息結(jié)構(gòu)是message_t,并且仍采用了靜態(tài)包緩沖區(qū)。message_t(定義在opt\tinyos-2.x\tos\typesYmessage.h中)定義如下:
typedef nx_struct message_t{
nx_uint8_t header [sizeof (message_header_t)]j
nx_uint8_t data [TOSH_DATA_LENGTH]j
nx-uint8_t footer[sizeof (message_footer_t)];
nx_uint 8_t metadata[message_metadata_t];
}message_t;
緩沖區(qū)大小可以適合任何節(jié)點(diǎn)的通信接口,并且結(jié)構(gòu)中header、footer祁metadata對用戶是不透明的,組件不能直接訪問結(jié)構(gòu)的各域,所有緩沖區(qū)的訪問必須通過接口AMPackage和Packet(定義在opt\tinyos-2.x\tos\interfaces目錄中)實(shí)現(xiàn)。不同的鏈路層需要定義自己的header、footer和metadata結(jié)構(gòu)。這些結(jié)構(gòu)必須是外部結(jié)構(gòu)(nx_struct),并且它們所有的域也必須是外部類型(nx_木)。這樣做有兩個(gè)好處:第一,外部類型確保了交叉平臺的兼容性;第二,它使得結(jié)構(gòu)都對齊了字節(jié)邊界,解決了包緩沖區(qū)對齊和內(nèi)部的域偏移量的問題。
熱門點(diǎn)擊
- Flooding和Gossiping路由協(xié)議
- FTSP
- 無線傳感器網(wǎng)絡(luò)的基本特點(diǎn)
- RSSI定位方法
- 自鎖電路
- 到達(dá)信號強(qiáng)度測量法( RSSI)
- 應(yīng)用層
- 傳感器網(wǎng)絡(luò)協(xié)議棧的3個(gè)管理平臺功能
- 提高線圈Q值所采取的措施
- 磁棒
推薦技術(shù)資料
- 循線機(jī)器人是機(jī)器人入門和
- 循線機(jī)器人是機(jī)器人入門和比賽最常用的控制方式,E48S... [詳細(xì)]
- 全集成直接飛行時(shí)間(dToF)傳感器
- 2025年半導(dǎo)體市場發(fā)展趨勢未
- GW2A系列FPGA芯片應(yīng)用參數(shù)
- DDR類儲存器接口解決方案
- 2.5G bps MIPI D
- 新一代 Arora-V系列FPGA產(chǎn)品詳情
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究