|
首先,本人是一名在读本科生,因为要参加本年度的物联网比赛,故需要掌握一定的Z-Stack知识。一周前本人对Z-Stack了解是完全空白,当时连什么是ZigBee都没听说过,不过本人是本校的物理实验室的常驻人员,有一定的单片机基础。经过近一周的学习现在对Z-Stack也只能说是刚刚入门,把自己的学习笔记分享出来,也算给广大菜鸟级入门童鞋一些参考的东西吧。由于本人本来是做海洋类开发的,兼顾单片机嵌入式系统的学习,所以基础知识各方面不比各位程序员,有些稚嫩,甚至可能有些错误,让大家见笑了,也只能是给如我一般的菜鸟入门的时候做一个参考吧。
好,闲话少叙,下面是我的学习笔记。
一、 基础定义及知识。1、 何为ZigBee,与普通的RF技术有何区别?
ZigBee是一种具有低成本低复杂度低功耗的小范围低速率的无线传输技术。
相对于普通的RF技术,其重要的特点是;
(1) 低功耗,速率低数据量少。、
(2)自组织网络,可适应网络拓扑结构动态变化。
(3)高可扩充,在有协调器加入的情况下,最高可达65535个ZigBee节点。
2、何为IEEE 802.15.4,其特点。
是ZigBee无限传感器网络通信标准,具有短距离(10m),低功耗,低速率,低成本的特点,支持单跳星形(10m内)和多跳对等(>10m)两种网络拓扑。
3、何为Z-Stack?
Z-Stack是TI公司开发的ZigBee协议栈,并且经过了ZigBee联盟的认可而为全球众多开发商所广泛采用。Z-Stack实际上是帮助程序员方便开发ZigBee的一套系统,它采用轮转查询式操作系统,包括两个主要流程(如图):系统初始化和执行操作系统。系统初始化完成后,就进入执行操作系统,并且在其中是一个死循环。执行操作系统中主函数即为轮询式操作系统的主体部分,也是我们需要重点开发、调用、掌握的部分。欲知其详,且听下文分解。
有关第一部分的题外话,笔者在学习的时候,还是详细看了ZigBee概述和IEEE 802.15.4通信标准的,不过事后发现,如果只是想达到能调用Z-Stack中的函数进行简单的程序编写,尤其像我们这样为了比赛而准备的短期突击学习来说,并没有太大必要去详细了解这些标准,不过看了这些标准之后,的确会对后面的学习有些帮助。另,为了能看懂一些Z-Stack资料,需要知道很多的名词定义和缩写,这部分我就放在了第四章,如果有看不懂的地方,可以先跳到第四章查询。
二、开发Z-Stack须知。
1、ZigBee的体系,数据及管理的方式和方向。ZigBee网络构架。
上图是ZigBee协议的体系结构。
上图是zigbee网络构架。黑色是协调器,红色是路由器,白色是终端设备。协调器是网络核心、不休眠、FFD,路由器是接力和扩展信号传输范围、不休眠、FFD,终端可选择睡眠或唤醒、可FFD或RFD。
2、Z-Stack在开发ZigBee中起到的作用,使用Z-Stack开发ZigBee我们需要做什么?
如刚才的ZigBee协议体系图所示,ZigBee中包括很多的层和各个层之间的数据管理信息传输。如此庞大的体系,如果人为手动编写程序将是一个很浩大的工程。而Z-Stack则在其系统中为我们提供了详细的各个子模块的工作程序。那么我们在开发ZigBee项目的时候,其实我们只需要添加三个文件:主文件,主文件的头文件,操作系统接口文件。
3、Z-Stack轮询结构函数工作方式及顺序。
下图是轮询结构工作流程图。进入轮询结构后,Z-Stack开始根据处理任务的优先级一级级向下查询是否有任务要执行,如果需要,就调用该任务的子函数,如果没有就继续询问,最后再循环。这就是轮转查询结构。
第二章题外话:如果说第一章基本是科普的话,是为了让行外人也知道我们在干嘛,那么第二章就是在对行内人科普,我在这一阶段的学习基本就是为了搞懂,对于Z-Stack,我到底要从何处下手,到底那些是需要我修改编译的,哪些是可以直接引用的。而真正开始开发,是在第三章。
三、Z-Stack学习,调用,修改,开发。
1、各层文件意义。
(1) APP:应用层目录,即我们需要开发修改的部分。
(2)HAL:硬件层目录。 (3)MAC:MAC层目录。
(4)MT:监控调试层目录。 (5)NWK:网络层目录。
(6)OSAL:协议栈的操作系统。(7)Profile:AF层目录。
(8)Security:安全层目录。
(9)Services:设备地址处理函数目录。
(10)Tools:工程配置目录。 (11)ZDO:ZigBee设备对象。
(12)ZMac:Z-Stack MAC导出层接口文件。
(13)ZMain:项目入口函数,对外控制接口函数。
(14)Output:输出文件目录。
2、PANID设定。
若ZDAPP_CONFIG_PAN_ID值不为0xFFFF时,PANID由其指定,若ZDAPP_CONFIG_PAN_ID为0xFFFF,那么设备将随机加入网络。
通过选择DEFAULT_CHANLIST不同的值可以选择不同频道。
Tools\CC2530DB目录下的f8wConfig.cfg文件中有相应设置。
第三章题外话:目前笔者还在处于学习如何修改APP目录下函数的阶段,虽然有些笔记也做了,但是还无法确定是否正确,就不拿出来误人子弟了。可能已经发出来也有错误,还请大家多多指正,如果反响还不错的话,我会继续更新的。
四、细节知识、名词解释及备注。
1、ZigBee是树寻址,PRO是随机寻址,PRO更适用于变动的网络,如由多个移动终端组成的网络。只有PRO可以支持多对一路由选项。大多数情况下,ZigBee和ZigBee PRO无法在同一网络上同时使用。
2、 自我组态功能:让系统中所有的节点,根据现场的网络讯号状态决定要加入的父节点。
3、描述符:ZigBee网络中的所有设备都有一些描述符,用来描述设备类型和应用方式。描述符的定义和创建配置项在文件ZDOCConfig.h和ZDOConfig.c中完成。
备注:PHY:物理层 MAC:媒体介质访问层 NWK:网络层 APL:应用层
APS:应用支持子层 AF:应用框架 KVP:键值对服务类型 MSG:报文服务类型
LR-WPAN:低速率无限个人区域网 DSSS:直接序列扩频 ISM:工业科学医学频段
CSMA-CA:碰撞避免 GTS:保证时隙 ID:个人域网选择信道和识别符
SAP:服务接入点 MCPS:数据传输服务 MLME:管理服务 NLDE:数据服务实体
NLME:管理服务实体 NIB:网络层信息数据库 MLDE:MAC子层数据服务
ZDO:ZigBee设备对象 FFD:全功能设备 RFD:精简功能设备
API:应用程序编程接口 HAL:硬件抽象层
再来个题外话:本人的确是从零开始,所以看到这么简单和初级东西请不要笑我。而且本人也不知道文章中是否有错误瑕疵,如果有,还请大家多多指正,互相帮助共同进步。由于本人近日也在准备比赛而赶进度,所以笔记略显简洁和潦草,日后我会更加丰富和完善一下。如果大家觉得还不错的话,我会继续更新。另外,请注重版权意识,转载请注明出处。
————上海海洋大学A421实验室 小左同学 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|