2. nRF54硬件平台与Thread开发环境

Thread 是基于 IEEE 802.15.4 的低功耗 IPv6 Mesh 网络协议,Nordic 的 nRF54 系列是面向该场景的新一代多协议 SoC。要把 Thread 真正跑起来,第一步不是写应用逻辑,而是把“硬件平台 + SDK + 工具链 + 示例工程”这条链路打通。本节围绕 nRF54 开发板选型、nRF Connect SDK 安装、工具链配置,以及第一个 Thread 示例的编译与烧录展开,目标是让读者能独立完成一次可复现的环境搭建。

一、nRF54 平台与开发板选型

nRF54 系列目前主要包括 nRF54H20、nRF54L15、nRF54L10、nRF54L05 等型号。它们都集成了多协议 2.4 GHz 射频,可运行 Bluetooth LE、Thread、Zigbee 和 802.15.4 等协议。其中 nRF54H20 定位高性能,带有多个 Cortex-M33 内核与更丰富的外设;nRF54L 系列则主打低功耗与成本,适合电池供电的 Thread 终端节点。选型时先明确三个问题:是否需要 Thread 边界路由器(Border Router)能力、节点是常供电还是电池供电、是否需要 Matter 或 Bluetooth LE 并发。

官方开发板方面,nRF54H20 DK 和 nRF54L15 DK 是最常用的两块。nRF54L15 DK 板载调试器、按键、LED 和 Arduino 兼容排针,适合入门与节点开发;nRF54H20 DK 资源更强,适合做复杂应用或边界路由器原型。如果要做 Thread 边界路由器,通常还需要一块运行 OpenThread Border Router 的主机(如 Raspberry Pi)配合,nRF54 开发板可作为 RCP(Radio Co-Processor)通过 USB 或 UART 接入。下表给出一个简化的选型参考。

开发板典型定位Thread 角色适用场景
nRF54L15 DK低功耗节点Sleepy End Device / Router传感器、开关、电池设备
nRF54H20 DK高性能多协议Router / RCP复杂应用、边界路由器原型
nRF54L15 + Pi边界路由器组合RCP + OTBRThread 网络接入 IP

二、nRF Connect SDK 安装

Nordic 当前主推 nRF Connect SDK(NCS),它基于 Zephyr RTOS,并集成了 OpenThread、Matter、Bluetooth LE 等组件。安装方式推荐使用 nRF Connect for VS Code 扩展或 nRF Connect SDK Toolchain Manager。以 Toolchain Manager 为例,安装流程如下:

  1. 从 Nordic 官网下载并安装 nRF Connect for Desktop,在其中启动 Toolchain Manager。
  2. 在 Toolchain Manager 中选择一个 NCS 版本,例如 v2.6.0 或更新版本,点击 Install。工具链会同时安装编译器、Zephyr SDK、west 等依赖。
  3. 安装完成后,点击 Open Terminal,进入已配置好环境变量的终端。
  4. 在终端中执行 west --version 和 nrfutil --version 验证工具是否可用。

如果偏好命令行,也可以手动克隆 NCS 仓库并初始化 west 工作区。核心命令如下:

west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.6.0 ncs
cd ncs
west update
west zephyr-export
pip install -r zephyr/scripts/requirements.txt
pip install -r nrf/scripts/requirements.txt

安装完成后,建议设置环境变量 ZEPHYR_BASE 指向 ncs/zephyr,并把 ncs/toolchain 下的工具链路径加入 PATH。这样后续使用 west build 时不会出现找不到工具链的问题。

三、工具链配置与工程结构

NCS 的构建系统由 west + CMake + Ninja 组成。一个典型的 Thread 示例工程目录结构如下:

thread_sample/
├── CMakeLists.txt
├── prj.conf
├── boards/
│   └── nrf54l15dk_nrf54l15_cpuapp.overlay
└── src/
    └── main.c

其中 prj.conf 用于打开 Thread 相关配置,例如:

CONFIG_NETWORKING=y
CONFIG_NET_IPV6=y
CONFIG_NET_IPV6_NBR_CACHE=y
CONFIG_OPENTHREAD=y
CONFIG_OPENTHREAD_SHELL=y
CONFIG_OPENTHREAD_JOINER=y
CONFIG_OPENTHREAD_CHILD_SUPERVISION=y
CONFIG_LOG=y

开发板 overlay 文件用于指定 UART、LED、按键等引脚映射。nRF54L15 DK 的默认设备树已经包含常用外设,通常只需在 overlay 中确认 status = "okay" 即可。工具链配置的关键是保证 west build 能找到正确的 board target,例如 nrf54l15dk/nrf54l15/cpuapp。

建议在 VS Code 中安装 nRF Connect 扩展,它会自动识别 NCS 安装路径、提供 board 选择器和 build/flash 按钮,减少手动配置环境变量的出错概率。

四、第一个 Thread 示例编译与烧录

NCS 自带 samples/openthread/cli 示例,非常适合作为第一个 Thread 工程。它提供一个串口 CLI,可以执行 ot 命令查看网络状态、加入网络、发送 UDP 数据等。编译步骤如下:

  1. 打开 Toolchain Manager 终端,进入 NCS 目录。
  2. 执行 west build -b nrf54l15dk/nrf54l15/cpuapp samples/openthread/cli。
  3. 编译成功后,执行 west flash 烧录到开发板。
  4. 用串口工具(如 nRF Connect Serial Terminal)连接开发板,波特率通常为 115200。

烧录后,串口会输出 OpenThread 启动日志。输入 ot state 可查看当前角色,初始通常为 disabled;输入 ot ifconfig up 和 ot thread start 后,设备会尝试成为 Router 或 Child。若周围已有 Thread 网络,可通过 ot joiner start 或 ot commissioner 流程加入。此时用 ot ipaddr 可看到分配的 Mesh-Local 或 Global IPv6 地址,说明 Thread 协议栈已经正常工作。

nRF54L15 与 nRF54H20 的 board target 不同,编译前务必确认 -b 参数与开发板一致。若出现 “board not found”,通常是 NCS 版本与开发板支持包不匹配,可升级 NCS 或检查 zephyr/boards 下是否存在对应目录。

下面这张图概括了从开发板选型到第一个 Thread 示例跑通的完整链路,包括硬件、SDK、工具链和验证点之间的关系。

nRF54 Thread 开发环境搭建链路 ① 开发板选型 nRF54L15 DK(节点) nRF54H20 DK(高性能) + Raspberry Pi(OTBR) ② NCS 安装 Toolchain Manager west init / update Zephyr SDK + nrfutil ③ 工具链配置 west + CMake + Ninja prj.conf / overlay board target 选择 ④ 编译烧录 west build west flash 串口 115200 OpenThread CLI 验证点(samples/openthread/cli) ot ifconfig up 启用接口 ot thread start 启动协议栈 ot state 查看角色 ot ipaddr 查看地址 结果判断 state = router / child 且 ipaddr 出现 Mesh-Local 地址 → Thread 协议栈已正常运行,可继续做 UDP / CoAP 测试 关键依赖 NCS 版本 Zephyr SDK board target 串口驱动 常见问题 board not found west 未初始化 串口无输出 版本不匹配

完成上述步骤后,你已经拥有一个可运行的 Thread 节点。接下来可以在此基础上修改 prj.conf 打开 CoAP、DNS-SD 或 Matter 支持,也可以把 nRF54 开发板配置为 RCP,接入 OpenThread Border Router,让 Thread 网络与外部 IP 网络互通。环境搭建的价值在于:后续所有 Thread 实验都建立在这条可复现的编译、烧录、验证链路上,只有先把这条链路跑通,才能把精力集中在网络行为和应用逻辑本身。