第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 代码库)。
开发者不需要从零去实现复杂的组网、路由、安全机制,只要:
- 调用 Z-Stack 提供的 API(比如
ApsdeDataRequest()发数据); - 注册自己的应用任务(比如"按键按下就发一条命令");
- 剩下的组网、寻址、路由、重传……全部交给协议栈。
为什么叫"3.0"?
ZigBee 协议规范发展出过多个版本,TI 的协议栈也随之一代代升级:
| 协议栈版本 | 对应规范 | 特点 |
|---|---|---|
| Z-Stack 2.x | ZigBee 2007 / PRO | 早期版本,广泛用于智能家居单品 |
| Z-Stack 3.0 | ZigBee 3.0 | 统一了 HA/ZA/ZLL 等 Profile,加入更安全的入网机制(BDB)、更丰富的应用例程 |
ZigBee 3.0 最大的变化是:以前智能灯、门锁、温控器各有各的"方言"(Profile),互不兼容;3.0 把它们统一成一套标准,设备之间真正"讲同一种语言"。
二、源码的"分层骨架"
Z-Stack 的源码不是一堆文件乱放,而是严格按协议分层组织的。这套分层你在《ZigBee 协议栈分层》实验教室(labs/zigbee-stack-tutorial)里已经亲手点过一遍:
┌─────────────────────────────────────────────┐
│ 应用层 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 目录:

打开它,核心目录与文件如下:
| 目录/文件 | 作用 |
|---|---|
| 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章,经本站整理优化以便于理解;原站链接