TinyOS学习笔记(1)

本文介绍了TinyOS中的模块概念及执行模型,并深入探讨了节点间的广播通信机制。包括消息缓存(message_t)的使用、关键通信接口如Packet、Send等的作用,以及Active Message接口的应用。还讲解了如何通过AMSenderC实现广播通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开始真正的接触TinyOS的官方文档了。经过了几天的学习,虽然感觉有了一点领悟,但是目前掌握的东西很少。于是把自己在学习文档的过程中的一点笔记放到博客,能随时让自己检讨一下学习进度,同时希望也能有更多的人一起交流。

 

第二章:模块和TinyOS执行模型

1、模块和状态()

2、接口,命令,时间(Interface, Commands, and Events)call调用commandsignal调用event

在一个component中,providesinterface中的command函数必须被实现,uses总的interface中的event函数必须被实现(implementation中实现)

3、 TinyOS执行模型:任务(Tasks)

Task类型的函数指明组件并不立即调用它,而是在与该task对应的post处才开始运行。

4、内联函数:仅在commandevent下,某组件可以调用其他组件的函数。某些函数不能被其他组件命名或调用。

5、分布操作(Split-Phase Operations):将长的操作分开执行,以获得较高的执行效率,而且少用系统资源。

 

 

 

第三章:节点—节点广播通信

1、message_t:(tos/types/message.h)消息缓存。TinyOS中众多与广播通信接口所用的消息缓存。其成员不透明,用accessormutator才可访问,如Packet, AMPacket等接口。

2、基本通信接口(tos/interfaces目录下面):PacketSendReceivePacketAcknowledgementsRadioTimeStamping

3、Active Message接口:AM类型和以太网帧中帧类型的租用类似,指明此数据的类型信息。在tos/interface目录下有AMPacket AMSend接口。

4、相关组件:(tos/system目录下)AMReveiverC, AMSenderC, AMSnooper, AMSnoopingReceiverC, ActiveMessageAddressC.

5、命名包装(Naming Wrappers)ActiveMessageC和平台相关,如:CC2420ActiveMessagesC.

6、include相关问题:

如:include <Timer.h>表明Timer.h位于头文件标准目录:tos目录及其子目录下。

Include "aa.h":告诉预编译其现在本目录下寻找aa.h,若没有再去标准目录下寻找头文件。

Makefile里面用—I标记向编译器指明不在标准目录下的头文件。

7、编写程序时一定要定义消息的数据结构。

8、nx_前缀表示数据为外部类型的大顶端数据,小顶端前缀为nxle_

9、AMSenderC提供了虚拟的使用广播的方法。每个AMSender的使用者都有一个深度为1的队列,所有的队列都是平等的。

10、使用message_t的方法:如例,message_t pkt;

BlinkToRadioMsg *btrpkt=(BlinkToRadioMsg *)(call Packet.getPayload(&pkt, NULL));

此时,BlinkToRadioMsg便是指向pkt数据区的指针。通过对BlinkToRadioMsg成员指向的地址进行操作就可以实现对message_t的操作。

11、将程序中的变量放在task中进行操作,则可省去使用临界区之烦。

12、configuration文件中进行配线时,注意AMSenderCAMReceiverC的类型必须相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值