4. Simplicity Studio开发环境搭建
Simplicity Studio 是 Silicon Labs 为 EFM32/EFR32 系列无线 SoC 提供的集成开发环境,Zigbee 智能家居产品的固件开发、编译、下载、调试都围绕它展开。本节以 EFR32MG21(或 EFR32MG24)为例,完整走通从环境安装到首次下载的链路,让开发板真正跑起第一段代码。
一、安装 Simplicity Studio 与 SDK
从 Silicon Labs 官网下载 Simplicity Studio 5(SSv5)安装包,安装时勾选 Simplicity Studio 与 Gecko SDK。SSv5 采用“Launcher + IDE”结构:Launcher 负责设备识别、SDK 管理与示例工程浏览,IDE 基于 Eclipse,负责代码编辑与编译。首次启动需要登录 Silicon Labs 账号,登录后 Launcher 会自动识别通过 USB 连接的开发板,并显示芯片型号、板卡名称与可用的 SDK 版本。
SDK 安装有两种方式:一是安装时随包安装,二是启动后在 Install 页面按需下载。Zigbee 开发需要的关键组件包括:Gecko SDK(含 Zigbee 协议栈 EmberZNet)、Gecko Bootloader、GNU ARM Toolchain(arm-none-eabi-gcc)以及 Simplicity Commander(命令行烧录工具)。建议 SDK 版本与后续量产固件保持一致,避免协议栈行为差异。安装完成后,在 Preferences → Simplicity Studio → SDKs 中确认 SDK 路径已被正确索引。
gecko_sdk/ 下包含 platform/(底层驱动)、protocol/zigbee/(EmberZNet 协议栈)、bootloader/(Gecko Bootloader 源码与示例)、app/(示例应用)。理解这一结构有助于后续定位文件。二、Gecko Bootloader 配置
Gecko Bootloader 是 Silicon Labs 的二级引导程序,负责上电初始化、固件升级(OTA/串口/SPI)与固件校验。Zigbee 设备若要支持 OTA 升级,必须烧录 Bootloader。Bootloader 分为 Standalone(独立,无应用也能运行)与 Application(与应用合并)两类,Zigbee 产品通常使用 Standalone Bootloader。
配置流程:在 Launcher 的 Example Projects 中搜索 Bootloader,选择与芯片匹配的 Bootloader – SoC 示例,创建工程后打开 .slcp 配置文件,在 Bootloader 组件中设置:
- Storage:选择内部 Flash 或外部 SPI Flash,决定升级镜像存放位置;
- Communication:选择 UART、SPI 或 EZSP(Zigbee OTA 走 EZSP);
- Bootloader size:默认约 16–32 KB,需与链接脚本中的 Bootloader 区域对齐;
- Slot 配置:定义 Slot 起始地址与大小,OTA 镜像写入 Slot,重启后由 Bootloader 搬运到应用区。
配置完成后编译生成 .s37 或 .hex 文件,用 Simplicity Commander 烧录到芯片起始地址 0x00000000。烧录后复位,若 Bootloader 正常,串口会输出启动信息,或通过 Commander 的 flash 命令读取校验。
三、创建 Zigbee 工程
在 Launcher 的 Example Projects 中筛选 Zigbee,选择 Zigbee – SoC Zigbee Coordinator / Router / Sleepy End Device 示例。以 Zigbee – SoC Light 为例,创建工程时需指定:
- Board:选择实际开发板(如 BRD4180B),SSv5 会自动匹配芯片与引脚;
- SDK 版本:与 Bootloader 使用同一 SDK;
- Project name:如
zigbee_light_demo; - Toolchain:GNU ARM v10 或更高。
工程创建后,.slcp 文件是核心配置入口。在 Software Components 中可添加 Zigbee 协议栈组件、OTA Client/Server、LED、Button、UART 等。Zigbee 应用的关键组件包括:Zigbee Stack、Zigbee Application Framework、Zigbee Cluster Library。在 Zigbee Application Framework 中可配置 Endpoint、Cluster、Attribute,SSv5 会自动生成 zcl_callback.c、zcl_config.h 等文件。
工程目录中,src/ 存放应用代码,config/ 存放 ZCL 配置,autogen/ 为自动生成代码,linker/ 为链接脚本。修改 .slcp 后需重新生成,避免手动改动 autogen 文件被覆盖。
四、首次编译与下载
点击工具栏 Build(锤子图标)编译工程。首次编译会生成协议栈、平台驱动与自动代码,耗时约 1–3 分钟。编译成功后,Console 输出 Build Finished. 0 errors, 0 warnings,并在 GNU ARM v10.3.1 - Default/ 下生成 .hex、.bin、.out 文件。
下载方式有两种:
- IDE 内 Debug:点击 Debug,SSv5 通过 J-Link 下载并进入调试会话,可设置断点、查看变量、观察 Zigbee 事件;
- Simplicity Commander 命令行:适合批量烧录,命令如下:
commander flash zigbee_light_demo.hex --address 0x00008000
commander flash bootloader.s37 --address 0x00000000
commander reset
下载完成后复位开发板。若使用 Zigbee – SoC Light 示例,设备会以 Router 或 End Device 身份加入网络,串口打印启动日志,LED 按 ZCL On/Off 命令响应。此时可用 Zigbee 网关或另一块开发板作为 Coordinator 进行入网测试,观察 Network Joined、Endpoint 1 等日志,确认首次下载与运行成功。
ember.h,检查 SDK 是否被正确索引、工程是否使用了正确的 SDK 版本。五、首次下载后的验证要点
首次下载不是终点,而是验证环境是否可用的关键节点。建议按以下顺序确认:
- Bootloader 校验:用 Commander 读取
0x00000000区域,确认非全0xFF; - 应用运行:串口输出启动信息,LED 或按键有响应;
- 协议栈初始化:日志中出现
EZSP或Zigbee初始化完成提示; - 入网测试:与 Coordinator 组网,确认设备能加入并上报属性;
- OTA 预留:确认 Slot 区域已按规划划分,为后续 OTA 升级留出空间。