1.1 Z-Stack 3.0.1 文件组织

协议栈简介与安装

Z-Stack 3.0 是TI(德州仪器)针对 ZigBee 3.0 协议而开发的技术方案,也称为TI ZigBee 3.0 协议栈。通俗地讲,Z-Stack 3.0就是TI根据 ZigBee 3.0 协议规范而编写的程序(库),开发者可以方便地调用Z-Stack 3.0中的各个API来进行基于ZigBee协议的数据通信。本节课需要用到TI Z-Stack 3.0 协议栈,读者可以到《第一部分》中根据提示安装。

文件组织

默认安装Z-Stack 3.0 完成后可以在电脑C盘找到对应的文件夹,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图1

打开Z-Stack 3.0.1文件夹,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图2

Accessories目录

存放了各种辅助工具,进入Accessories目录,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图3
目录Accessories中的文件夹描述如下:
(1)OtaServer:存放了OTA(Over The Air,空中升级)测试工具
(2)SerialBootTool:存放了串口升级测试工具。

Components目录

存放了Z-Stack核心源代码和链接库,进入Components目录,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图4
目录Components中的文件夹描述如下:
(1)bsp:板级支持包,用于适配TI官方开发板的硬件资源。
(2)driverlib:驱动程序链接库,存放TI官方未开源驱动程序的链接库。
(3) hal:硬件抽象层,存放各种驱动程序。
(4)mac:媒体介质访问控制,实现物理层通信及IEEE 802.15.4协议。
(5)mt:监视层,为监视协议栈各层的运行状态提供支持。
(6)osal:操作系统抽象层,是Z-Stack 3.0的操作系统。
(7)services:提供一些公共的、常用的功能。
(8)stack:ZigBee协议的实现。
(9)usblib:USB链接库,芯片支持USB(比如CC2538)时需要用到的功能。
(10)zmac:属于mac层的内容。

Documents目录

存放了Z-Stack开发辅助的相关文档,进入Documents目录,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图5
目录Documents中的文件夹及文件描述如下:
(1)API:存放Z-Stack 3.0 相关API的说明文档。
(2)CC2530:存放适用于CC2530型号MCU的相关文档。
(3)CC2538:存放适用于CC2538型号MCU的相关文档。
(4)Z-Stack 3.0 Developer’s Guide.pdf:Z-Stack 3.0 开发指导。
(5)Z-Stack 3.0 Sample Application User’s Guide.pdf:Z-Stack 3.0 应用例程指导。
(6)Z-Stack OTA Upgrade User’s Guide.pdf:OTA(Over The Air)空中升级说明指导。

Projects目录

存放了ZigBee应用例程的工程文件和源码文件,进入Projects目录,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图6
目录Projects中的文件夹描述如下:
(1)tools:存放与ZigBee例程应用相关的工具。
(2)zstack:存放ZigBee相关例程。

进入zstack文件夹,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图7
目录zstack中的文件夹描述如下:
(1)HomeAutomation:面向家庭自动化领域的相关例程。
(2)Libraries:存放链接库文件,TI不开放的源代码会被编译为链接库的形式提供给开发者使用。
(3)OTA:OTA(Over The Air)空中升级例程。
(4)Tools:存放工程配置相关的文件。
(5)Utilities:公共文件夹。
(6)ZMain:存放主函数所在的源代码文件及系统硬件启动相关的源代码文件。
(7)ZNP:ZNP(ZigBee And Processor)例程。

进入HomeAutomation文件夹,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图8
目录HomeAutomation中的文件夹描述如下:
(1)GenericApp:通用的应用场景例程。
(2)SampleDoorLock:ZigBee 3.0门锁例程。
(3)SampleDoorLockController:ZigBee 3.0门锁控制器例程。
(4)SampleLight:ZigBee 3.0灯例程。
(5)SampleSwitch:ZigBee 3.0插座例程。
(6)SampleTemperatureSensor:ZigBee 3.0温湿度传感器例程。
(7)SampleThermostat:ZigBee 3.0温度控制器例程。
(8)Source:存放公共代码的文件夹。

其他目录

(1) Tools:存放开发调试相关的工具。
(2) EULA.pdf:版权声明文件。
(3)Getting Started Guide - CC2530.pdf:针对CC2530型号MCU的开始向导文件。
(4)Getting Started Guide - CC2538.pdf:针对CC2538型号MCU的开始向导文件。
(5)Z-Stack 3.0 Release Notes.txt:Z-Stack 3.0 发布描述文件。
(6)Z-Stack 3.0 Software Development Kit Resource Guide.html:Z-Stack 3.0 开发资源向导链接文件。
(7) Z-Stack Core Release Notes.txt:Z-Stack Core发布描述文件。
(8)Z-Stack_3.0.1_Manifest.html:Z-Stack 3.0 关键信息描述清单。
(9)_iss:此文件夹为隐藏文件夹,存放用于卸载Z-Stack 3.0 的相关文件。

2.2 Z-Stack 3.0.1 工程框架

工程组织结构

本节内容将以SampleSwitch例程来讲解协议栈的工程文件结构。进入SampleSwitch工程所在文件夹,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图9

通过集成开发环境IAR 10.10.1打开工程文件SampleSwitch.eww,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图10

工程中的的各个组的说明如下:
(1)App:存放应用程序相关源代码文件。
(2)BDB:实现ZigBee BDB(Base Device Behavior,设备基础行为)功能。
(3)GP:实现ZigBee GP(Green Power,绿色能源)功能。
(4)HAL:硬件抽象层,存放各种驱动程序。
(5)MAC:媒体介质访问控制,实现物理层通信及IEEE 802.15.4协议。
(6)MT:监视层,为监视协议栈各层的运行状态提供支持。
(7)NWK:ZigBee网络层。
(8)OSAL:操作系统抽象层。
(9)Profile:存放ZigBee标准化定义及相关功能实现的源代码文件。
(10)Security:实现安全相关服务。
(11)Services:提供一些公共的、常用的功能。
(12)Tools:存放工程配置相关的文件。
(13)ZDO:存放ZDO(ZigBee Device Object,ZigBee设备对象)相关源代码文件。
(14)ZMac:属于mac层的内容。
(15)ZMain:存放主函数所在的源代码文件及系统硬件启动相关的源代码文件。
(16)Output:存放工程编译/链接时输出的文件。

在工程中可以选择不同的ZigBee网络设备类型。单击选项卡→选择网络设备类型,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图11

ZigBee网络设备类型有3种,分别是Coordinator(协调器),Router(路由器)和EndDevice(终端设备),图中选项卡选项的含义描述如下:
(1)CoordinatorEB:ZigBee协调器。
(2)RouterEB:ZigBee路由器。
(3)EndDeviceEB:ZigBee终端设备。
(4)EndDeviceEB-OTAClient:支持OTA(Over The Air)空中升级的ZigBee终端设备。
(5)RouterEB-OTAClient:支持OTA(Over The Air)空中升级的ZigBee路由器。

在后续章节中,将会详细讲解这些设备类型的含义。

工程编译及链接

选择CoordinatorEB,接着右击工程名称,然后选择选择Rebuild All,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图12

编译及链接过程无错误和警告,如图所示。
第1章:Z-Stack 3.0 架构详解 - 图13