CC2530中的源地址匹配

一.  背景知识:数据传输---直接传输和间接传输:
  • 直接传输
        协调点到普通节点、普通节点到协调点以及对等节点间的数据传输工作方式均可采用直接传输。
        

  • 间接传输:
        只用于协调器,当协调器向普通节点传输数据时才可采用间接传输的工作方式。


二. 源地址匹配的应用场景
三个方面的应用:
1. 帧未决 正确 置的自 确认 :
当使用间接帧传输,设备发送数据请求来轮询存储在协调器中的帧。
要表示实际上是否为设备存储了一个帧,协调器必须在返回的确认帧中设置或清除帧未决位。但是在
大多数   8   位或   16     M CU   没有 因此 不管
( 如I EEE   802.15. 4     [1 ] 所要求 ) 。这在功耗方面是很浪费的,因为轮询设备必须保持它的
接收器使能相当长的一段时间, 即 使 使
使能 AU T OP E N D   线 动设置
列中的 表。
        
即,如果协调器存储了多个要转发的帧,假设这些帧的目的地址是各个终端设备,那么将这些目的地址加载到
源地址表中,只有地址匹配的 终端 设备地址请求,才会给予自动应答(如果使能了自动应答,并参见“确认帧”一节中的AUTOPEND)。
如果协调器中并未存储某个设备地址 的帧,那么,协调器不会就此设备的轮询请求给予应答。
在通常的间接传输中(见上面第一节),首先终端设备向协调器发起数据请求命令,协调器不管有没有该设备的数据,
一般都是设置帧未决位并发送确认帧,终端设备收到此包含帧未决位的协调器的确认帧后,
会认为协调器中缓存有有本地设备的数据,然后会一直等待数据下发。所以" 轮询设备必须保持它的
接收器使能相当长的一段时间, 即 使 使 用。“, 这在功耗方面是非常浪费的。
上述的设置帧未决位,即设置该位为1,表明还有后续的数据。
在FCF中, Frame Pending subfield此时不是指分片帧的后续片---这应该是ZIGBEE协议规范(应用层)所包含的功能,而非MAC层,
而这里的帧则是MAC帧。所以 Frame Pending subfield指的是上述的含义。

下面的讨论主要基于此应用场景。

2. 安全材料查询:
   为了减少处理安全帧所需的时间,可以配置源地址表,这样条目匹配 CPU 的安全密钥表。
   表条目的第二级别的屏蔽允许这一应用与自动设置确认帧的未决位相结合。
3. 其他应用:
   之前的两个应用是源地址匹配功能的主要目标。但是,对于只依靠基本 IEEE 802.15.4 帧格式的特定协议,
   还有一些其他应用。例如,可以创建防火墙功能,即只承认一组规定规则的节点。 

三. 源地址 内存 表和相关 配置内存表
1. 源地址表


上述源地址表包括24个短地址(短地址+PAN ID),序号为0-23。以及重叠的12个扩展地址,序号为0-11。
这些地址条目为所要匹配的源地址。具体哪一个地址条目参与匹配还受下面匹配配置 寄存器 的影响。

2. 相关配置 内存域(为了表述方便,此处称此内存区域为寄存器)
    2.1 源地址匹配控制寄存器:
0x6169SRCSHORTPENDEN28 MSBs of the 24-bit mask that enables and disables automatic pending for each of the 24 short addresses
0x6168SRCSHORTPENDEN1......
0x6167SRCSHORTPENDEN0......
0x6166SRCEXTPENDEN28 MSBs of the 24-bit mask that enables and disables automatic pending for each of the 12 extended addresses. Entry n is mapped toSRCEXTPENDEN[2n]. AllSRCEXTPENDEN[2n + 1] bits are don't care.
0x6165SRCEXTPENDEN1......
0x6164SRCEXTPENDEN0......
  • SRCSHORTPENDEN0-2
        SRCSHORTPENDEN0-2为一组,SRCEXTPENDEN0-2为一组。每一个地址8位,一组各24bits。
        RCSHORTPENDEN0-2组成的24位,每一位控制源地址表中,和位序相应的条目是否使能源地址匹配。
        这其中扩展地址占用了12位。
  • SRCEXTPENDEN0-2
    AUTOPEND功能使能位。SRCEXTPENDEN0-2组成的24位则表示,如果某一个源地址条目被匹配时,是否使能AUTOPEND。
        相应的,如果地址是扩展模式,就只使用其中的12位。
        注意SRCMATCH.AUTOPEND是总使能开关。关于AUTOPEND使能的更多细节,参见“确认帧”一节。

   2.2 源地址匹配结果寄存器:
        一旦接收帧的源地址和上述源地址条目相匹配,将由下面的匹配结果寄存器来反映匹配结果。

0x6163SRCRESINDEXThe bit index of the least-significant 1 in SRCRESMASK, or 0x3F when there is no source match. On a match, bit 5 is 0 when the match is on a short address and 1 when it is on an extended address. On a match, bit 6 is 1 when the conditions for automatic pending bit in acknowledgment have been met (see the description of SRCMATCH.AUTOPEND). The bit gives no indication of whether or not the acknowledgment actually is  transmitted, and does not take the PENDING_ORregister bit and the SACK, SACKPEND, and SNACK strobes into account.
0x6162SRCRESMASK224-bit mask that indicates source address match for each individual entry in the source address table
0x6161SRCRESMASK1Short address matching. When there is a match on entry panid_n + short_n, bit n is set in SRCRESMASK.
0x6160SRCRESMASK0Extended address matching. When there is a match on entry ext_n, bits 2n and 2n + 1 are set in SRCRESMASK.

上面的寄存器分为两组,即SRCRESMASK0-2和SRCRESINDEX。
  • SRCRESMASK0-2
        SRCRESMASK0-2组成的24位,如果某一源地址条目被匹配,那么相应条目序号对应的bit就会被置位。
        如,如果第24个源地址条目被匹配,那么SRCRESMASK2的MSB就会被置位。
        如果接收帧中不包含源地址,或没有匹配,那么SRCRESMASK位6:0就为0x3F。
  • SRCRESINDEX
         SRCRESINDEX 为4:0存放的是该匹配条目的序号值,如第24个(序号为23)源地址条目被匹配,那么它的值就为23。
         当为扩展地址匹配时,SRCRESINDEX的第5位会被设置为1,而短地址匹配时,改位为0,以此来表明两者的区别。
         另外还有一点,如果发生任一地址匹配,且SRCEXTPENDEN中相应位的被使能,SRCRESINDEX的第6位会被置1。
         即SRCEXTPENDEN第6为 AUTOPEND功能的结果。

四. 匹配算法
仅当帧过滤使能且收到的帧己被接受(accepted,见帧过滤一节)时才执行源地址匹配。

匹配算法C语言描述如下:
短地址匹配算法:
SRCRESMASK   =   0x000000 ;
SRCRESINDEX   =   0x3F ;
for   ( n   =   0 ;   n   <   24 ;   n ++)   {
    bitVector   =   0x000001   <<   n ;
      if   ( SRCSHORTEN   &   bitVector )   {
          if   (( panid [ n ]   ==   srcPanid )   &&
          ( short [ n ]   ==   srcShort ))   {
                SRCRESMASK   |=   bitVector ;
              if   ( SRCRESINDEX   ==   0x3F )   {
                SRCRESINDEX   =   n ;
              }
          }
      }  
}

扩展地址匹配算法:
SRCRESMASK   =   0x000000 ;
SRCRESINDEX   =   0x3F ;
for   ( n   =   0 ;   n   <   12 ;   n ++)   {
    bitVector   =   0x000003   <<   ( 2   *   n );
      if   ( SRCEXTEN   &   bitVector )   {
          if   ( ext [ n ]   ==   srcExt )   {
                SRCRESMASK   |=   bitVector ;
              if   ( SRCRESINDEX   ==   0x3F )   {
                SRCRESINDEX   =   n   |   0x20 ;
              }
          }
      }  
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值