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

Nordic nRF52 与 nRF53 系列是当前低功耗蓝牙(BLE)传感终端最常用的 SoC 平台之一。nRF52 系列以 nRF52832、nRF52840 为代表,采用 Cortex-M4F 内核,主频 64 MHz,片上集成 2.4 GHz 射频与 BLE 协议栈;nRF53 系列以 nRF5340 为代表,采用双核架构——应用核 Cortex-M33 负责业务逻辑,网络核 Cortex-M33 独立运行蓝牙协议栈,两者通过 IPC 通信。对于入门与大多数传感终端项目,nRF52840 开发板(如 nRF52840 DK)是最稳妥的起点:Flash 1 MB、RAM 256 KB,支持 BLE 5.0、Thread、Zigbee 与 USB,外设资源充足,社区资料最丰富。若项目需要更强的安全隔离、双核并行处理或蓝牙 5.2 的 LE Audio 能力,再考虑 nRF5340 DK。

开发环境的核心是 nRF Connect SDK(NCS)。NCS 并非一个独立 IDE,而是基于 Zephyr RTOS 的完整 SDK,包含 Zephyr 内核、Nordic 驱动、蓝牙协议栈、示例工程与构建系统。它与 Zephyr 的关系可以这样理解:Zephyr 提供内核、设备模型、Kconfig 与 CMake 构建框架;NCS 在其上叠加 Nordic 的 HAL、SoftDevice Controller、nRF Connect 专用库与工具链配置。因此安装 NCS 实际上就是安装一套“Zephyr + Nordic 扩展”的完整工具链。

nRF Connect SDK 工具链结构与构建烧录链路 工具链层次(自底向上) 硬件层 nRF52840 DK / nRF5340 DK + USB 调试器 Zephyr RTOS 内核 调度器 · 设备模型 · Kconfig · CMake 构建系统 Nordic 扩展层(NCS) nRF HAL · SoftDevice Controller · BLE 协议栈 · 专用库 构建工具链 west · CMake · Ninja · GNU Arm GCC · nrfjprog VS Code + nRF Connect 插件 工程管理 · 构建 · 烧录 · 调试 · 串口终端 从源码到运行的构建烧录链路 ① 编写/选择示例工程 blinky · samples/basic/blinky ② west build 配置与编译 -b nrf52840dk_nrf52840 · Kconfig 裁剪 ③ 生成 zephyr.hex / .elf 链接脚本 · 内存布局 · 符号表 ④ west flash 烧录 nrfjprog · J-Link · SWD 接口 ⑤ 复位运行 · LED 闪烁 观察 LED1 周期亮灭 · 串口输出日志 ⑥ 验证与调试 VS Code 调试器 · RTT Viewer · 断点单步

安装 NCS 推荐使用 nRF Connect for VS Code 插件中的“Toolchain Manager”一键安装。它会自动下载并配置 west、CMake、Ninja、GNU Arm GCC 以及 nrfjprog 等工具,并管理多个 SDK 版本。安装完成后,在 VS Code 中打开 nRF Connect 侧边栏,选择“Open Terminal”进入已激活工具链的终端,此时 west 命令才可用。若手动安装,则需依次安装 Python 3.8+、west、CMake、Ninja、GNU Arm Embedded Toolchain 与 nRF Command Line Tools,并设置环境变量。

第一个工程建议从 NCS 自带的 samples/basic/blinky 开始。该示例位于 SDK 的 zephyr/samples/basic/blinky 目录下,功能是让开发板上的 LED1 以固定周期闪烁。在 VS Code 中通过 nRF Connect 插件的“Create a new application”选择该示例,或直接在终端中执行:

west build -b nrf52840dk_nrf52840 zephyr/samples/basic/blinky
west flash

其中 -b 指定板级目标,nrf52840dk_nrf52840 表示 nRF52840 DK 上的 nRF52840 芯片。构建成功后会在 build/zephyr/ 下生成 zephyr.hex 与 zephyr.elf。烧录时 west 会调用 nrfjprog 通过 J-Link 将固件写入芯片 Flash。烧录完成后开发板自动复位,LED1 开始以约 1 秒周期闪烁,说明工具链、编译、烧录链路全部打通。

若 LED 不闪烁,优先检查三点:一是板级目标是否写错(nRF5340 应使用 nrf5340dk_nrf5340_cpuapp);二是 USB 线是否连接在 DK 的“DEBUG”口而非“nRF USB”口;三是 west flash 是否报“No board connected”,此时需确认 J-Link 驱动已安装且设备管理器中出现 JLink 设备。

VS Code 插件配置方面,安装 nRF Connect 扩展后,需在设置中指定工具链路径与 SDK 路径。插件会自动识别 Toolchain Manager 安装的版本。建议同时安装 C/C++ 扩展以获得代码补全与跳转,安装 Cortex-Debug 扩展用于图形化调试。在 settings.json 中可配置 nrf-connect.toolchain.path 与 nrf-connect.sdk.path,确保插件能找到 west 与 SDK 根目录。

完成 blinky 后,可以尝试修改闪烁周期来验证构建系统是否真正生效。在示例的 main.c 中找到 k_msleep(1000),改为 k_msleep(250),重新执行 west build 与 west flash,观察 LED 闪烁明显加快。这一步看似简单,却完整覆盖了“修改源码 → 重新编译 → 烧录 → 观察结果”的闭环,是后续所有传感终端开发的基础操作模式。

本节关键交付物:一个可编译、可烧录、可运行的 blinky 工程,以及一条已验证的 west build + west flash 命令链路。建议将板级目标、SDK 版本、工具链版本记录在工程 README 中,便于后续复现与团队协作。