当前位置:文档之家› Z-Stack 开发指南

Z-Stack 开发指南

Z-Stack 开发指南
Z-Stack 开发指南

2.Z igBee

2.1设备类型(Device Types)

在ZigBee网络中存在三种逻辑设备类型:Coordinator(协调器),Router(路由器)和End-Device(终端设备)。ZigBee网络由一个Coordinator以及多个Router 和多个End_Device组成。

上图是一个简单的ZigBee网络示意图。其中黑色节点为Coordinator,红色节点为Router,白色节点为End-Device。

2.1.1Coordinator(协调器)

协调器负责启动整个网络。它也是网络的第一个设备。协调器选择一个信道和一个网络ID(也称之为PAN ID,即Personal Area Network ID),随后启动整个网络。

协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。

注意,协调器的角色主要涉及网络的启动和配置。一旦这些都完成后,协调器的工作就像一个路由器(或者消失go away)。由于ZigBee网络本身的分布特性,因此接下来整个网络的操作就不在依赖协调器是否存在。

2.1.2Router(路由器)

路由器的功能主要是:允许其他设备加入网络,多跳路由和协助它自己的由电池供电的儿子终端设备的通讯。

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

但是当使用树群这种网络模式时,允许路由间隔一定的周期操作一次,这样就可以使用电池给其供电。

2.1.3End-Device(终端设备)

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

通常,终端设备对存储空间(特别是RAM的需要)比较小。

注意:在Z-Stack 1.4.1中一个设备的类型通常在编译的时候通过编译选项(ZDO_COORDINATOR 和RTR_NWK)确定。所有的应用例子都提供独立的项目文件来编译每一种设备类型。

2.2栈配置(Stack Profile)

栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置。ZigBee联盟定义了这些由栈配置组成的栈参数。

网络中的所有设备必须遵循同样的栈配置。

为了促进互用性这个目标,ZigBee联盟为ZigBee2006规范定义了栈配置。所有遵循此栈配置的设备可以在其他开发商开发的遵循同样栈配置的网络中。

3.寻址(Addressing)

3.1地址类型(Address types)

ZigBee设备有两种类型的地址。一种是64位IEEE地址,即MAC地址,另一种是16位网络地址。

64位地址使全球唯一的地址,设备将在它的生命周期中一直拥有它。它通常由制造商或者被安装时设置。这些地址由IEEE来维护和分配。

16为网络地址是当设备加入网络后分配的。它在网络中是唯一的,用来在网络中鉴别设备和发送数据。

3.2网络地址分配(Network address assignment)

ZigBee使用分布式寻址方案来分配网络地址。这个方案保证在整个网络中所有分配的地址是唯一的。这一点是必须的,因为这样才能保证一个特定的数据包能够发给它指定的设备,而不出现混乱。同时,这个寻址算法本身的分布特性保证设备只能与他的父辈设备通讯来接受一个网络地址。不需要整个网络范围内通讯的地址分配,这有助于网络的可测量性。

在每个路由加入网络之前,寻址方案需要知道和配置一些参数。这些参数是

MAX_DEPTH,MAX_ROUTERS和MAX_CHILDREN。这些参数是栈配置的一部分,ZigBee2006协议栈已经规定了这些参数的值:MAX_DEPTH = 5,MAX_ROUTERS = 6和MAX_CHILDREN = 20。

MAX_DEPTH决定了网络的最大深度。协调器(Coordinator)位于深度0,它的儿子位于深度1,他的儿子的的儿子位于深度2,以此类推。MAX_DEPTH参数限制了网络在物理上的长度。

MAX_CHILDREN决定了一个路由(Router)或者一个协调器节点可以处理的儿子节点的最大个数。

MAX_ROUTER决定了一个路由(Router)或者一个协调器(Coordinator)节点可以处理的具有路由功能的儿子节点的最大个数。这个参数是MAX_CHILDREN的一个子集,终端节点使用(MAX_CHILDREN – MAX_ROUTER)剩下的地址空间。

如果开发人员想改变这些值,则需要完成以下几个步骤:

首先,你要保证这些参数新的赋值要合法。即,整个地址空间不能超过216,这就限制了参数能够设置的最大值。可以使用projects\ZStack\tools文件夹下的CSkip.xls文件来确认这些值是否合法。当在表格中输入了这些数据后,如果你的数据不合法的话就会出现错误信息。

当选择了合法的数据后,开发人员还要保证不再使用标准的栈配置,取而代之的是网络自定义栈配置(例如:在nwk_globals.h文件中将STACK_PROFILE_ID 改为NETWORK_SPECIFIC)。然后nwk_globals.h文件中的MAX_DEPTH参数将被设置为合适的值。

此外,还必须设置nwk_globals.c文件中的Cskipchldrn数组和CskipRtrs数组。这些数组的值由MAX_CHILDREN和MAX_ROUTER构成。

3.3Z‐Stack寻址(Addressing in z‐stack)

为了向一个在ZigBee网络中的设备发送数据,应用程序通常使用AF_DataRequest()函数。数据包将要发送给一个afAddrType_t(在ZComDef.h 中定义)类型的目标设备。

typedef struct

{

union

{

uint16 shortAddr;

} addr;

afAddrMode_t addrMode;

byte endPoint;

} afAddrType_t;

注意,除了网路地址之外,还要指定地址模式参数。目的地址模式可以设置为以下几个值:

typedef enum

{

afAddrNotPresent = AddrNotPresent,

afAddr16Bit = Addr16Bit,

afAddrGroup = AddrGroup,

afAddrBroadcast = AddrBroadcast

} afAddrMode_t;

因为在Zigbee中,数据包可以单点传送(unicast),多点传送(multicast)或者广播传送,所以必须有地址模式参数。一个单点传送数据包只发送给一个设备,多点传送数据包则要传送给一组设备,而广播数据包则要发送给整个网络的所有节点。这个将在下面详细解释。

3.3.1单点传送(Unicast)

Uicast是标准寻址模式,它将数据包发送给一个已经知道网络地址的网络设备。将afAddrMode设置为Addr16Bit并且在数据包中携带目标设备地址。3.3.2间接传送(Indirect)

当应用程序不知道数据包的目标设备在哪里的时候使用的模式。将模式设置为AddrNotPresent并且目标地址没有指定。取代它的是从发送设备的栈的绑定表中查找目标设备。这种特点称之为源绑定。

当数据向下发送到达栈中,从绑定表中查找并且使用该目标地址。这样,数据包将被处理成为一个标准的单点传送数据包。如果在绑定表中找到多个设备,则向每个设备都发送一个数据包的拷贝。

上一个版本的ZigBee(ZigBee04),有一个选项可以讲绑定表保存在协调器(Coordinator)当中。发送设备将数据包发送给协调器,协调器查找它栈中的绑定表,然后将数据发送给最终的目标设备。这个附加的特性叫做协调器绑定(Coordinator Binding)。

3.3.3广播传送(broadcast)

当应用程序需要将数据包发送给网络的每一个设备时,使用这种模式。地址模式设置为AddrBroadcast。目标地址可以设置为下面广播地址的一种:NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——数据包将被传送到网络上的所有设备,包括睡眠中的设备。对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或者消息超时(NWK_INDIRECT_MSG_TIMEOUT在f8wConifg.cfg中)。

NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——数据包将被传送到网络上的所有在空闲时打开接收的设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。

NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——数据包发送给所有的路由器,包括协调器。

3.3.4组寻址(Group Addressing)

当应用程序需要将数据包发送给网络上的一组设备时,使用该模式。地址模

式设置为afAddrGroup并且addr.shortAddr设置为组ID。

在使用这个功能呢之前,必须在网络中定义组。(参见Z-stack API文档中的aps_AddGroup()函数)。

注意组可以用来关联间接寻址。再绑定表中找到的目标地址可能是是单点传送或者是一个组地址。另外,广播发送可以看做是一个组寻址的特例。

下面的代码是一个设备怎样加入到一个ID为1的组当中:

aps_Group_t group;

// Assign yourself to group 1

group.ID = 0x0001;

https://www.doczj.com/doc/bb17711684.html,[0] = 0; // This could be a human readable string

aps_AddGroup( SAMPLEAPP_ENDPOINT, &group );

3.4重要设备地址(Important Device Adresses)

应用程序可能需要知道它的设备地址和父亲地址。使用下面的函数获取设备地址(在ZStack API中定义):

z NLME_GetShortAddr()——返回本设备的16位网络地址

z NLME_GetExtAddr()—— 返回本设备的64位扩展地址使用下面的函数获取该设备的父亲设备的地址:

z NLME_GetCoordShortAddr()——返回本设备的父亲设备的16位网络地址

z NLME_GetCoordExtAddr()—— 返回本设备的父亲设备的64位扩展地址

4.绑定(Binding)

绑定是一种两个(或者多个)应用设备之间信息流的控制机制。在ZigBee2006发布版本中,它被称为资源绑定,所有的设备都必须执行绑定机制。

绑定允许应用程序发送一个数据包而不需要知道目标地址。APS层从它的绑定表中确定目标地址,然后将数据继续向目标应用或者目标组发送。

注意:在ZigBee的1.0版本中,绑定表是保存在协调器(Coordinator当中)。现在所有的绑定记录都保存在发送信息的设备当中。

4.1建立绑定表(Building a Binding Table)

有三种方法可以建立一个绑定表:

z Zigbee Device Object Bind Request——一个启动工具可以告诉设备创建一个绑定记录

z Zigbee Device Object End Device Bind Request——两个设备可以告诉协调器它们想要建立一个绑定表记录。协调器来协调并在两个设备中创建

绑定表记录。

z Device Application——一个设备上的应用程序建立或者管理一个绑定表4.1.1ZigBee Device Object Binding Request

任何一个设备都可以发送一个ZDO信息给网络中的另一个设备,用来建立绑定表。称之为援助绑定,它可以为一个发送设备创建一个绑定记录。

4.1.1.1启动申请(The Commissioning Application)

一个应用程序可以通过ZDP_BindReq()函数(在ZDProfile.h),并在绑定表中包含两个请求(地址和终点)以及想要的群ID。第一个参数(目标dstAddr)是绑定源的短地址即,16位网络地址。

确定你已经在ZDConfig.h允许了这个功能(ZDO_BIND_UNBIND_REQUEST)。

你也可以使用ZDP_UnbindReq()用同样的参数取消绑定记录。

目标设备发回ZigBee Device Object Bind 或者Unbind Response信息,该信息是ZDO代码根据动作的状态,通过调用ZDApp_BindRsq()或者ZDApp_UnbindRsq()函数来分析和通知ZDApp.c的。

对于绑定响应,从协调器返回的状态将是ZDP_SUCCESS,ZDP_TABLE_FULL 或者ZDP_NOT_SUPPORTED。

对于解除绑定响应,从协调器返回的状态将是ZDP_SUCCESS,ZDP_NO_ENTRY或者ZDP_NOT_SUPPORTED。

4.1.1.2ZigBee Device Object End Device Bind Request

这个机制是在指定的时间周期(timeout period)内,通过按下选定设备上的按钮或者类似的动作来绑定。协调器在指定的时间周期内,搜集终端设备的绑定请求信息,然后以配置ID(Profile ID)和群ID(Cluster ID)协议为基础,创建一个绑定表记录作为结果。默认的设备绑定时间周期(APS_DEFAULT_MAXBINDING_TIME)是16秒钟(在nwk_globals.h中定义)。但是将它添加到f8wConfig.cfg中,则可以更改。

在“用户指南”中的应用程序就是一个终端设备绑定的例子(在每个设备上按下SW2按键)。

你应该注意到,所有的例程都有处理关键事件的函数(例如:在TransmitApp.c中的TransmitApp_HandleKeys()函数)。这个函数调用ZDApp_SendEndDeviceBindReq()(在ZDApp.c中)。这个函数搜集所有终端节点的请求信息,然后调用ZDP_EndDeviceBindReq()函数将这些信息发送给协调器。

协调器调用函数ZDP_IncomingData()【ZDProfile.c中】函数接收这些信息,然后再调用ZDApp_ProcessEndDeviceBindReq ()【ZDObject.c中】函数分析这些信息,最后调用ZDApp_EndDeviceBindReqCB【ZDApp.c中】函数,这个函数再调用ZDO_MatchEndDeviceBind()【ZDObject.c中】函数来处理这个请求。

当收到两个匹配的终端设备绑定请求,协调器在请求设备中启动创建源绑定记录的进程。假设在ZDO终端设备中发现了匹配的请求,协调器将执行下面的

步骤:

z发送一个解除绑定请求给第一个设备。这个终端设备锁定进程,这样解除绑定被首先发送来去掉一个已经存在的绑定记录。

z等待ZDO解除绑定的响应,如果响应的状态是ZDP_NO_ENTRY,则发送一个ZDO绑定请求在源设备中创建一个绑定记录。如果状态是

ZDP_SUCCESS,则继续前进到第一个设备的群ID。

z等待ZDO绑定响应,如果收到了,则继续前进到第一个设备的下一个群ID。

z当地一个设备完成后,用同样的方法处理第二个设备。

z当第二个设备也完成之后,发送ZDO 终端设备绑定请求消息给两个设备。

4.1.1.3Device Application Binding Manager

另一种进入设备绑定记录的方式是应用自己管理绑定表。这就意味着应用程序需要通过调用下面的绑定管理函数在本地进入并且删除绑定记录:z bindAddEntry()——在绑定表中增加一个记录

z bindRemoveEntry()——从绑定表中删除一个记录

z bindRomoveClusterIdFromList()——从一个存在的绑定表记录中删除一个群ID

z bindAddClusterIdT oList()——向一个已经存在的绑定记录中增加一个群ID

z bindRemoveDev()——删除所有地址引用的记录

z bindRemoveSrcDev()——删除所有源地址引用的记录

z bindUpdateAddr()——将记录更新为另一个地址

z bindFindExisting()——查找一个绑定表记录

z bindIsClusterIdInList()——在表记录中检查一个已经存在的群ID

z bindNumBoundT o()——拥有相同地址(源或者目的)的记录的个数

z bindNumEntries()——表中记录的个数

z bindCapacity()——最多允许的记录个数

z bindWriteNV()——在NV中更新表

4.1.2配置源绑定(Configuring Source Binding)

为了在你的设备中使能源绑定在f8wConfig.cfg文件中包含REFLECTOR编译标志。同时在f8wConfig.cfg文件中查看配置项目NWK_MAX_BINDING_ENTRIES 和MAX_BINDING_CLUSTER_IDS。NWK_MAX_BINDING_ENTRIES是限制绑定表中的记录的最大个数,MAX_BINDING_CLUSTER_IDS是每个绑定记录的群ID的最大个数。

绑定表在静态RAM中(未分配),因此绑定表中记录的个数,每条记录中群ID 的个数都实际影响着使用RAM的数量。每一条绑定记录是8字节多(MAX_BINDING_CLUSTER_IDS * 2字节)。除了绑定表使用的静态RAM的数量,绑定配置项目也影响地址管理器中的记录的个数。

5.路由(Routing)

5.1概述(Overview)

A mesh network is described as a network in which the routing of messages is performed as a decentralized,cooperative process involving many peer devices routing on each others’ behalf.

路由对与应用层来说是完全透明的。应用程序只需简单的向下发送去往任何设备的数据到栈中,栈会负责寻找路径。这种方法,应用程序不知道操作是在一个多跳的网络当中的。

路由还能够自愈ZigBee网络,如果某个无线连接断开了,路由功能又能自动寻找一条新的路径避开那个断开的网络连接。这就极大的提高了网络的可靠性,同时也是ZigBee网络的一个关键特性。

5.2路由协议(Routing Protocol)

ZigBee执行基于用于AODV专用网络的路由协议。简化后用于传感器网络。ZigBee路由协议有助于网络环境有能力支持移动节点,连接失败和数据包丢失。

当路由器从他自身的应用程序或者别的设备那里收到一个单点发送的数据包,则网络层(NWK Layer)根据一下程序将它继续传递下去。如果目标节点是它相邻路由器中的一个,则数据包直接被传送给目标设备。否则,路由器将要检索它的路由表中与所要传送的数据包的目标地址相符合的记录。如果存在与目标地址相符合的活动路由记录,则数据包将被发送到存储在记录中的下一级地址中去。如果没有发现任何相关的路由记录,则路由器发起路径寻找,数据包存储在缓冲区中知道路径寻找结束。

ZigBee终端节点不执行任何路由功能。终端节点要向任何一个设备传送数据包,它只需简单的将数据向上发送给它的父亲设备,由它的父亲设备以它自己的名义执行路由。同样的,任何一个设备要给终端节点发送数据,发起路由寻找,终端节的的父亲节点都已它的名义来回应。

注意ZigBee地址分配方案使得对于任何一个目标设备,根据它的地址都可以得到一条路径。在Z-Stack中,如果万一正常的路径寻找过程不能启动的话(通常由于缺少路由表空间),那么Z-Stack拥有自动回退机制。

此外,在Z-Stack中,执行的路由已经优化了路由表记录。通常,每一个目标设备都需要一条路由表记录。但是,通过把一定父亲节点记录与其子所有子结点的记录合并,这样既可以优化路径也可以不丧失任何功能。

ZigBee路由器,包括协调器执行下面的路由函数:(i)路径发现和选择;(ii)路径保持维护;(iii)路径期满。

5.2.1路径的发现和选择(Route Discovery and Selection)

路径发现是网络设备凭借网络相互协作发现和建立路径的一个过程。路由发

现可以由任意一个路由设备发起,并且对于某个特定的目标设备一直执行。路径发现机制寻找源地址和目标地址之间的所有路径,并且试图选择可能的最好的路径。

路径选择就是选择出可能的最小成本的路径。每一个结点通常持有跟它所有邻接点的“连接成本(link costs)”。通常,连接成本的典型函数是接收到的信号的强度。沿着路径,求出所有连接的连接成本总和,便可以得到整个路径的“路径成本”。路由算法试图寻找到拥有最小路径成本的路径。

路径通过一系列的请求和回复数据包被发现。源设备通过向它的所有邻接节点广播一个路由请求数据包,来请求一个目标地址的路径。当一个节点接收到RREQ数据包,它依次转发RREQ数据包。但是在转发之前,它要加上最新的连接成本,然后更新RREQ数据包中的成本值。这样,沿着所有它通过的连接,RREQ 数据包携带着连接成本的总和。这个过程一直持续到RREQ数据包到达目标设备。通过不同的路由器,许多RREQ副本都将到达目标设备。目标设备选择最好的RREQ数据包,然后发回一个路径答复数据包(a Route Reply)RREP给源设备。

RREP数据包是一个单点发送数据包,它沿着中间节点的相反路径传送直到它到达原来发送请求的节点为止。

一旦一条路径被创建,数据包就可以发送了。当一个结点与它的下一级相邻节点失去了连接(当它发送数据时,没有收到MAC ACK),该节点向所有等待接收它的RREQ数据包的节点发送一个RERR数据包,将它的路径设为无效。各个结点根据收到的数据包RREQ、RREP或者RERR来更新它的路由表。

5.2.2路径保持维护(Route maintenance)

网状网提供路径维护和网络自愈功能。中间节点沿着连接跟踪传送失败,如果一个连接被认定是坏链,那么上游节点将针对所有使用这条连接的路径启动路径修复。节点发起重新发现直到下一次数据包到达该节点,标志路径修复完成。如果不能够启动路径发现或者由于某种原因失败了,节点则向数据包的源节点发送一个路径错误包(RERR),它将负责启动新路径的发现。这两种方法,路径都自动重建。

5.2.3路径期满(Route expiry)

路由表为已经建立连接路径的节点维护路径记录。如果在一定的时间周期内,没有数据通过沿着这条路径发送,这条路径将被表示为期满。期满的路径一直保留到它所占用的空间要被使用为止。这样,路径在绝对不使用之前不会被删除掉的。在配置文件f8wConfig.cfg文件中配置自动路径期满时间。设置ROUTE_EXPIRY_TIME为期满时间,单位为秒。如果设置为0,则表示关闭自动期满功能。

5.3表存储(Table storage)

路由功能需要路由器保持维护一些表格。

5.3.1路由表(Routing table)

每一个路由器包括协调器都包含一个路由表。设备在路由表中保存数据包参与路由所需的信息。每一条路由表记录都包含有目的地址,下一级节点和连接状态。所有的数据包都通过相邻的一级节点发送到目的地址。同样,为了回收路由表空间,可以终止路由表中的那些已经无用的路径记录。

路由表的容量表明一个设备路由表拥有一个自由路由表记录或者说它已经有一个与目标地址相关的路由表记录。在文件“f8wConfig.cfg”文件中配置路由表的大小。将MAX_RTG_ENTRIES设置为表的大小(不能小于4)。

5.3.2路径发现表(Route discovery table)

路由器设备致力于路径发现,保持维护路径发现表。这个表用来保存路径发现过程中的临时信息。这些记录只在路径发现操作期间存在。一旦某个记录到期,则它可以被另一个路径发现使用。这个值决定了在一个网络中,可以同时并发执行的路径发现的最大个数。这个可以在f8wConfig.cfg文件中配置MAX_ RREQ_ENTRIES。

5.4路径设置快速参考(Routing Settings Quick reference)

设置路由表大小MAX_RTG_ENTRIES,这个值不能小于4 (f8wConfig.cfg

文件)

设置路径期满时间ROUTE_EXPIRY_TIME,单位秒。设置为零则关闭路径期满

(f8wConfig.cfg文件)

设置路径发现表大小MAX_RREQ_ENTRIES,网络中可以同时执行的路径发现操作的个数

6.Z DO消息请求(ZDO Message requests)

ZDO模块提供功能用来发送ZDO服务发现请求消息,接收ZDO服务发现回复消息。下图描述了应用程序发送IEEE 地址请求和接收IEEE地址回复的函数调用。

ZDO IEEE地址请求及应答

下面这个例子,一个应用程序想知道什么时候一个新的设备加入网络。一个应用想要接收所有ZDO设备的通知信息。

ZDO Device Announce delivered to an application

7.便携式设备(Portable Devices)

在ZigBee2006中终端节点就是便携式的设备。这就意味着当一个终端节点没有侦听到它的父节点回应(超出范围或者无法胜任),它将试着重新加入网络(加入到另一个新的父亲节点)。没有设置或者编译标志位来设置这个选项。

终端节点通过巡检(MAC 数据请求)失败或者通过数据消息失败侦听它的父

亲节点都没有回应。MAX_POLL_FAILURE_RETRIES用来控制失败的敏感度。这个值可以在f8wConfig.cfg文件中修改。并且,这个值越大敏感度就越低,重新加入网络需要的时间就更长。

当网络层侦测到它的父亲节点没有回应,它将调用ZDO_SynIndicationCB()函数,这个函数将启动重新加入。重新加入过程首先对已有的父亲节点进行孤儿扫描(orphan-scan),然后扫描潜在的父亲节点并且跟它的潜在父节点加入网络。

在一个安全网络中,假设设备都拥有一个钥匙,新的钥匙不用在分发给设备。

8.端到端确认(End‐to‐end acknowledgements)

对于非广播消息,有两种基本的消息重试类型:端到端的确认(APS ACK)和单级确认(single hop acknowledgement)(MAC ACK)。MAC ACK默认情况下是一直打开的,通常能够充分保证网络的高可靠性。为了提供附加的可靠性,同时使发送设备能够得到数据包已经被发送到目的地的确认,可以使用APS ACK。

APS acknowledgement在APS层完成,是从目标设备到源设备的一个消息确认系统。源设备将保留这个消息知道目标设备发送一个APS ACK消息表明它已经收到了消息。对于每个发出的消息可以通过调用函数AF_DataRequest()的选项来使能/禁止来禁止这个功能。这个选项区域是一个位映射选项,对于将要发送的消息的选项区域或上(OR)AF_ACK_REQUEST就可以使能APS ACK。消息重试(如果APS ACK消息没有收到)的次数和重试之间的时间间隔的配置项在f8wConfig.cfg文件中。APSC_MAX_FRAME_RETRIES是APS层在放弃发送数据之前,没有收到APS ACK确认重新发送消息的次数。APSC_ACK_WAIT_DURATION_POLLED是重新发送之间的时间间隔。

9.其他(Miscellaneous)

9.1配置信道(Configuring channel)

每一个设备都必须有一个DEFAULT_CHANLIST来控制信道集合。对于一个ZigBee协调起来说,这个表格用来扫描噪音最小的信道。对于终端节点和路由器几点来说,这个列表用来扫描并加入一个存在的网络。

9.2配置PAN ID和要加入的网络(Configuring PAN ID and

network to join)

这个可选配置项用来控制ZigBee路由器和终端节点要加入那个网络。文件

f8wConfg.cfg中的ZDO_CONFIG_PAN_ID参数可以设置为一个0~0x3FFF之间的一个值。协调器使用这个值,作为它要启动的网络的PAN ID。而对于路由器节点和终端节点来说只要加入一个已经用这个参数配置了PAN ID的网络。如果要关闭这个功能,只要将这个参数设置为0xFFFF。

要更进一步控制加入过程,需要修改ZDApp.c文件中的ZDO_NetworkDiscoveryConfirmCB函数。

9.3最大有效载荷大小(Maximum payload size)

对于一个应用程序最大有效载荷的大小基于几个因素。MAC层提供了一个有效载荷长度常数102。NWK层需要一个固定头大小,一个有安全的大小和一个没有安全的大小。APS层必须有一个可变的基于变量设置的头大小,包括ZigBee 协议版本,KVP的使用和APS帧控制设置等等。最后,用户不必根据前面的要素来计算最大有效载荷大小。AF模块提供一个API,允许用户查询栈的最大有效载荷或者最大传送单元(MTU)。用户调用函数afDataReqMTU(见af.h文件),该函数将返回MTU或者最大有效载荷大小。

typedef struct

{

uint8 kvp;

APSDE_DataReqMTU_t aps;

}afDataReqMTU_t;

uint8 afDataReqMTU( afDataReqMTU_t* fields )

通常afDataReqMTU_t结构只需要设置kvp的值,这个值表明KVP是否被使用。而aps保留。

9.4离开网络(Leave Network)

ZDO管理器执行函数“ZDO_ProcessMgmtLeaveReq”,这个函数提供对“NLME-LEAVE.request”原语的访问。“NLME-LEAVE.request”原语设备移除它自身或者它的一个儿子设备。ZDO_ProcessMgmtLeaveReq根据提供给它的IEEE 地址移除设备。如果设备要移除它自己,它需等待大约5秒钟然后复位。一旦设备复位它将重新回来,并处于空闲模式。它将不在试图连接或者加入网络。如果设备要移除它的儿子设备,它将从本地的群从表(accociation table)中删除该设备。只有在它的儿子设备是个终端节点的情况下,NWK地址才会被重新使用。如果儿子节点是个路由器设备,NWK地址将不再使用。

如果一个儿子节点的父亲节点离开了网络,儿子节点依然存在于网络。

尽管“NLME-LEAVE.request”原语提供了一些可选参数,但是ZigBee2006(TI

当前的应用也一样)却限制了这些参数的使用。现在,在ZDO_ProcessMgmtLeaveReq函数中使用的可选参数(“RemoveChildren”、“Rejion”and “Silent”)都应该使用默认值。如果改变这些值,将会发生不可预料的结果。

9.5描述符(Descriptors)

ZigBee网络中的所有设备都有一个描述符,用来描述设备类型和它的应用。这个信息可以被网络中的其他设备获取。

配置项在文件ZDOConfig.h和ZDOConfig.c中定义和创建。这两个文件还包含节点,电源描述符和默认用户描述符。确认改变这些描述符来定义你的网络。

9.6非易失性存储项(Non‐volatile Memory Items)

9.6.1网络层非易失性存储器(Network Layer Non‐Volatile

Memory)

ZigBee设备有许多状态信息需要被存储到非易失性存储空间中,这样能够让设备在意外复位或者断电的情况下复原。否则它将无法重新加入网络或者起到有效作用。

为了启用这个功能,需要包含NV_RESTORE编译选项。注意,在一个真正的ZigBee网络中,这个选项必须始终启用。关闭这个选项的功能也仅仅是在开发阶段使用。

ZDO层负责保存和恢复网络层最重要的信息,包括最基本的网络信息(Network Information Base NIB,管理网络所需要的最基本属性);儿子节点和父亲节点的列表;包含应用程序绑定表。此外,如果使用了安全功能,还要保存类似于帧个数这样信息。

当一个设备复位后重新启动,这类信息恢复到设备当中。如果设备重新启动,这些信息可以使设备重新恢复到网络当中。在ZDAPP_Init中,函数NLME_RestoreFromNV()的调用指示网络层通过保存在NV中的数据重新恢复网络。如果网络所需的NV空间没有建立,这个函数的调用将同时初始化这部分NV空间。

9.6.2应用的非易失性存储器(Application Non‐Volatile

Memory)

NV同样可以用来保存应用程序的特定信息,用户描述符就是一个很好的例子。NV中用户描述符ID项是ZDO_NV_USERDESC(在ZComDef.h中定义)。

在ZDApp_Init()函数中,调用函数osal_nv_item_init()来初始化用户描述符

所需要的NV空间。如果这个针对这个NV项,这个函数是第一次调用,这个初始化函数将为用户描述符保留空间,并且将它设置为默认值ZDO_DefaultUserDescriptor。

当需要使用保存在NV中的用户描述符时,就像ZDO_ProcessUserDescReq()(在ZDObject.c中)函数一样,调用osal_nv_read()函数从NV中获取用户描述符。

如果要更新NV中的用户描述符,就像ZDO_ProcessUserDescSet()(在ZDObject.c中)函数一样,调用osal_nv_write()函数更新NV中的用户描述符。

记住:NV中的项都是独一无二的。如果用户应用程序要创建自己的NV项,那么必须从应用值范围0x0201~0x0FFF中选择ID。

10.安全(Security)

10.1概述(Overview)

ZigBee security is built with the AES block cipher and the CCM mode of operation as the underlying security primitive。AES/CCM安全算法是ZigBee 联盟以外的研究人员发明的,并且广泛应用于其他通讯协议之中。

ZigBee提供如下的安全特性:

z构造安全 (Infrastructure security)

z网络访问控制(Network access control)

z应用数据安全

10.2配置(Configuration)

为了拥有一个安全的网络,首先所有的设备镜像的创建,必须将预处理标志位SECURE都置为1。在文件“f8wConfig.cfg”文件中可以找到。

接下来,必须选择一个默认的密码。这个可以通过“f8wConfig.cfg”文件中的DEFAULT_KEY来设置。理论上,这个值设置为一个随机的128位数据。

这个默认的密码可以预先配置到网络上的每个设备或者只配置到协调器上,然后分发给假如网络的所有设备。这个可以通过文件“nwk_globals.c”文件的gPreConfigKeys选项来配置。如果这个值为真,那么默认的密码将被预先配置到每一个网络设备上。如果这个值为假,那么默认的密码只需配置到协调器设备当中。注意,在以后的场合,这个密码将被分发到每一个加入网络当中的设备。因此,加入网络期间成为“瞬间的弱点”,竞争对手可以通过侦听获取密码,从而降低了网络的安全性能。

10.3网络访问控制(Network access control)

在一个安全的网络中,当一个设备加入网络时会被告知一个信任中心(协调器)。协调器拥有允许设备保留在网络或者拒绝网络访问这个设备的选择权。

信任中心可以通过任何逻辑方法决定一个设备是否允许进入这个网络中。其中一种就是信任中心只允许一个设备在很短的窗口时间加入网络。这个时可能的,举例说明,如果一个信任中心设备有一个“push ”按键。当按键按下,在这个很短的时间窗口中,它允许任何设备加入网络。否则所有的加入请求都将被拒绝。以他们的IEEE 地址为基础,一个秒级的时间段将被配置在信任中心用来接收或者拒绝设备。

这种类型的策略可以通过修改ZDSeeMgr .c 模块中的ZDSecMgrDeviceValidate()函数来实现。

10.4 更新密码(Key Updates)

信任中心可以根据自己的判断更新通用网络密码。应用程序开发人员修改网络密码更新策略。默认信任中心执行能够用来符合开发人员的指定策略。一个样例策略将按照一定的间隔周期更新网络密码。另外一种将根据用户输入来更新网络密码。ZDO 安全管理器(ZDSecMgr .c)API 通过 “ZDSecMgrUpdateNwkKey ”和“ZDSecMgrSwitchNwkKey ”提供必要的功能。“ZDSecMgrUpdateNwkKey ”允许信任中心向网络中的所有设备广播新的网络密码,此时,新的网络密码将被作为替代密码保存在所有网络设备中。一旦信任中心调用“ZDSecMgrSwitchNwkKey ”,一个全网范围的广播将触发所有的网络设备使用替代密码。

10.5 快速参考(Quick Reference) 使能安全(Enabling Security) SECURE = 1(f8wConfig.cfg)

使能预配置网络密码(Enabling Preconfig Network Key)

gPreConfigKeys = TRUE(nwk_globals.c) 设置预配置网络密码(Setting Preconfig Network Key)

设置defautlKey = {KEY}(ZDSecMgr .c) 使能/禁止信任中心的加入许可功能(Enabling/Disabling joining permission on the Trust Center)

调用函数ZDSecMgrPermitJoining()(ZDSecMgr.c) 加入期间特定设备批准(Specific device validation during joining) 修改ZDSecMgrDeviceValidate(ZDSecMgr .c)

网络密码更新(Network key updates) 调用ZDSecMgrUpdateNwkKey()和

ZDSecMgrSwitchNwkKEy()函数

(ZDSecMgr .c)

web开发知识练习(HTML标签和JavaScript脚本)

网上客服培训考核 ---阶段二HTML标签和JavaScript脚本 试题类型:HTML标签和JavaScript脚本 考核类型:开卷

1. HTML(Hypertext Markup Language超文本标记语言)是一种用来制作超文本文 档的简单标记语言。利用各种标记(tags)来标识文档的结构以及标识超链(Hyperlink)的信息 2.HTML的标记总是封装在由 < 和 > 构成的一对尖括号之中。 除少数几个转义序列之外,HTML标记忽略大小写,即等价于<TITLE> 3. <html> 标记用于Html文档的最前边,用来标识Html文档的开始。而</html>标记 恰恰相反,它放在Html文档的最后边,用来标识Html文档的结束。所有其它HTML标记和文档内容都包含在这对标记之间。 4.<head> 与 </head> 之间的头部信息通常含有 <title> 标记,用来确定HTML文件 的标题,即显示在浏览器左上角标题栏处的文字。 5. <head></head> 构成Html文档的开头部分,此标记对之间包含的是HTML文档 的头信息,如标题、说明内容等等,其中可包括<title>等标记对 6. 之间的内容是HTML文档的主体部分,在此标记对之间可包含、 、



等众多的标记它们所定义的文本、图像等将会在浏览器的框内显示出来,标记中还可以有很多属性,以下是主要的几种设置背景颜色bgcolor =”颜色码”,设置文本颜色 text = “颜色码”,设置链接颜色 link = “颜色码”,设置已使用的链接的颜色 vlink = “颜色码”,设置正在被击中的链接的颜色 alink = “颜色码”。 7. 之间的内容是HTML文档的标题,标题的显示位置不是浏览器的 文本区,而是在Web浏览器窗口最左上方的蓝色标题栏里。 8.标记对是用来创建一个段落(Paragraph),在此标记对之间加入的文 本将按照段落的格式显示在浏览器上。另外,标记还可以使用align属性,它用来说明对齐方式 9. 是典型的单标记,使用也很简单,它的功能是用来创建一个回车换行 10.
标志对用来排版大块Html段落,也用于格式化表,此标志对的用法与 标志对非常相似,同样有align对齐方式属性。 11.
 标记用于显示预格式化文本(Preformatted Text),在这对标记之 间的文本,与其他HTML文本的格式编辑方式不同 12.Html语言提供了一系列对文本中的标题进行操作的标记对: 

……
,一共有六对标题的标记对 13.用来使文本以粗体效果的形式输出; 14.用来使文本以斜体效果的形式输出; 15.用来使文本以带下划线的形式输出。 16.则用来输出加重语气文本(通常也是斜体加黑体)。 17. 是一对很有用的标记对,它可以对输出文本的字体大小、颜色进 行随意地改变,这些改变主要是通过对它的两个属性 size 和 color 的控制来实现的。 size属性用来改变字体的大小,取值范围从1到7;而color属性则用来改变文本的颜色 18. 是单标记,它通过src属性指定当前位置要插入的图像文件,标记还有alt、

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。 ◆在2.45GHz频带内定义了16个通道;在915MHz频带内定义了10个通道;在868MHz频带内定义了1个通道。 为了使供应商能够提供最低可能功耗的设备,IEEE(InstituteofElectricalandElectronicsEngineers,电气及电子工程师学会)定义了两种不同类型的设备:一种是完整功能设备(full.functionaldevice,FFD),另一种是简化功能设备

2020年Zigbee协议栈中文说明免费

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。 端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图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.2 80 2.15.4 MAC层 IEEE 802.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.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。 1.1.4 ZigBee的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用

TI_Z-stack协议栈开发环境和工作流程

TI Z-stack协议栈开发环境和工作流程 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。 图 ZigBee节点开发环境 TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embed ded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层:API(Application Programming Interface),HAL (Hardw are Abstract Layer),MAC(Media Access Control), NWK(Zigbee Networ k Layer),OSAL(Operating System Abstract System),Security,Servic e,ZDO(Zigbee Device Objects)。使用IAR打开工程文件SampleApp.eww后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,

javaweb基础知识整理

一、TOMCAT服务器的安装与配置 1.常见服务器: WebLogic(BEA)、webSphere(IBM)、Tomcat(Apache) 2.Tomcat 的下载与安装 下载地址:https://www.doczj.com/doc/bb17711684.html,/ 安装目录不能包含中文和空格 JAVA_HOME环境变量指定Tomcat运行时所要用的jdk所在的位置,注意,配到目录就行了,不用指定到bin。 端口占用问题:netstat -ano命令查看端口占用信息 Catalina_Home环境变量:startup.bat启动哪个tomcat由此环境变量指定,如果不配置则启动当前tomcat,推荐不要配置此环境变量。 3.Tomcat的目录结构 bin--存放tomcat启动关闭所用的批处理文件 conf--tomcat的配置文件,最终要的是server.xml *实验:修改servlet.xml,更改tomcat运行所在的端口号,从8080改为80 lib--tomcat运行所需jar包 logs--tomcat运行时产生的日志文件 temp--tomcat运行时使用的临时目录,不需要我们关注 webapps--web应用所应存放的目录 work--tomcat工作目录,后面学jsp用到 4.虚拟主机 一个真实主机可以运行多个网站,对于浏览器来说访问这些网站感觉起来就像这些网站都运行在自己的独立主机中一样,所以,我们可以说这里的每一个网站都运行在一个虚拟主机上,一个网站就是一个虚拟主机。 4.1配置虚拟主机 在server.xml中标签下配置,其中name属性指定虚拟主机名,appBase指定虚拟主机所在的目录只在servlet.xml中配置Hosts,还不能使其他人通过虚拟主机名访问网站,还需要在DNS服务器上注册一把,我们可以使用hosts文件模拟这个过程。 默认虚拟主机:在配置多个虚拟主机的情况下,如果浏览器使用ip地址直接访问网站时,该使用哪个虚拟主机响应呢?可以在标签上设置defaultHost来指定。 5.web应用 web资源不能直接交给虚拟主机,需要按照功能组织用目录成一个web应用再交给虚拟主机管理。 5.1web应用的目录结构 web应用目录 | - html、css、js、jsp静态资源和JSP文件都可以直接放置在web应用的目录下,直接放在web应用下的内容,浏览器可以直接访问到 | - WEB-INF 可以没有,但是最好有,如果有则一定要保证他的目录结构是完整的。放置在WEB-INF目录下的所有资源浏览器没有办法直接进行访问。 | - classes动态web资源运行时的class文件要放在这个目录下。 | - lib 动态web资源运行时所依赖的jar包要放在这个目录下。 | - web.xml整个web应用的配置文件,配置主页/Servlet的映射/过滤器监听器的配置都需要依赖这个文件进行。 5.2web.xml文件的作用 某个web资源配置为web应用首页 将servlet程序映射到某个url地址上 为web应用配置监听器

TI_zigbee协议栈结构分析应用

无线盛世《快速进入ZB世界》
Ver:1

进入Zigbee世界的准备工作
§ 首先,我们需具备一些硬件设备及平台。以下 我就罗列一下Zigbee开发基本工具: § 计算机:不管是设计电路还是编程开发都是离 不开它的。 § Zigbee开发板:对于初学者来说,Zigbee开发 板无疑是最佳选择。有了开发板,你可以在我 们成熟设计的基础上学习或者做自己的设计。 § Zigbee模块:集MCU,RF,天线设计于一体 的Zigbee模块。使用它,我们可省去设计天线 及IC周边电路设计的复杂工作。

进入Zigbee世界的准备工作
§ Zigbee仿真器:是集烧写程序、在线编程和在线仿真 功能于一身的开发过程工作中必不可少的开发工具。 编程器既能对CC243x芯片(其实包括TI产品中的CC 系列的大部分芯片)进行烧写程序(hex标准文件程序 ),也能对CC243x芯片进行在线编程和仿真,让我们 能方便地在线调试开发,从而大大地提高了开发效率 。 § Zigbee协议分析仪:ZigBee的设计开发者必不可少的 工具!ZigBee协议分析仪具有广泛的功能,包括:分 析以及解码在PHY、MAC、NETWORK/SECURITY、 APPLICATION FRAMEWORK、和APPLICATION PROFICES等各层协议上的信息包;显示出错的包以 及接入错误;指示触发包;在接收和登记过程中可连 续显示包。

进入Zigbee世界的准备工作
§ 再次,我们需要在将用于开发Zigbee的计 算机平台上安装这些软件: § Zigbee协议分析软件(sniffer) § 程序烧写软件(Flash Programmer) § IAR公司的EW8051 version 7.20I/W32 。

zigbee协议栈源码

竭诚为您提供优质文档/双击可除 zigbee协议栈源码 篇一:zigbeez-stack协议栈构架 zstack基础 1、zstack协议栈构架 zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层api,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:整个协议栈的构架,如图所示 app:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 hal:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。 mac:mac层目录,包含了mac层的参数配置文件及其mac的lib库的函数接口文件。 mt:监控调试层,主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。nwk:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,aps层库的

函数接口。 osal:协议栈的操作系统。 profile:aF层目录,包含aF层处理函数文件。 security:安全层目录,安全层处理函数接口文件,比如加密函数等。 services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 tools:工程配置目录,包括空间划分及zstack相关配置信息。 zdo:zdo目录。 zmac:mac层目录,包括mac层参数配置及mac层lib 库函数回调处理函数。zmain:主函数目录,包括入口函数main()及硬件配置文件。 output:输出文件目录,这个ew8051ide自动生成的。 2、zigbee20xx协议栈源码库结构分析 了解了zigbee20xx协议栈整个构架后,再来看看协议栈源码库结构是什么样的,各层的具体文件是什么,建立不同的项目、添加自己的应用层任务及处理函数需要修改什么文件。zigbee20xx协议栈zstack-1.4.2文件目录及说明如下: 打开smapleapp项目工程 先看app层:

TIZstack协议栈开发环境和工作流程

TIZstack协议栈开发环境和工作流程

TI Z-stack协议栈开发环境和工作流程 By KuangJunBin KuangJunBin: 如您对本项目感兴趣或者有任何疑问, 欢迎与我一起探讨: 。谢谢您的阅读! 系统软件设计是在硬件设计的基础上进行的, 良好的软件设计是实现系统功能的重要环节, 也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑, 移植了TI公司的Z-Stack协议栈, 其主要特点就是其兼容性, 完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性, 如无线下载, 可经过ZigBee网状网络( Mesh Network) 下载节点更新。 图 ZigBee节点开发环境

TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外, 还能够结合编程器进行单步跟踪调试和监测片上寄存器、 Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层: API( Appli cation Programming Interface) , HAL ( Hardware Abstract Layer) , M AC( Media Access Control), NWK( Zigbee Network Layer) , OSAL( Operating System Abstract System) , Security, Service, ZDO( Zigbee Device Objects) 。使用IAR打开工程文件SampleApp.eww后, 即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈能够实现复杂的网络链接, 在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建, 采用事件轮循机制, 当各层初始化之后, 系统进入低功耗模式, 当事件发生时, 唤醒系统, 开始进入中断处理事件, 结束后继续进入低功耗模式。如果同时有几个事件发生, 判断优先级, 逐次处理事件。这种软件构架能够极大地降级系统的功耗。 整个Z-stack的主要工作流程, 大致分为系统启动, 驱动初始化, OSAL初始化和启动, 进入任务轮循几个阶段, 下面将逐一详细分析。

ZStack协议栈结构的初步解析

int main( void ) { // Turn off interrupts(关中断) osal_int_disable( INTS_ALL ); // Initialization for board related stuff such as LEDs(初始化板上组件,如LED) HAL_BOARD_INIT(); // Make sure supply voltage is high enough to run(电压检查) zmain_vdd_check(); // Initialize board I/O(初始化I/O接口) InitBoard( OB_COLD ); // Initialze HAL drivers(初始化HAL设备,在hal_drivers.c中实现) HalDriverInit(); // Initialize NV System(初始化NV系统,即非易失设备,如Flash) osal_nv_init( NULL ); // Initialize the MAC(初始化MAC) ZMacInit(); // Determine the extended address(确定设备的长地址) zmain_ext_addr(); // Initialize basic NV items(初始化ZStack的全局变量,如果在NV内存中不存在,则写入缺省值) zgInit(); #ifndef NONWK // Since the AF isn't a task, call it's initialization routine afInit(); #endif // Initialize the operating system(初始化操作系统) osal_init_system(); // Allow interrupts(开中断) osal_int_enable( INTS_ALL ); // Final board initialization(最后初始化板)

基于TI_BLE协议栈_ZStack协议栈解析

基于TI_BLE协议栈_ZStack协议栈解析 基于STM32的虚拟多线程,可以很好的用于裸机程序中,用于模拟小型操作系统的多线程概念。本实例参考TI_BLE协议栈_ZStack协议栈。 #include “Hal_Led/Hal_Led.h” #include “Hal_delay/delay.h” #include “Hal_Key/Hal_Key.h” #include “ringbuffer.h” #define APP_LED2_BLINK_EVENT 0x0001 #define HAL_LED1_BLINK_EVENT 0x0001 #define TASK_NO_TASK_RUNNING 0xFF unsigned short Hal_ProcessEvent(unsigned char task_id,unsigned short events ); unsigned short App_ProcessEvent(unsigned char task_id,unsigned short events ); typedef unsigned short uint16; typedef unsigned char uint8; #define TASK_CNT 2 //定义线程的个数 //定义函数指针 typedef unsigned short (*pTaskEventHandlerFn)(unsigned char task_id,unsigned short events ); //线程函数表 const pTaskEventHandlerFn tasksArr[]= { Hal_ProcessEvent, App_ProcessEvent }; const unsigned char tasksCnt = sizeof(tasksArr )/ sizeof(tasksArr[0]);

《Web开发基础》课程标准

《Web开发基础》课程标准 表1 课程基本信息 (一)课程性质与任务 课程性质:《Web开发基础》是软件工程专业培养课程体系中的一门专业必修课程,其包含了软件行业Web开发领域的关键技术基础知识(HTML,CSS及JavaScript等)。该课程的设置充分考虑了其在Web开发领域的关键性作用、目前市场广泛的应用需求和良好的就业前景,注重学生对理论基础知识、专业技能的理解、掌握。 课程任务:通过本课程的学习,使学生理解HTML、CSS及JavaScript等基本的理论知识;掌握应用上述理论知识,制作基本网页、设计网页布局、实现多样化及良好客户体验的页面效果等应用技能;培养学生的创新意识,设计特色网页。 (二)课程教学目标 通过本课程的学习,使学生掌握Web开发技术的基本理论知识,具备一定的应用开发技能,培养学生工程意识、创新能力和素质。 1. 知识目标 (1)了解本课程内容在Web开发领域的定位与作用; (2)了解HTML、CSS及JavaScript技术的发展脉络、趋势及应用前景; (3)掌握HTML中的基本元素、文字与段落元素、图像元素、列表元素、表格元素、超链接元素、多媒体元素、框架元素及表单元素的语法、属性和参数等基础知识; (4)掌握CSS中元素的语法、属性和参数等基础知识; (5)了解网页布局的几种方法,掌握使用CSS进行网页布局、样式设计的基础知识; (6)掌握JavaScript中的基本语法知识; (7)掌握JavaScript进行提交内容校验、生成网页特效等方法。 2. 能力目标

(1)具备使用HTML制作包含基本内容的网页的能力; (2)具备使用HTML及CSS等技术来设计网页布局的能力; (3)具备使用JavaScript技术来提高网页交互性、体验性的能力; (4)具备综合使用HTML、CSS与JavaScript的相关知识,来丰富、渲染网页的能力; (5)具备根据具体应用需求,创新性地设计网页的能力。 3. 素质目标 (1)培养学生具备克服困难解决问题的意志; (2)培养学生养成严谨认真的科学态度,耐心细致的工作作风; (3)培养学生具备良好的交流沟通素养和创新精神。 (三)参考学时 64 (理论:32\ 实验:32) (四)课程学分 4学分 (五)课程内容和要求(理论48学时,实验16学时) 本课程的主要内容有:HTML,主要包括网页基本组成元素,网页框架、超文本链接、表单、表格、层等。CSS,产要包括修改网页元素,主要包括修改文字颜色及背景、调整字符间距、单词间距、添加文字修饰、设置文本排列方式、设置段落缩进、调整行高、转换英文大小写、设置颜色、设置背景颜色、插入背景图片、设置背景图片位置、设计边框样式、调整边框宽度、设置边框颜色、设置边框属性等。JavaScript,包括JavaScript基本语法、基本数据类型、运算符、函数、JavaScript事件分析、图片和多媒体文件的使用、JavaScript 对象的应用、浏览器内部对象、内置对象和方法等。 本课程要求学生了解web编程技术的产生和发展过程,会使用HTML编写网页,会用CSS 对网页样式进行设计,会使用JavaScript实现一些客户端的数据验证及网页特效,达到一般企业用人标准。 表2 课程内容与学时安排表

Zigbee协议栈原理基础

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。

Zstack协议栈ZNP例程使用说明

Zstack协议栈ZNP例程使用说明 一、硬件准备 1)将ZBeePlus S1或者ZBeeplus M1安装到ZBDC51GB上,配套天线拧到ZBeeplus 模块上,安装完成模块如下图所示。 2)使用交叉RS232电缆连接模块串口到PC机; 电池盒装上两节5号1.5V电池,电池盒电缆连接到模块电池盒接口。 如果需要下载代码,将ccdebugger调试电缆连接到模块仿真器接口。 3)检查电池合是否拨到on位置,SW1开关拨到ON位置,模块上电开始工作。 二、编译和下载ZNP例程 1)运行IAR 7.6.0以上版本,打开 ZStack-CC2530-2.4.0-1.4.0\Projects\zstack\ZNP\CC253x\znp.eww工程文件。

2)编译和下载ZNP代码,如下图所示. 1.选择工程配置项CC2530 - Debug。 2.选中ZNP->CC2530-Debug->HAL->TARGET->CC2530ZNP->hal_board_cfg.h文件,双击打开文件。 在文件第62行,将#define xHAL_PA_LNA修改为#define HAL_PA_LNA. (注:这个操作步骤只针对ZBeepls M1模块,ZBeeplus S1模块不要作上述修改操作) 3.选择CC2530-Debug,右键弹出菜单,选择Rebuild All。 4.编译完成之后,如果没有错误,点击下载按钮,将程序烧写入模块。 5.采用上述方法下载ZNP程序到其他模块。 三、用Smartrf Flash Programmer下载ZNP代码 如果不是从源代码编译下载到模块中,使用光盘上附带的hex文件,可以采用SmartRf Flash Programmer进行程序下载。

TIZstack协议栈开发环境和工作流程精编

T I Z s t a c k协议栈开发 环境和工作流程精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

TI Z-stack协议栈开发环境和工作流程 By KuangJunBin KuangJunBin:如您对本项目感兴趣或者有任何疑问,欢迎与我一起探讨:。谢谢您的阅读! ? 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。 图 ZigBee节点开发环境 TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。Z-Stack根据IEEE 802. 和ZigBee标准分为以下几层:API(Application Programming Interf

ace),HAL (Hardware Abstract Layer),MAC(Media Access Control), NWK(Zigbee Network Layer),OSAL (Operating System Abstract System),Security,Ser vice,ZDO(Zigbee Device Objects)。使用IAR打开工程文件后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。 整个Z-stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段,下面将逐一详细分析。 图 Z-Stack系统运行流程图 Figure . The Flow Chart of Z-Stack ?

TIZstack协议栈开发环境和工作流程

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 TIZstack协议栈开发环境和工作流程 甲方:___________________ 乙方:___________________ 日期:___________________

TI Z-stack 协议栈开发环境和工作流程 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是 实现 系统功能的重要环节,也是提高系统性能的关键所在。节点设计基丁通用 性及便丁开发的考虑,移植了 TI 公司的Z-Stack 协议栈,其主要特点就是其兼 容性,完全支持IEEE 802. 15. 4/ZigBee 的CC2430片上系统解决方案。Z-Sta ck 还支持丰富的新特性,如无线下载,可通过 ZigBee 网状网络(Mesh Networ k)下载节点更新。 Z furn gr irrc vrivci t Bfei AS JJiflll-ltC -liNri l - lie *4--? U ■Bl.K II 图ZigBee 节点开发环境 TI 的Z-Stack 装载在一个基丁 IAR 开发环境的工程里。强大的IAR E mbedded Workbench 除了提供编译下载功能外,还可以结合编程器进行单步跟踪 调试和监测片上寄存器、Flash 数据等。Z-Stack 根据IEEE 802. 15.4 和ZigB ee 标准分为以下几层: API (Application Programming Interface ) , HAL (H ardware Abstract Layer ) , MAC( Media Access Control) , NWK( Zigbee Ne twork Layer ) , OSAL( Operating System Abstract System ) , Security , Se rvice , ZDO(Zigbee Device Objects )。使用 IAR 打开工程文件 SampleApp.e ww 后,即可查看到整个协议栈从 HAL 层到APP 层的文件夹分布。该协议栈可以 实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。 Z-Stack 采用操作系统的思想来构建,采用事件轮循机制,当各层 初始 化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断 Ri-TPr — iw"" t ■ W T ■ E M ± -

ZigBee协议栈(免费下载)

2005 Microchip Technology Inc.DS00965A_CN 第1页 AN965 引言 ZigBee?是专为低速率传感器和控制网络设计的无线网络协议。有许多应用可从ZigBee 协议受益,其中可能的一些应用有:建筑自动化网络、住宅安防系统、工业控制网络、远程抄表以及PC 外设。 与其他无线协议相比,ZigBee 无线协议提供了低复杂性、缩减的资源要求,最重要的是它提供了一组标准的规范。它还提供了三个工作频带,以及一些网络配置和可选的安全功能。 如果您正在寻求现有的控制网络技术(例如RS-422、RS-485)或专有无线协议的替代方案,ZigBee 协议可能是您所需的解决方案。 此应用笔记旨在帮助您在应用中采用ZigBee 协议。 可以使用在应用笔记中提供的Microchip ZigBee 协议栈快速地构建应用。为了说明该协议栈的用法,本文包含了两个有效的演示应用程序。可将这两个演示程序作为参考或者根据您的需求经过简单修改来采用它们。此应用笔记中提供的协议栈函数库实现了一个与物理层无关的应用程序接口。 因此,无需做重大修改就可以轻松地在射频(Radio Frequency ,RF )收发器之间移植应用程序。 在此文档末尾的“常见问题解答”中提供了有关Microchip 协议栈和用法的一些常见问题及其答案。 假设 此文档假设您熟悉C 编程语言。文档中大量使用了有关ZigBee 和IEEE 802.15.4规范的术语。 此文档没有详细讨论ZigBee 规范,只提供了对ZigBee 规范的简要概述。建议您仔细阅读ZigBee 和IEEE 802.15.4规范。 特性 Microchip ZigBee 协议栈设计为随着ZigBee 无线协议规范的发展而发展。在发布此文档时,该协议栈的 1.0版本具有以下特点(欲知最新特性,请参阅源代码版本日志文件version.log ):? 基于ZigBee 规范的0.8版本 ? 使用Chipcon CC2420 RF 收发器支持2.4GHz 频带 ? 支持简化功能设备(Reduced Function Device ,RFD )和协调器 ? 在协调器节点中实现对邻接表和绑定表的非易失性存储 ? 支持非时隙的星型网络 ? 可以在大多数PIC18系列单片机之间进行移植? 协同多任务处理架构? 不依赖于RTOS 和应用 ? 支持Microchip MPLAB ? C18和Hi-Tech PICC-18? C 编译器 ? 易于添加或删除特定模块的模块化设计 限制 Microchip 协议栈的1.0版本包含以下限制。请注意随着时间的推移,Microchip 会添加新特性。如需了解目前的限制,请参阅源代码版本日志文件(version.log )。? 不完全符合ZigBee 协议? 不支持群集和点对点网络? 无安全和访问控制功能? 无路由器功能 ? 不提供标准的配置文件;但是包含创建配置文件必需的所有原始函数? 不支持一对多绑定 作者: Nilesh Rajbharti Microchip Technology Inc. Microchip ZigBee ?协议栈 https://www.doczj.com/doc/bb17711684.html, 电子发烧友 https://www.doczj.com/doc/bb17711684.html, 电子技术论坛

相关主题
文本预览
相关文档 最新文档