Chinaunix首页 | 论坛 | 博客
  • 博客访问: 393088
  • 博文数量: 87
  • 博客积分: 1171
  • 博客等级: 少尉
  • 技术积分: 1068
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-19 14:34
文章分类

全部博文(87)

文章存档

2014年(10)

2013年(24)

2012年(53)

我的朋友

分类: 嵌入式

2012-10-19 10:28:21

 在contiki中,mac层源码位于core\net\mac目录下。
       在低功耗网络中,无线收发设备必须时常休眠以节省电量。在Contiki中,负责这个工作的是RDC(Radio Duty Cycling)层。Contiki提供了一系列RDC机制。默认的就是ContikiMAC。
       MAC(Medium Access Control)层处于RDC的上层。MAC层负责避免数据在传输过程中的冲突以及重传数据包。Contiki提供了两种MAC层,一种是CSMA(Carrier Sense Multiple Access 载波侦听多路访问)机制以及NullMAC机制(只负责对数据的转接而不对数据进行任何的操作)。
       1、关于MAC驱动
       Contiki提供了两种MAC驱动,CSMA(载波监听多路访问)NullMAC。默认为CSMA。MAC层接收来自RDC层的数据并通过RDC层来转发数据包。假如RDC层或者是radio层检测到数据碰撞,MAC层就要重发这个数据包。如有数据碰撞只有CSMA支持重发。
       2、关于RDC驱动
       Contiki有多种RDC驱动。最常用的就是ContikiMAC,X-MAC,CX-MAC,LPP以及NullRDC。默认的而是ContikiMAC,它具有很好的功率效率,但有些更偏向于802.15.4无线设备以及CC2420无线收发设备。X-MAC是一个较旧的机制,它不像ContikiMAC那样有高功率效率,但是有较严格的时序要求。CX-MAC(兼容的X-MAC)比X-MAC有更宽松的时序要求,因此能在更多的无线设备上工作。LPP(Low-Power Probing)是一个随接收器启动的RDC协议。NullRDC是一个空的RDC层,它从来不会关闭无线设备,因此可以用来测试或者与其它的RDC驱动比较使用。
       RDC驱动尽量保持无线设备休眠并且定期检查无线传输介质。当进行检测时,无线设备接收数据包。信道检查频率以HZ为单位,指定每秒信道检查的次数,默认为8HZ。典型的信道检查频率为2、4、8、16HZ。
通常传输的数据包必须重复发送直到接收器打开检测。这就增加了耗电量以及无线通信流量(traffic)进而影响与其它节点的通信。一些RDC驱动允许阶段优化即推迟选通(strobe)发送的数据包直到接收器将要唤醒。这需要两个节点之间良好的时间同步,如果以1%的时钟差那么唤醒时间将贯穿整个发送阶段窗口每100个周期,比如在信道检查频率为8HZ的时候是12秒。当传送包的时间间隔为几秒的时候这将让阶段优化失去作用,因为发送者必须在接收器唤醒之前提前准备好发送的数据。时钟漂移校正(clock drift correction)可能解决这个问题。
       这些Contiki RDC驱动被称作:
       contikimac_driver
       xmac_driver
       cxmac_driver
       lpp_driver
       nullrdc_driver
      
原英文文章:
另:SICSLoWMAC专门作为6LowPAN的mac层而设计的。有关SICSLowMAC层参                  见:
 
 
转自:
阅读(2929) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~