contiki学习笔记之如何改MAC和RDC协议(翻译)

在低功耗网络中,无线收发器的开启和关闭必修尽可能做到节能。在Contiki操作系统中,这些工作由RDC层完成的,他提供了一些协议来完成这个工作,默认为ContikiMAC.

MAC(媒体访问控制)层位于RDC层的顶部。 MAC层负责避免在无线电介质上发生冲突并在发生冲突时重新发送数据包。 Contiki提供两个MAC层:一个CSMA(载波侦听多路访问)机制和一个NullMAC机制,它不执行任何MAC级处理。

关于MAC驱动

Contiki提供两个MAC驱动程序,CSMA和NullMAC。 默认机制CSMA。 MAC层接收来自RDC层的传入数据包并使用RDC层传输数据包。 如果RDC层或无线电层检测到无线电冲突,则MAC层延后一个随机时间重新发送该分组。 检测到冲突时,只有MAC层的CMSA具有重传功能。

关于RDC驱动

Contiki有几个RDC驱动程序。最常用的是ContikiMAC,X-MAC,CX-MAC,LPP和NullRDC。 ContikiMAC是默认的机制,可以提供非常好的电源效率,但是它是为802.15.4无线电和CC2420无线电收发器量身定制的。 X-MAC是一种比较老的机制,不能提供与ContikiMAC相同的功率效率,但对时序要求较低。 CX-MAC(Compatibility X-MAC)是一种X-MAC的实现,比默认的X-MAC具有更宽松的时序,因此可广泛用于各种的无线电设备。 LPP(Low-Power Probing)是一种接收器发起的RDC协议。 NullRDC是一个“空”RDC层,它永远不会关闭无线电,因此可用于测试或与其他RDC驱动程序进行比较。


RDC驱动尽可能地让节点休眠,并以一定速率侦听信道。但检测到需要接收时,唤醒节点接收数据包。信道监听速率以Hz为单位,指定每秒监听次数,默认信道监听速率为8 Hz。信道监听速率以2的幂次给出,典型设置为2,4,8和16 Hz。


传输的数据包通常必须重复或“选通”,直到接收机打开才能检测到它。这增加了发送节点的功率,同时也使得无线电的传输量增加,这将干扰和其他节点的通信。一些RDC允许“相位优化”延迟选通tx分组,直到接收器预期唤醒之前。这需要两个节点之间的良好时间同步;如果时钟相差1%,则rx唤醒时间将每隔100个周期发生一次漂移(例如, 8赫兹12秒)。当数据包之间存在多于几秒的时间时,这将使相位优化失去作用,因此发射机必须在预测的接收机唤醒之前开始发送。时钟漂移校正可能会解决这个问题。

在contiki中的RDC驱动定义为:

contikimac_driver
cxmac_driver
nullrdc_driver

step1:在文件夹Makefile中新建project-conf.h文件

Contiki每个项目有一个可选的配置文件,名为'project-conf.h'。但是,该文件在默认情况下未启用。为了启用它,我们需要将以下行添加到项目的Makefile中:

 CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\"
添加后完整的Makefile文件为:
CONTIKI = /home/user/contiki
CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\"
include $(CONTIKI)/Makefile.include

step2:创建project-conf.h文件

在项目目录中创建project-conf.h文件,project-conf.h文件可能会覆盖许多Contiki配置选项。在这个例子中,我们将覆盖无线电占空比层驱动程序。

step3a:指定一个新的RDC通道检查率

我们首先更改RDC通道检查率。这是通过在project-conf.h文件中添加一个#define来完成的,该文件指定了通道检查速率,以Hz为单位:

#define NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE 16

step3b:指定一个新的RDC驱动

project-conf.h文件中添加宏定义来指定RDC驱动。
#define NETSTACK_CONF_RDC nullrdc_driver

step3c:指定一个新的MAC驱动

#define NETSTACK_CONF_MAC nullmac_driver
在Makefile中指定了project-conf.h文件后,需要使用make clean命令清理现有的依赖项:

make TARGET=sky clean
首次进行启用该文件时需要清除依赖项,之后的只需要正常编译。

 make TARGET=sky

结论

无线电任务循环(RDC)和媒体访问控制(MAC)协议是Contiki网络堆栈的重要组成部分,因为它们最终确定网络拥塞时节点的功耗和它们的行为。本指南说明了如何通过添加一个project-conf.h文件并向其添加必要的配置语句来更改Contiki项目的RDC和MAC协议。





  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值