1. 课程导入与开发环境搭建

Silicon Labs 的多协议无线网关,本质上是一台“协议翻译与设备调度中心”:它一侧通过 Zigbee、Thread、蓝牙 Mesh 或私有 2.4 GHz 协议与终端节点通信,另一侧通过 UART、以太网或 Wi-Fi 与主机/云端交互。理解这个双向结构,是后续所有开发工作的起点。本课程以 EFR32MG 系列 SoC(如 EFR32MG21/MG24)为硬件基础,以 Simplicity Studio 5 + Gecko SDK 为软件基础,逐步完成从环境搭建到多协议网关互联的完整链路。

一、多协议网关的典型架构

一个可落地的无线网关通常由四层构成。最底层是射频与协议栈层,运行 EmberZNet(Zigbee)、OpenThread、Bluetooth Mesh 等协议栈,负责组网、路由与安全。其上是网关应用层,运行在 SoC 或主机 MPU 上,负责设备管理、场景联动、OTA 升级调度。再往上是主机接口层,常见形态是 NCP(Network Co-Processor)模式:SoC 只跑协议栈,通过 UART 上的 ASH/SPI 协议与主机通信,主机运行 Zigbee Host 或 OpenThread Border Router 应用。最上层是网络与应用服务层,把设备数据转换为 MQTT、HTTP 或本地 API,供 App 与云平台使用。

需要特别区分两种工作模式:SoC 模式下应用与协议栈同芯片运行,适合功能简单的网关;NCP 模式下协议栈与业务逻辑分离,主机可用 Linux 或高性能 MCU,适合需要多协议并发、复杂业务逻辑的网关。本课程后续章节会分别覆盖这两种形态。

Silicon Labs 多协议无线网关典型架构 终端节点层 Zigbee 传感器 Thread 节点 BLE Mesh 灯 私有 2.4G 设备 2.4 GHz 射频 协议栈层(Gecko SDK) EmberZNet Zigbee 3.0 OpenThread Thread 1.3 Bluetooth Mesh BLE 5.x NCP / SoC 接口 网关应用层 设备管理 / 场景联动 OTA 调度 · 白名单 主机接口服务 UART ASH / SPI 网络服务 MQTT / HTTP / API 以太网 / Wi-Fi 云平台 / 本地 App 设备影子 · 规则引擎 · 用户界面

二、典型应用场景与学习路径

多协议网关最常见的落地场景有三类。第一类是智能家居中枢:网关同时接入 Zigbee 灯、Thread 传感器和 BLE Mesh 开关,通过本地规则实现“人走灯灭”,并把状态同步到手机 App。第二类是工业无线采集:在工厂车间用 Zigbee 或私有 2.4G 采集温振传感器数据,网关通过以太网汇聚到 SCADA 系统,要求低延迟与高可靠。第三类是多协议边界路由器:以 OpenThread Border Router 为核心,把 Thread 网络与 IP 网络打通,同时兼容 Zigbee 设备,适合楼宇与园区场景。

对应的学习路径建议按“环境 → 单协议 → 多协议 → 网关互联”推进:先装好 Simplicity Studio 与 Gecko SDK,跑通第一个 SoC 工程;再分别验证 Zigbee、Thread、BLE 的最小通信;然后切换到 NCP 模式,让主机通过 UART 控制协议栈;最后把多协议并发、OTA、云端对接串起来。本课程 30 章基本遵循这条主线。

三、安装 Simplicity Studio 5 与 Gecko SDK

Simplicity Studio 5(简称 SS5)是 Silicon Labs 的官方 IDE,基于 Eclipse,集成了编译器、调试器、能耗分析、网络分析仪和 SDK 管理器。安装步骤如下:

  1. 从 Silicon Labs 官网下载 SS5 安装包(Windows/macOS/Linux 均可),安装时勾选 32-bit MCU 工具链 与 Gecko SDK。
  2. 首次启动需登录 Silicon Labs 账号,否则无法拉取 SDK 与示例工程。
  3. 进入 Preferences → Simplicity Studio → SDKs,确认 Gecko SDK 版本。建议选择 Gecko SDK 4.x(对应 EmberZNet 7.x、OpenThread 1.3)。
  4. 在 Launcher → Update Software 中安装 Zigbee SDK、Thread SDK、Bluetooth SDK 以及 Network Analyzer 插件。

Gecko SDK 的目录结构需要提前熟悉:platform/ 是底层驱动与 RTOS,protocol/ 下按协议分目录,app/ 存放示例应用,util/ 是通用工具。后续创建工程时,SS5 会自动把这些组件按需链接进项目。

四、配置 J-Link 调试器

EFR32 开发板(如 BRD4180A、BRD4187C)板载 J-Link 调试器,也可使用外置 J-Link。配置要点如下:

  • 用 USB 线连接开发板的 DEBUG 口,Windows 下会自动识别为 J-Link 设备;Linux 下需把当前用户加入 plugdev 组,并安装 udev 规则。
  • 在 SS5 的 Launcher → Debug Adapters 中确认 J-Link 已识别,固件版本建议升级到最新。
  • 若使用外置 J-Link,需在 Debug Configurations → GDB Hardware Debugging 中指定 SWD 接口、目标芯片型号(如 EFR32MG21A020F768IM32)和复位方式。
  • 调试前先执行一次 Erase,避免旧固件残留导致下载失败。
常见问题:若 SS5 提示 “No J-Link found”,先检查 USB 线是否支持数据传输(部分线仅供电),再确认开发板供电跳线是否在 DEBUG 侧。Linux 下 90% 的识别失败与 udev 权限有关。

五、创建第一个网关工程

以 Zigbee NCP 网关为例,创建流程如下:

  1. 打开 SS5,点击 File → New → Silicon Labs Project Wizard。
  2. 选择目标开发板(如 BRD4180A / EFR32MG21),SDK 选择 Gecko SDK 4.x。
  3. 在示例列表中选择 Zigbee – NCP – NCP Sample Application(或 Zigbee – SoC – ZigbeeMinimal 作为入门)。
  4. 命名工程(如 gw_ncp_basic),点击 Finish,SS5 会自动生成 .slcp 工程文件与源码目录。
  5. 在 Project Configurator 中确认 Zigbee Stack、NCP UART、Bootloader 组件已启用,波特率默认 115200。
  6. 点击 Build,编译成功后用 Debug 下载到开发板。

下载完成后,可用串口工具(如 SS5 自带的 Console 或 minicom)连接 NCP 的 UART,发送 ASH 帧测试通信。若能看到协议栈返回的版本信息,说明 NCP 固件已正常运行,网关的“协议侧”就绪。下一步即可在主机侧运行 Zigbee Host 应用,通过 UART 与 NCP 交互,完成设备入网、属性读写与事件上报。

验证要点:① J-Link 能识别目标芯片;② 工程编译无错误;③ 下载后串口有 ASH 响应;④ 主机侧能通过 NCP 接口扫描到附近 Zigbee 设备。四项全部通过,才算完成本节的环境搭建闭环。