4、开发环境搭建:安装nRF Connect SDK、工具链、调试器、串口驱动
nRF52840与nRF5340的端侧AI开发,本质上是在一个高度集成的嵌入式RTOS生态中完成模型推理部署。与使用Arduino或裸机编程不同,Nordic官方推荐的开发路径基于nRF Connect SDK(NCS),它构建在Zephyr RTOS之上,集成了BLE、Thread、Zigbee协议栈以及TensorFlow Lite Micro(TFLM)等机器学习推理引擎。搭建一套正确、可复现的开发环境,是后续编写AI应用、调试模型性能、分析功耗的前提。本章将围绕工具链选择、SDK获取、调试器与串口驱动安装四个核心环节展开,帮助你在Windows、Linux或macOS上建立一套稳定高效的nRF开发环境。
上图展示了开发环境的整体架构:主机上的工具链通过USB与板载调试器通信,调试器通过SWD接口访问nRF芯片,同时提供虚拟串口用于日志输出。理解这条链路,有助于在后续遇到“无法烧录”“串口无输出”等问题时快速定位故障点。
4.1 核心原理:理解NCS的构建系统与依赖关系
nRF Connect SDK并非一个简单的代码库,而是一个基于Zephyr RTOS的模块化平台。其核心构建原理基于West(Zephyr's meta-tool)和CMake。West负责拉取并管理多个Git仓库(包括zephyr、nrf、mcuboot、tf-micro等),而CMake负责根据硬件板卡定义(Board Definition)和应用程序配置(prj.conf)生成最终的固件镜像。
对于AI应用开发者,需要特别关注两个关键点:设备树(Device Tree)和Kconfig配置。设备树描述了硬件资源(如GPIO、SPI、UART外设)的地址与连接关系,而Kconfig则决定了哪些驱动、协议栈和AI推理引擎被编译进固件。例如,在nRF5340上运行TFLM,需要在prj.conf中启用CONFIG_TFLITE_MICRO,并在设备树中为Tensor分配足够的内存池。
此外,NCS的版本管理采用“SDK版本号+提交哈希”的方式。不同版本的NCS对应不同的Zephyr版本,而TFLM等第三方库的兼容性也随版本变化。因此,锁定SDK版本是保证项目可复现的第一步。Nordic官方通过nRF Connect for Desktop的“Toolchain Manager”来管理不同版本的SDK与工具链,这是最推荐的安装方式。
4.2 操作流程:从零搭建完整开发环境
以下流程以Windows 11 64位系统为例(Linux/macOS操作类似,仅安装包格式不同)。请务必按照顺序操作,避免因依赖缺失导致的编译失败。
步骤一:安装nRF Connect for Desktop
从Nordic官网下载nRF Connect for Desktop安装包。安装完成后,打开应用,在左侧导航栏找到“Toolchain Manager”。这是整个环境的核心入口,它负责下载、安装和管理不同版本的NCS及配套工具链。
步骤二:安装VS Code扩展
虽然Toolchain Manager自带命令行编译功能,但推荐使用VS Code进行代码编辑与调试。在VS Code扩展市场搜索“nRF Connect for VS Code”并安装。该扩展提供了图形化的项目创建、构建、烧录和调试界面,同时集成了设备树编辑器,能直观查看引脚分配。
步骤三:安装串口驱动(虚拟串口)
nRF52840 DK和nRF5340 DK板载的调试器(DAPLink或J-Link OB)在插入USB后,会枚举出一个虚拟串口(COM口)。在Windows 10/11系统上,通常会自动安装驱动。如果设备管理器中显示“未知设备”或带有黄色感叹号,则需要手动安装驱动:
- 对于nRF52840 DK(使用DAPLink):下载并安装“mbed Windows serial driver”。
- 对于nRF5340 DK(使用J-Link OB):安装SEGGER J-Link驱动包,其中包含虚拟串口驱动。
安装完成后,在设备管理器的“端口(COM和LPT)”下应能看到类似“J-Link CDC UART Port (COM5)”的设备。
步骤四:验证工具链安装
打开VS Code,按Ctrl+Shift+P打开命令面板,输入“nRF Connect: Show Installed Toolchains”。确认列表中存在已安装的SDK版本。接着,打开终端,输入以下命令验证编译器是否可用:
arm-none-eabi-gcc --version
west --version
nrfjprog --version
如果三个命令均能正常输出版本信息,说明核心工具链安装成功。
4.3 案例拆解:nRF5340 DK首次编译TFLM示例
为了验证环境是否真正可用,我们以nRF5340 DK为硬件平台,编译并烧录一个TensorFlow Lite Micro的“Hello World”示例。该示例会通过串口打印“Hello World!”并输出一个正弦波预测值。
背景与目标:确认NCS环境能正确编译包含TFLM推理引擎的固件,并能通过串口看到输出。
操作步骤:
- 在VS Code中,点击nRF Connect扩展的“Create a new application”按钮。
- 选择“Copy a sample”,在搜索框中输入“tflite”,选择“TensorFlow Lite Micro Hello World”示例。
- 选择一个工作目录(例如
D:\ncs_projects),点击“Create”。 - 在项目配置中,选择“Board”为
nrf5340dk_nrf5340_cpuapp(注意选择CPU应用核,而非网络核)。 - 点击“Build Configuration”中的“Build”按钮,开始编译。
关键输出与日志分析:编译过程约需3-5分钟(取决于电脑性能)。编译成功后,终端会显示Memory region Used Size Region Size %age Used的内存占用统计。对于Hello World示例,Flash占用约200KB,RAM占用约50KB。如果编译失败,常见错误为CONFIG_TFLITE_MICRO未定义或内存不足,此时需检查prj.conf文件。
烧录与验证:将nRF5340 DK通过USB连接到电脑,点击“Flash”按钮。烧录完成后,打开串口终端(波特率115200),应能看到周期性打印的“x_value: 0.0, y_value: 0.0”等数据。这表明TFLM推理引擎已成功在nRF5340上运行。
4.4 常见误区与总结复盘
在搭建环境的过程中,开发者常遇到以下几类问题,这里给出针对性的排查建议。
| 误区/问题 | 现象 | 根因分析 | 解决方案 |
|---|---|---|---|
| SDK版本不匹配 | 编译报错:Zephyr version mismatch |
项目基于旧版NCS创建,但当前Toolchain Manager安装的是新版SDK | 在Toolchain Manager中安装项目对应的SDK版本,或使用West更新项目 |
| 串口驱动未安装 | 设备管理器显示“USB串行设备”但无法打开 | Windows未正确识别J-Link CDC驱动 | 重新安装SEGGER J-Link软件包,勾选“Install USB Driver”选项 |
| 烧录时找不到设备 | nrfjprog报错:No emulator connected |
USB线为纯充电线,无数据线功能;或板载调试器固件损坏 | 更换数据线;使用nRF Connect for Desktop的“Programmer”应用恢复调试器固件 |
| 内存不足 | 链接错误:region 'RAM' overflowed |
TFLM模型过大,或未配置内存池 | 在prj.conf中增加CONFIG_HEAP_MEM_POOL_SIZE,或使用更小的模型 |
总结:搭建nRF Connect SDK开发环境的核心在于理解“West管理依赖、CMake构建、J-Link调试、CDC串口输出”这条主线。建议初学者严格按照官方Toolchain Manager的流程操作,避免手动混装不同版本的工具链。环境搭建完成后,务必通过编译并烧录一个TFLM示例来验证全链路是否通畅,这能为后续的AI模型部署节省大量排障时间。