查看: 30210|回复: 31

Z-Stack学习笔记。(菜鸟入门)

[复制链接]
k280371210 发表于 2011-7-3 22:39:27 | 显示全部楼层 |阅读模式
首先,本人是一名在读本科生,因为要参加本年度的物联网比赛,故需要掌握一定的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
outman 发表于 2011-7-5 14:18:23 | 显示全部楼层
支持原创,感谢小左同学的贡献,已经为您升为vip会员。期待后续作品
xhj967 发表于 2011-7-5 15:25:24 | 显示全部楼层
不错啊, 我学了两个月,了解的跟你也差不多
 楼主| k280371210 发表于 2011-7-6 01:03:28 | 显示全部楼层
额。。。今晚如果实验成功了,可能就要转入CS和BS的开发了,z-stack就要告一段落了,不过等这个比赛结束了,还是有兴趣继续深入研究z-stack的。由于是在实验室里面学,我们有4个人一起看,一起分享,一起研究,而且每天只睡两三个小时,所以在速度方面,我还是蛮自豪的,嘿嘿。现在有些新的发现,等整理好了发上来。
xiaowei061 发表于 2011-7-8 09:00:01 | 显示全部楼层
学习ing
dfst 发表于 2011-7-13 17:03:49 | 显示全部楼层
学习中~~
真诚星君 发表于 2011-7-17 14:15:09 | 显示全部楼层
希望交个朋友。。留下QQ..509819458
无所谓5688 发表于 2011-8-9 16:45:09 | 显示全部楼层
需要学习学习!
zhengya198902 发表于 2011-8-12 14:40:47 | 显示全部楼层
LZ,太牛了
liangliangyw 发表于 2011-10-12 14:18:32 | 显示全部楼层
向楼主学习,努力了该
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表