2. 开发环境搭建与第一个工程
nRF54 系列是 Nordic 基于 Cortex-M33 的新一代低功耗无线 SoC,官方推荐使用 nRF Connect SDK(简称 NCS)进行开发。NCS 不是单纯的芯片驱动包,而是把 Zephyr RTOS、HAL、无线协议栈、示例工程和构建系统整合在一起的完整 SDK。因此搭建环境的核心,是让 west 工具链、Zephyr 构建系统和 NCS 仓库三者协同工作,最终能编译并烧录一个 blinky 示例到开发板。
一、安装 nRF Connect SDK 与工具链
最省事的方式是安装 nRF Connect for VS Code 扩展包,它自带 Toolchain Manager,可以一键安装指定版本的 NCS 和配套的编译器、Python 环境。安装完成后,工具链通常位于用户目录下,例如 Windows 上为 C:\ncs\toolchains\<hash>,Linux/macOS 上为 ~/ncs/toolchains/<hash>。这个目录里包含 arm-zephyr-eabi 交叉编译器、CMake、Ninja、Python 及 west。
如果偏好命令行,也可以手动安装。先准备 Python 3.10 以上环境,然后执行:
pip install 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
其中 west init 拉取的是 NCS 主仓库,west update 会根据 manifest 文件把 Zephyr、MCUboot、nrfxlib、Matter 等子模块全部拉齐。这一步耗时较长,但只需执行一次。完成后,~/ncs 就是工作区根目录,所有工程都建议放在这个目录下,便于 west 自动识别。
二、west 工具链配置要点
west 是 Zephyr 的元构建工具,它本身不编译代码,而是负责管理多仓库、调用 CMake 和 Ninja。日常使用中需要关注三个环境变量:ZEPHYR_BASE 指向 Zephyr 目录,ZEPHYR_TOOLCHAIN_VARIANT 指定工具链类型(NCS 下通常为 zephyr),以及把工具链的 bin 目录加入 PATH。在 VS Code 中这些由扩展自动注入;命令行下则需要手动 source 环境脚本,例如 Linux 上执行 source ~/ncs/zephyr/zephyr-env.sh。
可以用 west --version 和 west topdir 验证配置是否正确。前者输出 west 版本,后者应输出 NCS 工作区根目录。若 west topdir 报错,说明当前目录不在工作区内,或环境变量未生效。
三、创建并编译 blinky 示例
NCS 自带大量示例,blinky 是最适合验证环境的起点。它位于 nrf/samples/blinky,功能是让开发板上的 LED 周期性闪烁。创建工程有两种方式:直接在示例目录编译,或复制到自己的工作区。推荐后者,便于修改:
cd ~/ncs
cp -r nrf/samples/blinky my_blinky
cd my_blinky
west build -b nrf54l15dk/nrf54l15/cpuapp
这里的 -b 指定 board target。nRF54L15 DK 的完整 target 为 nrf54l15dk/nrf54l15/cpuapp,其中 cpuapp 表示应用核。若使用 nRF54H20,则 target 形如 nrf54h20dk/nrf54h20/cpuapp。首次编译会生成 build 目录,包含 CMake 缓存、链接脚本和最终的 zephyr.elf、zephyr.hex。编译成功后终端会输出 Flash 和 RAM 占用,例如:
Memory region Used Size Region Size %age Used
FLASH: 28640 B 1.5 MB 1.82%
RAM: 9120 B 512 KB 1.74%
这些数字是判断工程是否正常的重要依据。若 FLASH 占用接近 100%,说明配置有误或链接了过多模块;若为 0,则通常意味着没有正确选择 board 或源文件未被编译。
四、烧录到开发板与串口日志查看
烧录使用 west flash。它会自动调用 J-Link 或 nRF Util 完成下载。若开发板连接了多个调试器,可用 --dev-id 指定序列号。烧录完成后,开发板复位并开始运行,LED 应按示例设定的周期闪烁。
串口日志是验证运行状态的关键。nRF54 DK 通过板载调试器提供 VCOM 串口,波特率通常为 115200。Linux 下设备节点为 /dev/ttyACM0,Windows 下为 COMx。可用如下命令查看:
west espressif monitor # 不适用于 NCS
# NCS 推荐:
python -m serial.tools.miniterm /dev/ttyACM0 115200
更常用的方式是 west espressif 之外的 nrfutil 或直接使用 VS Code 的 Serial Monitor。正常启动日志会包含 Zephyr 版本、board 名称、时钟初始化信息,随后是应用自己的打印。若串口无输出,先确认波特率、端口号,再检查开发板是否处于复位状态或供电不足。
五、常见问题与判断依据
环境搭建阶段最容易卡在三个地方。第一,west update 中途失败,通常是网络问题,可重复执行,west 会断点续传。第二,编译报 “board not found”,说明 board target 拼写错误或 NCS 版本过旧,可用 west boards | grep nrf54 列出当前支持的板子。第三,烧录后 LED 不闪、串口无输出,先确认开发板供电和调试器连接,再检查是否误烧了其他工程。
建议在 blinky 跑通后,立即做一次“修改—重编译—重烧录”的闭环验证:把示例中的闪烁周期从默认值改为 500 ms,重新执行 west build 和 west flash,观察 LED 节奏变化。这一步能确认整条工具链真正可用,而不只是“编译通过”。完成之后,就可以在此基础上添加自己的传感器或无线功能了。