TinyOS的通信模型
发布时间:2012/4/3 0:03:09 访问次数:1708
TinyOS中的通信遵循主动消息(Active Message,AM)通信 SCP6F86-GL-CWH模型,它是一个简单的、可扩展的、面向消息通信的高性能通信模式,一般广泛应用在并行分布式处理系统中。主动消息不但可以让应用程序开发者避免使用忙等待( Busy-Baiting)方式等待消息数据的到来,而且可以在通信和计算之间形成重叠,这可以极大地提高CPU的使用效率,并减少传感器节点的能耗为了让主动消息机制更适合于传感器网络的需求,要求主动消息至少提供3种最基本的通信机制:带确认消息的消息传递、有明确的消息地址、消息分发。应用程序可以进一步增加其他通信机制以满足特定需求。如果把主动消息通信实现为一个TinyOS系统的组件,则可以屏蔽下层各种不同的通信硬件,为上层应用提供基本的、一致的通信原语,方便应用层序开发人员开发各种不同应用。由于应用千差万别,硬件功能又具有限制性,所以TinyOS不可能提供功能复杂的通信组件,而只能提供最基本的通信组件,最后由应用程序选择或定制所需要的特殊通信组件。由于TinyOS木支持动态内存分配,所以在主动消息通信组件中保存一个固定尺寸且预先分配好的缓存队列。由于TinyOS只提供最佳效率(best-effort)消息传递机制,所以在接收方提供确认反馈给发送方以确定发送是否成功是很重要的。
TinyOS 2.x中每一个主动消息有一个16bit的目的地址和一个8bit的消息类型。在TinyOSl.x中,消息结构是TOS_Msg。在TinyOS 2.x中,消息结构是message_t,并且仍采用了静态包缓冲区。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;
缓冲区大小可以适合任何节点的通信接口,并且结构中header、footer祁metadata对用户是不透明的,组件不能直接访问结构的各域,所有缓冲区的访问必须通过接口AMPackage和Packet(定义在opt\tinyos-2.x\tos\interfaces目录中)实现。不同的链路层需要定义自己的header、footer和metadata结构。这些结构必须是外部结构(nx_struct),并且它们所有的域也必须是外部类型(nx_木)。这样做有两个好处:第一,外部类型确保了交叉平台的兼容性;第二,它使得结构都对齐了字节边界,解决了包缓冲区对齐和内部的域偏移量的问题。
TinyOS 2.x中每一个主动消息有一个16bit的目的地址和一个8bit的消息类型。在TinyOSl.x中,消息结构是TOS_Msg。在TinyOS 2.x中,消息结构是message_t,并且仍采用了静态包缓冲区。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;
缓冲区大小可以适合任何节点的通信接口,并且结构中header、footer祁metadata对用户是不透明的,组件不能直接访问结构的各域,所有缓冲区的访问必须通过接口AMPackage和Packet(定义在opt\tinyos-2.x\tos\interfaces目录中)实现。不同的链路层需要定义自己的header、footer和metadata结构。这些结构必须是外部结构(nx_struct),并且它们所有的域也必须是外部类型(nx_木)。这样做有两个好处:第一,外部类型确保了交叉平台的兼容性;第二,它使得结构都对齐了字节边界,解决了包缓冲区对齐和内部的域偏移量的问题。
TinyOS中的通信遵循主动消息(Active Message,AM)通信 SCP6F86-GL-CWH模型,它是一个简单的、可扩展的、面向消息通信的高性能通信模式,一般广泛应用在并行分布式处理系统中。主动消息不但可以让应用程序开发者避免使用忙等待( Busy-Baiting)方式等待消息数据的到来,而且可以在通信和计算之间形成重叠,这可以极大地提高CPU的使用效率,并减少传感器节点的能耗为了让主动消息机制更适合于传感器网络的需求,要求主动消息至少提供3种最基本的通信机制:带确认消息的消息传递、有明确的消息地址、消息分发。应用程序可以进一步增加其他通信机制以满足特定需求。如果把主动消息通信实现为一个TinyOS系统的组件,则可以屏蔽下层各种不同的通信硬件,为上层应用提供基本的、一致的通信原语,方便应用层序开发人员开发各种不同应用。由于应用千差万别,硬件功能又具有限制性,所以TinyOS不可能提供功能复杂的通信组件,而只能提供最基本的通信组件,最后由应用程序选择或定制所需要的特殊通信组件。由于TinyOS木支持动态内存分配,所以在主动消息通信组件中保存一个固定尺寸且预先分配好的缓存队列。由于TinyOS只提供最佳效率(best-effort)消息传递机制,所以在接收方提供确认反馈给发送方以确定发送是否成功是很重要的。
TinyOS 2.x中每一个主动消息有一个16bit的目的地址和一个8bit的消息类型。在TinyOSl.x中,消息结构是TOS_Msg。在TinyOS 2.x中,消息结构是message_t,并且仍采用了静态包缓冲区。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;
缓冲区大小可以适合任何节点的通信接口,并且结构中header、footer祁metadata对用户是不透明的,组件不能直接访问结构的各域,所有缓冲区的访问必须通过接口AMPackage和Packet(定义在opt\tinyos-2.x\tos\interfaces目录中)实现。不同的链路层需要定义自己的header、footer和metadata结构。这些结构必须是外部结构(nx_struct),并且它们所有的域也必须是外部类型(nx_木)。这样做有两个好处:第一,外部类型确保了交叉平台的兼容性;第二,它使得结构都对齐了字节边界,解决了包缓冲区对齐和内部的域偏移量的问题。
TinyOS 2.x中每一个主动消息有一个16bit的目的地址和一个8bit的消息类型。在TinyOSl.x中,消息结构是TOS_Msg。在TinyOS 2.x中,消息结构是message_t,并且仍采用了静态包缓冲区。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;
缓冲区大小可以适合任何节点的通信接口,并且结构中header、footer祁metadata对用户是不透明的,组件不能直接访问结构的各域,所有缓冲区的访问必须通过接口AMPackage和Packet(定义在opt\tinyos-2.x\tos\interfaces目录中)实现。不同的链路层需要定义自己的header、footer和metadata结构。这些结构必须是外部结构(nx_struct),并且它们所有的域也必须是外部类型(nx_木)。这样做有两个好处:第一,外部类型确保了交叉平台的兼容性;第二,它使得结构都对齐了字节边界,解决了包缓冲区对齐和内部的域偏移量的问题。
上一篇:TinyOS的组件模型
热门点击
- Flooding和Gossiping路由协议
- FTSP
- 无线传感器网络的基本特点
- RSSI定位方法
- 自锁电路
- 到达信号强度测量法( RSSI)
- 应用层
- 传感器网络协议栈的3个管理平台功能
- 提高线圈Q值所采取的措施
- 磁棒
推荐技术资料
- 循线机器人是机器人入门和
- 循线机器人是机器人入门和比赛最常用的控制方式,E48S... [详细]