zigbee协议栈各层的功能.docx

上传人:b****6 文档编号:11959553 上传时间:2023-06-03 格式:DOCX 页数:13 大小:25.15KB
下载 相关 举报
zigbee协议栈各层的功能.docx_第1页
第1页 / 共13页
zigbee协议栈各层的功能.docx_第2页
第2页 / 共13页
zigbee协议栈各层的功能.docx_第3页
第3页 / 共13页
zigbee协议栈各层的功能.docx_第4页
第4页 / 共13页
zigbee协议栈各层的功能.docx_第5页
第5页 / 共13页
zigbee协议栈各层的功能.docx_第6页
第6页 / 共13页
zigbee协议栈各层的功能.docx_第7页
第7页 / 共13页
zigbee协议栈各层的功能.docx_第8页
第8页 / 共13页
zigbee协议栈各层的功能.docx_第9页
第9页 / 共13页
zigbee协议栈各层的功能.docx_第10页
第10页 / 共13页
zigbee协议栈各层的功能.docx_第11页
第11页 / 共13页
zigbee协议栈各层的功能.docx_第12页
第12页 / 共13页
zigbee协议栈各层的功能.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

zigbee协议栈各层的功能.docx

《zigbee协议栈各层的功能.docx》由会员分享,可在线阅读,更多相关《zigbee协议栈各层的功能.docx(13页珍藏版)》请在冰点文库上搜索。

zigbee协议栈各层的功能.docx

zigbee协议栈各层的功能

竭诚为您提供优质文档/双击可除

zigbee协议栈各层的功能

  篇一:

zigbee协议栈各层分析

  3.4.2协议栈概况

  本课题研究的系统zigbee协议栈设计基于msstate_lRwpan。

msstate_lRwpan是由美国密西西比州立大学的Robertb.Reese教授开发的一套zigbee协议的简化实现。

该协议栈可用于多种硬件平台,实现了协调器、路由器和精简功能节点之间的树路由、直接消息传输并用静态绑定方法实现了间接路由[[xxxix]]。

课题在对该协议栈进行深入分析的基础上,根据本课题中使用硬件平台的实际情况进行修改,将其移植到msp430+cc2420的硬件平台上来。

程序使用c语言编写,使用iaR公司的ew430工具作为集成开发环境,编译后下载到目标板的msp430芯片中。

  协议栈使用有限状态机(Fsm,Finitestatemachine)的编程方式,在协议的每一层实现单独的有限状态机来跟踪该层的工作状态,整个协议栈采用嵌套调用的方式,上层调用下层的有限状态机,实现完整协议栈的运行。

最顶层的有限状态机是应用程序支持子层(aps)的apsFsm(),需要周期性的调用,以维持整个协议栈正常运行。

  经过对msstate_lRwpan协议各层源程序的原理和实现方法进行分析后发现,在将协议栈从一种硬件平台移植到另外一种硬件平台时,需要修改的主要是物理层(phy)和媒体接入控制层(mac),这两层与硬件联系紧密,需要针对节点硬件的实际连接方式作较大的修改,涉及的文件主要有cc2420.c、clockhal.c和

  halstack.c等。

phy层和mac层屏蔽了硬件的差异,上层协议通过服务接入点(sap,serviceaccesspoint)使用下层协议提供的服务,透明地完成对硬件的控制,所以网络层(nwk)和应用层(aps)等文件要作的改动较小。

  3.4.3物理层phy

  物理层是协议的最底层,承担着和外界直接作用的任务。

该层定义了物理无线信道和mac子层之间的接口,提供物理层数据服务和管理服务。

数据服务负责控制射频收发器的工作,从物理无线信道上收发数据,主要有以下几个方面的功能

  [[xl],[xli]]:

  

(1)激活和休眠射频收发器;

  

(2)信道能量检测;

  (3)检测接收到数据包的链路质量指示(lqi,linkqualityindication);

  (4)空闲信道评估(cca,clearchannelassessment);

  (5)收发数据。

  为了提高协议栈的可移植性,让它可以灵活方便地应用于其它类型的硬件平台,从物理层中划分出一部分与硬件联系极为紧密的操作,形成硬件抽象层(hal,hardwareabstractlayer),这一层中的函数大多涉及到对硬件器件端口和寄存器的直接操作,包含对一部分硬件的初始化和一些中断函数入口定义。

硬件抽象层中的主要函数有:

  

(1)halinit(void):

对硬件抽象层的初始化。

包含了对串口uaRt和计时器mactimer的初始化。

  

(2)halinituart(void):

对串口uaRt的初始化。

对连接uaRt的管脚设置i/o方向和功能,选择时钟信号源为smclk,设置波特率为57600,打开usaRt1的发送和接收使能并打开接收中断。

  (3)halgetch(void):

从接收缓存中读取数据。

  (4)halgetchRdy(void):

根据头指针和尾指针的位置判断是否接收到数据。

  (5)halputch(charc):

等待发送缓存可用时,向其中写入一个字节的数据进行发送。

  (6)halinitmactimer(void):

初始化计时器。

  (7)halgetprocessorieeeaddress(byte*buf):

获取节点的64位ieee长地址,存在buf指向的数组内。

  (8)halwaitms(uint32msecs):

等待毫秒级的一段时间。

  (9)halsleep(uint32msecs):

在看门狗溢出时间内处于lpm1低功耗模式。

  (10)uart1_intr(void):

uaRt1中断处理函数,从接收缓存RxbuF1中读取接收到的数据。

  (11)watchdog_timer(void):

看门狗中断处理函数,从lpm1低功耗休眠模式中退出。

  在物理层phy中实现的主要是初始化函数和物理层有限状态机phyFsm。

物理层的初始化函数phyinit(void)对存储区域进行了初始化,将堆栈清空,并指示物理层有限状态机进入空闲状态。

  物理层有限状态机设计如图3-10所示。

  图3-10物理层有限状态机phyFsm

  物理层有限状态机接收上层指令,做初始化射频模块RF和向RF发送数据包的工作。

数据包发送给RF模块后需要等待RF模块返回的消息以确认数据被正确地发出,如果超时,将在RF模块空闲时,再次重发。

  物理层的数据帧格式[1]如图3-11所示。

首先是四个字节的前导序列符(preamble),用于收发器从中提取时钟信号,完成片同步和符号同步;然后是帧定界符(sFd),其值固定为0xa7,标识一个物理帧的开始,保证收发器与字节的同步;接着是负载长度域,由一个字节的低七位表示,因此物理帧的负载长度不能超过127个字节;最后是物理服务数据单元(psdu,physervicedataunit),也就是

  物理层向RF发出的数据会由cc2420自动加上相应的同步头,故在程序中不再考虑帧头的计算与添加。

  3.4.4媒体接入控制层mac

  mac层使用物理层提供的服务实现设备间的数据帧传输,负责设备间无线数据链路的建立、维护和终结,其提供的数据服务保证mac协议数据单元(pdu,protocoldataunit)在物理层的数据服务中能够正确收发。

  mac层的主要有以下几个方面的功能[38]:

  

(1)协调器产生并发送信标帧,普通设备根据信标帧与进行协调器同步;

  

(2)支持无线信道通信安全机制;

  (3)提供csma-ca信道访问机制;

  (4)提供时隙保障(gts,guaranteedtimeslot)机制;

  (5)提供不同设备mac层间的可靠传输。

  在mac层中,设备有两种地址格式:

16位的短地址(shortaddress)和64位的扩展地址(extendedaddress)。

16位短地址是设备加入pan网络时,由协调器为其分配的网内局部地址,随着网络拓扑和设备在pan网络中所处层次的不同会有所变化。

64位扩展地址是由ieee分配的全球唯一地址,在设备制造时即已确定且不可改变。

  mac层工作时的很多特性由一些特定的数据决定[[xlii]]。

这些数据有的是由协议和硬件决定的常量,有的是可以由上层软件根据需要通过相应的服务原语来设置或改变的。

这些可以改变的数据称为属性,把它们集中在一起管理,称之为pib(paninformationbase)。

可以通过服务原语实现对这些属性的操作。

  mac层的主要函数有:

  

(1)macinit(void):

mac层的初始化函数,初始化mac_pib,清空节点间的连接。

  

(2)macwarmstartRadio(void):

初始化RF射频模块,设置使用的信道、panid和当前节点短地址。

  (3)mactxdata(void):

发送mac层数据包。

首先格式化数据帧头,然后格式化信息来源地址和来源panid,再格式化信息目的地址和目的panid,并格式化数据帧的序列号(dsn,dataserialnumber),最后格式化msb和lsb,写入数据帧的长度,并交给下层进行发送。

  (4)macparsehdr(void):

分析获取接收到的数据帧的帧头所包含的信息。

从中读取目的panid,目的地址和来源地址等。

  (5)macFormatbeacon(void):

格式化信标帧。

依次填入魔术数,当前节点的深度,网络层协议版本号,协议栈配置,zigbee协议id和超帧。

  (6)macparsebeacon(void):

处理收到的信标帧。

从信标帧中读取超帧、协议的id和版本号等,如果有与本设备不兼容的地方,则丢弃。

如果检验通过,条件符合,则以发出信标帧的传感器节点作为父节点。

设置完成之后发出接收到信标帧的确认信息。

  (7)macparseassocResponse(void):

处理协调器对加入请求的返回。

如果协调器同意加入,则从中获取分配给自已的短地址,并将自已的panid设置成和协调器相同。

记录父节点的长地址并发送加入成功的确认信息。

  (8)maccheckdataRejection(void):

判断是否对接收到的信息进行处理。

对RFd来说,只有由父节点发出的数据帧才会被接受;对路由器来说,只接受来自与自已关联的传感器节点的数据帧。

  mac的有限状态机设计为主状态机macFsm、发送状态机txFsm和接收状态机

  RxFsm三个。

发送状态机txFsm和接收状态机RxFsm完成对数据包的提交和下发,并完成一些应答等一般请求。

  接收状态机RxFsm的设计如图3-12所示。

如果物理层没有数据提交上来,则保持空闲状态。

物理层提交的数据包有三种形式:

应答帧、数据帧和请求帧。

对于应答帧,RxFsm可直接处理,不需要交给主状态机macFsm;对于数据帧,如果通过验证确信是发送给本节点的,刚提交给网络层处理,并在mac层将数据包释放,等待处理下一个数据包(注意:

不能释放数据包的存储区域,因为网络层处理时会从此区域中读取数据);对于请求帧,RxFsm没有办法处理,将交由主状态机macFsm决定,如果macFsm已处理,则释放该数据包,清除存储区域。

  图3-12mac层接收状态机RxFsm

  发送状态机txFsm的设计如图3-13所示。

每次只允许一个数据包处一在发送状态,当之前发出的数据包返回状态不为成功时,或者物理层协议栈处于忙碌状态,txFsm会保持空闲状态;如果启动时发生错误,会尝试重发数据,直至超过设定的最大重试次数,则不再处理,进入空闲状态;在启动正常的情况下,如果收到应答帧或数据帧不要求应答,则直接进入空闲状态,如果超时后尚未收到应答帧,则返回相应指示后进入空闲状态。

  图3-13mac层发送状态机txFsm

  主状态机macFsm的设计如图3-14所示,主要是对命令和一些请求作出响应。

该状态机负责发出各种类型的命令帧和数据帧。

  接收到命令后,状态机进入命令启动状态,如果是上层要求发送普通的数据帧,则交给底层等待发送,确定发送完成后,回到空闲状态;如果收到的是错误的服务请求,也即虚拟服务,则不作处理,直接回到空闲状态。

  接收到的其它类型信令帧主要分为三种:

信标帧、孤儿节点请求加入帧和网络请求加入帧。

  如果网络中有节点由于掉电等原因而重启,子节点将会断开与之前绑定的父节点之间的连接,成为孤儿节点,这时需要重新与父节点进行绑定,发出的信令帧即孤儿请求。

收到孤儿请求后,状态机进入处理孤儿请求状态,如果该孤儿节点的地址不在父节点的邻居表中,说明这不是该父节点的孤儿,父节点不予处理,进入空闲状态;如果是该父节点的孤儿,则记录该孤儿节点的地址,发出应答,等待孤儿节点的回应。

不论是收到孤儿节点成功加入的回应或者超时后仍没收到孤儿节点的应答,状态机均进入空闲状态。

  如果收到的是信标帧,说明有RFd希望加入网络。

RFd由于不能作为父节点,对收到的消息不予处理。

FFd和Router收到信标帧后从mac_pib中查找

  macassociationpermit参数,这个参数决定了该节点是否允许其它节点加入,如果可以有节点加入,就进入发送信标响应的状态,然后将自已的panid和短地址等信息发送给请求加入的节点。

  另外一种信令帧是网络请求加入帧,用于从星形网络建立树簇网络的过程中。

RFd不具有建立网络间连接的能力,收到这种信令帧后不作处理。

FFd和Router收到加入请求后,从mac_pib中查找控制本节点是否可以加入其它网络的

  macassociationpermit参数,若参数设置为允许加入,则进入发送加入响应的状态。

然后以信令帧的来源长地址为目标地址,将自己的panid发送给请求加入的节点,并进入等待加入请求回应的状态。

这时不论在限定时间内收到了应答或者由于超时等因素致使加入失败,状态机都会进入空闲状态,等待下一个任务。

  图3-14mac层主状态机macFsm

  mac层使用csma-ca机制解决信道访问时的冲突,需要做信道选择和连接建立等工作,同时还要处理和维护保护时隙(gts,guaranteedtimeslot),检测冲突和解决,任务繁重,是协议栈中很关键的一层。

  3.4.5网络层nwk

  网络层nwk通过使用mac层提供的各种功能,保证正确完成建立和维护网络的任务,实现路由功能,完成数据帧的多跳传输。

  nwk层的主要函数有:

  

(1)nwkinit(void):

网络层初始化函数。

使网络层进入空闲状态,等待接收任务。

  

(2)nwktxdata(boolfwdFlag):

发送数据包函数,有一个fwdFlag参数,用于标识该数据包是否为单纯的转发数据。

如果不是转发数据,就加上网络层的帧头交给mac层进行发送;如果是单纯的转发数据,则已经有正确的网络层帧头,不作附加处理,直接发送。

  (3)nwkparsehdr(byte*ptr):

从接收到的数据包中读取网络层帧头信息。

获得数据包的来源地址和目标地址。

  (4)nwkcopyFwdpkt(void):

对需要转发的数据包进行拷贝。

从栈存储区拷贝到发送缓存中。

  (5)nwkRxbuffFull(void):

判断网络层的接收缓存是否已经填满。

  (6)nwkgetRxpacket(void):

获取接收到的数据包,返回数据包的起始地址供读取。

  (7)nwkFindparentsaddR(saddRchildsaddR):

根据一个路由器的子节点短地址,找出其父节点的短地址。

网络中各节点的短地址按照其所在的层次深度进行分配,每个FFd可以拥有的子节点数是一定的,同一层次的FFd短地址以这个数目为公差形成等差数列。

因此,根据子节点的短地址所落在的区间范围就可以确定它的父节点短地址。

  (8)nwkgethopstodest(saddRdstsaddR):

计算以dstsaddR为目标地址的消息进行间接转发时需要的跳数。

该值与当前节点和目标节点所处的网络深度有关。

网络层nwk的有限状态机设计为接收有限状态机nwkRxFsm和主状态机nwkFsm两个。

因为接收到的数据包有多种形式,需要进行不同的处理,相对而言,要发送的数据包无须进行附加处理,所以没有为发送设计有限状态机。

  接收有限状态机nwkRxFsm的设计如图3-15所示。

有上层(zigbee协议栈各层的功能)应用调用网络层服务时,进入命令开始状态,由于目前的设计还不支持对命令帧的处理,所以在接收到命令帧后将其丢弃,回到空闲状态。

接收到的数据帧分为两种:

一种是发给自已的数据包,一种是可能需要转发的数据包。

如果数据帧的目标地址是当前节点,则提交至上层的应用层进行处理,提交成功后进入空闲状态;如果是需要路由的节点,在当前节点的转发缓存已经为满的情况下没有办法存储新的数据帧,将其丢弃,对于可转发的数据帧还要查看其半径域,如果为零或者超过了规定的最大跳数,都将被丢弃,只有符合条件的数据帧会被主状态机nwkFsm转发出去。

  图3-15网络层接收有限状态机nwkRxFsm

  网络层主状态机nwkFsm的设计如图3-16所示。

网络层的主要任务分为数据转发和执行网络建立和维护命令两大类。

对于收到的数据包,如果发现是一般性数据帧,则交给mac层进行发送。

命令帧又主要分为一般性命令、建立网络命令和加入网络命令三种。

  加入网络的命令要进行区分,与第一次加入网络相比,重新加入网络省去了初始化的步骤,并向mac发出孤儿节点发现原语,等待mac层进行处理。

  对于组建网络的命令,不同角色的节点将有不同的处理过程。

对于协调器来说,它是网络中的第一个节点,经过简单的设置之后,即可成功建立网络,进入空闲状态。

对于非协调器,将向各信道中发出信标进行扫描,收到其它节点的回应后即使用这个信道进行通信,回到空闲状态。

协议中还设定了一种强行加入的方式,在这种方式下,不发送信标请求,直接选择信道加入。

加入信道后,不论是否在设定时间内收到应答,都会回到空闲状态,等待接受新的任务。

  图3-16网络层主状态机macFsm

  篇二:

zigbee协议栈各层分析

  一phy:

物理层通过射频固件和硬件提供mac层与物理无线信道之间的接口。

  两个物理层:

一868/915mhz频带:

20kb/s40kb/s

  二2.4ghz频带:

250kb/s

  三个频带被分为27个频率信道,868mhz支持0信道。

915mzh支持10个信道2.4ghz支持16个信道。

  二,mac:

mac模块实现ieee802.15.4标准的mac层服务,包括信标帧的产生与同步、设备的关联与解除关联、实现csma/cd的介质访问方法等,使得在两个mac实体间建立一个可靠的通信链路。

  它的核心是信道接入技术,mac层采用了csma/ca(带有冲突避免的载波侦听多路访问)的技术,简单来说,就是节点在发送数据之前先监听信道,如果信道空闲则可以发送数据,否则就要进行随机的退避,即延迟一段随机时间,然后再进行监听,通过这种信道接入技术,所有节点竞争共享同一个信道。

  三,nwk:

zigbee网络层提供安全管理,信息代理,路由管理,网络管理。

其主要功能是路由,路由算法是它的核心。

  四,应用层包括包括了aps、aF和zdo几部分,主要规定了一些和应用相关的功能,包括端点(endpoint)的规定,还有绑定(binding)、服务发现和设备发现

  aps:

1.维护绑定表,即根据服务和需求同时匹配两个设备的功能。

  2.绑定设备之间转发信息。

  3.组地址定义,删除和过滤组地址信息

  4.从64位ieee地址到16位网络地址的地址映射

  5分割,重组和可靠的数据传输

  zdo:

1.定义网络中的设备的角色(协调器或终端设备)

  2.发现网络上的设备,决定他们提供哪种应用服务

  3.初始化、响应绑定请求

  4.建立网络设备之间的一个安全关系。

  五,zigbee设备

  

(1)协调器:

负责启动整个网络。

它也是网络的第一个设备。

协调器选择一个信道和一个网络id,随后启动整个网络。

协调器的角色主要涉及网络的启动和配置。

一旦这些都完成后,协调器的工作就像一个路由器。

具有建立网络,串口通信能力,只能全速运行,不能工作在休眠方式。

  

(2)路由器:

允许其他设备加入网络,多跳路由和协助它自己的终端设备的通讯。

一般路由器希望是一直处于活动状态,因此它必须使用主电源供电。

在协调器建立网络后,Router能维持这个网络。

  (3)终端设备:

没有特定的维持网络结构的责任,它可以睡眠或者唤醒,因此它可以可以是一个电池供电设备。

工作在休眠方式可以降低功耗。

  (4)各个设备的程序对应的是coordinatoreb、Routereb、enddeviceeb三个程序文件,分别进行编译。

  六,hal模块直接操作外设寄存器,完成外设的驱动程序

  mt(监控测试)模块为上位机提供通过串口监测节点运行情况的方式。

  篇三:

zigbee协议栈中文简介

  zigbee协议栈中文说明

  1.概述

  1.1解析zigbee堆栈架构

  zigbee堆栈是在ieee802.15.4标准基础上建立的,定义了协议的mac和phy层。

zigbee设备应该包括ieee802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的phy和mac层,以及zigbee堆栈层:

网络层(nwk)、应用层和安全服务提供层。

图1-1给出了这些组件的概况。

  1.1.1zigbee堆栈层

  每个zigbee设备都与一个特定模板有关,可能是公共模板或私有模板。

这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。

公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。

  设备是由模板定义的,并以应用对象(applicationobjects)的形式实现(见图1-1)。

每个应用对象通过一个端点连接到zigbee

  堆栈的余下部分,它们都是器件中可寻址的组件

  图1-1zigbe堆栈框架

  从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。

  端点之间的通信是通过称之为簇的数据结构实现的。

这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。

图1-1-2就是设备及其接口的一个例子:

  图1-1-2

  每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。

一共有二个特殊的端点,即端点0和端点255。

端点0用于整个zigbee设备的配置和管理。

应用程序可以通过端点0与zigbee堆栈的其它层通信,从而实现对这些层的初始化和配置。

附属在端点0的对象被称为zigbee设备对象(zd0)。

端点255用于向所有端点的广播。

端点241到254是保留端点。

  所有端点都使用应用支持子层(aps)提供的服务。

aps通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。

  aps使用网络层(nwk)提供的服务。

nwk负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。

应用层可以通过zigbee设备对象(zd0)对网络层参数进行配置和访问。

  1.1.2802.15.4mac层

  ieee802.15.4标准为低速率无线个人域网(lR-wpan)定义了osi模型开始的两层。

phy层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450mhz波段和868/915mhz波段。

2450mhz波段射频可以提供250kbps的数据速率和16个不同的信道。

868/915mhz波段中,868mhz支持1个数据速率为20kbps的信道,915mhz支持10个数据速率为40kbps的信道。

  mac层负责相邻设备间的单跳数据通信。

它负责建立与网络的同步,支持关联和去关联以及mac层安全:

它能提供二个设备之间的可靠链接。

  1.1.3关于服务接入点

  zigbee堆栈的不同层与802.15.4mac通过服务接入点(sap)进行通信。

sap是某一特定层提供的服务与上层之间的接口。

  zigbee堆栈的大多数层有两个接口:

数据实体接口和管理实体接口。

数据实体接口的目标是向上层提供所需的常规数据服务。

管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。

  1.1.4zigbee的安全性

  安全机制由安全服务提供层提供。

然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。

  每一层(mac、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。

ssp是通过zd0进行初始化和配置的,要求实现高级加密标准(aes)。

zigbee规范定义了信任中心的用途。

信任中心是在网络中分配安全钥匙的一种令人信任的设备。

  1.1.5zigbee堆栈容量和zigbee设备

  根据zigbee堆栈规定的所有功能和支持,我们很容易推测zigbee堆栈实

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2