Skip to content

第1章:Z-Stack 3.0 架构详解 ​

本章导读

下周我们要一起"读源码"——读的不是随便一段代码,而是 TI(德州仪器)官方发布的 Z-Stack 3.0 协议栈源码。读源码之前,先把三件事搞清楚:Z-Stack 到底是什么?它和 ZigBee 协议是什么关系?它的源码长什么样、放在哪里?

本章就是这份"读码地图":先建立整体认识,再带你逐目录逛一遍源码仓库,最后落到你手头的 GEC2530 开发板上。

一、Z-Stack 3.0 是什么 ​

Z-Stack 3.0 是 TI 公司根据 ZigBee 3.0 协议规范编写的一套程序库(协议栈)。

一句话类比:ZigBee 协议 = 交通规则(红灯停、绿灯行、怎么组网、怎么传数据),Z-Stack 3.0 = TI 帮你修好的路(把规则全部实现成可直接调用的 C 代码库)。

开发者不需要从零去实现复杂的组网、路由、安全机制,只要:

  1. 调用 Z-Stack 提供的 API(比如 ApsdeDataRequest() 发数据);
  2. 注册自己的应用任务(比如"按键按下就发一条命令");
  3. 剩下的组网、寻址、路由、重传……全部交给协议栈。

为什么叫"3.0"? ​

ZigBee 协议规范发展出过多个版本,TI 的协议栈也随之一代代升级:

协议栈版本对应规范特点
Z-Stack 2.xZigBee 2007 / PRO早期版本,广泛用于智能家居单品
Z-Stack 3.0ZigBee 3.0统一了 HA/ZA/ZLL 等 Profile,加入更安全的入网机制(BDB)、更丰富的应用例程

ZigBee 3.0 最大的变化是:以前智能灯、门锁、温控器各有各的"方言"(Profile),互不兼容;3.0 把它们统一成一套标准,设备之间真正"讲同一种语言"。

二、源码的"分层骨架" ​

Z-Stack 的源码不是一堆文件乱放,而是严格按协议分层组织的。这套分层你在《ZigBee 协议栈分层》实验教室(labs/zigbee-stack-tutorial)里已经亲手点过一遍:

text
┌─────────────────────────────────────────────┐
│  应用层 App(SampleSwitch、SampleLight…)     │ ← 你写业务代码的地方
├─────────────────────────────────────────────┤
│  APS 层(端点、簇、Profile)                  │
├─────────────────────────────────────────────┤
│  NWK 层(组网、短地址、路由)                  │ ← Z-Stack 核心
├─────────────────────────────────────────────┤
│  MAC 层(IEEE 802.15.4)                     │
├─────────────────────────────────────────────┤
│  PHY 层(2.4GHz 射频)                       │ ← CC2530 硬件实现
└─────────────────────────────────────────────┘

Z-Stack 的工作就是把这套分层"跑起来":上层应用往下一层层封装帧头发出去(发送),底层收上来再一层层剥开交给应用(接收)。

提示:如果你还没玩过站内的「ZigBee 实验教室 · 协议栈分层」交互页,强烈建议先花 5 分钟点一遍"发送一次",再看源码会轻松很多。

三、源码地图:安装后你会在电脑上看到什么 ​

Z-Stack 3.0.1 安装完成后,默认位于电脑 C 盘的 C:\Texas Instruments\Z-Stack 3.0.1 目录:

Z-Stack 安装路径

打开它,核心目录与文件如下:

目录/文件作用
Accessories辅助工具:OtaServer(空中升级测试)、SerialBootTool(串口升级)
Components⭐ Z-Stack 核心源代码与链接库(后面重点逛)
Documents开发文档:API 说明、Developer's Guide、Sample Application 指南
Projects⭐ ZigBee 应用例程工程(SampleSwitch 等都在这里)
Tools开发调试工具
各类 PDF/TXT/HTML版本说明、开始向导、资源清单

其中 Components(核心代码)和 Projects(应用例程)是两个最关键的部分,第 2 章会分别详细讲解。

硬件视角:协议栈跑在哪块芯片上 ​

你手头的 GEC2530 开发板上,ZIGBEE_CORE 核心模块搭载的是 CC2530 芯片(TI 的 ZigBee 专用 SoC,内部集成 8051 内核 + 2.4GHz 射频)。CC2530 的 8051 内核负责运行 Z-Stack 源码,射频前端实现 PHY 层,正是上面分层图里"PHY 层 ← CC2530 硬件实现"的那一格。

换句话说:源码是"灵魂",CC2530 是"身体"。后面第 4~6 章讲 HAL(硬件抽象层)时,你会看到协议栈是如何通过 HAL 驱动 CC2530 的 GPIO、串口等外设的——那些外设引脚,我们都会对照 GEC2530 底板的原理图来讲。

四、小结 ​

问题答案
Z-Stack 3.0 是什么?TI 根据 ZigBee 3.0 规范实现的协议栈程序库
开发者要做什么?调用 API + 注册自己的应用任务
源码按什么组织?严格按协议分层(App→APS→NWK→MAC→PHY)
源码装在哪里?C:\Texas Instruments\Z-Stack 3.0.1
核心在哪两个目录?Components(核心代码)+ Projects(应用例程)
跑在什么硬件上?CC2530(GEC2530 开发板核心模块)

一句话总结:Z-Stack 3.0 = TI 按 ZigBee 3.0 规则写好的"路网",你的应用是路上跑的车,CC2530 是承载一切的"地基"。接下来两节,我们把"路网"和"车"分别逛一遍。


内容来源:紫甲 IoT《ZigBee 3.0 开发指南》第三部分·第1章,经本站整理优化以便于理解;原站链接

aioteer · 物联网专业课程群

💬AI 伴学配置