2、开发环境搭建:nRF52840 DK硬件介绍、Zephyr RTOS环境配置、VS Code + nRF Connect插件安装
好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,很多同学学蓝牙学到一半放弃,不是因为协议栈多难,而是环境没配好,编译报错一堆,心态直接崩了。我当年也踩过不少坑,今天咱们一步步来,把地基打牢。
2.1 nRF52840 DK 硬件概览
先看看咱们手里的板子。nRF52840 DK,这是Nordic官方出的开发板。我个人觉得,它是目前做蓝牙多连接开发最顺手的板子之一。
板子上有几个关键部分,你得心里有数:
- 主芯片:nRF52840 SoC,ARM Cortex-M4内核,带FPU,主频64MHz。Flash 1MB,RAM 256KB。做多连接并发,这个配置够用。
- 板载调试器:J-Link OB,直接USB供电就能调试。不用额外买调试器,省心。
- 天线接口:板载PCB天线,也预留了u.FL接口。我建议初期用板载天线就行,别折腾外接。
- 用户按键和LED:4个按键,4个LED。调试多连接状态时,这些灯能救命。
- Arduino兼容接口:方便扩展传感器模块。
小提示:拿到新板子,先插USB看看电源灯亮不亮。我遇到过板子出厂时固件没烧好,灯不亮还以为板子坏了。别慌,按住复位键再试试。
2.2 Zephyr RTOS 环境配置
Zephyr RTOS,这是咱们课程的核心操作系统。为什么选它?因为它对nRF52840支持最好,而且蓝牙协议栈集成度极高。说白了,你写应用层代码就行,底层调度和协议栈它全包了。
配置步骤,我按顺序来:
- 安装依赖工具:Windows下装Git、Python 3.8+、CMake、Ninja。Linux下用包管理器一把梭。我习惯用Ubuntu 22.04,一条命令搞定:
sudo apt install git cmake ninja-build gperf ccache dfu-util device-tree-compiler python3-pip - 获取Zephyr源码:用west工具。先装west:
pip3 install west。然后初始化:west init zephyrproject。接着更新:cd zephyrproject && west update。这一步会下载整个Zephyr和它的模块,大概1-2GB,网速慢的话耐心等。 - 安装SDK:Zephyr SDK包含了交叉编译工具链。下载对应版本,解压到
~/.local/zephyr-sdk-0.16.1。然后运行setup.sh。嗯,这里要注意,SDK版本要和Zephyr版本匹配,不然编译会报奇奇怪怪的错误。 - 配置环境变量:把下面几行加到
~/.bashrc里:
然后export ZEPHYR_BASE=~/zephyrproject/zephyr export ZEPHYR_TOOLCHAIN_VARIANT=zephyr export ZEPHYR_SDK_INSTALL_DIR=~/.local/zephyr-sdk-0.16.1source ~/.bashrc生效。 - 验证安装:编译一个示例项目。进入
zephyr/samples/basic/blinky,运行west build -b nrf52840dk_nrf52840。如果编译成功,说明环境没问题。
避坑指南:我曾经在Windows上折腾Zephyr,路径里有中文空格,编译报错找了一天。后来发现是CMake解析路径出问题。所以,强烈建议所有路径用英文,不要有空格。
2.3 VS Code + nRF Connect 插件安装
命令行编译虽然酷,但写代码还是得有个趁手的编辑器。VS Code,免费又好用,配上nRF Connect插件,开发体验直接拉满。
安装步骤:
- 下载VS Code:去官网下载安装,没什么好说的。
- 安装nRF Connect插件:在VS Code扩展市场搜索"nRF Connect",安装Nordic官方那个。这个插件集成了项目创建、编译、烧录、调试功能。
- 配置工具链路径:打开VS Code设置,搜索"nrf-connect.toolchain",把Zephyr SDK路径填进去。不然插件找不到编译器。
- 导入Zephyr项目:用插件打开
zephyrproject/zephyr目录。插件会自动识别Kconfig和设备树文件。
我个人习惯,还会装几个辅助插件:
- C/C++ IntelliSense:代码补全和跳转,写Zephyr代码必备。
- GitLens:看代码历史,方便回溯。
- YAML:Zephyr的设备树文件是YAML格式,语法高亮有用。
小技巧:nRF Connect插件有个"Device Tree Editor"功能,图形化配置引脚和外设。你想想看,不用手写设备树文件,拖拽就能配置,是不是很爽?我刚开始学Zephyr时,设备树语法看得头大,后来发现这个编辑器,效率提升不少。
2.4 第一个示例:点灯
环境搭好了,咱们跑个经典的点灯程序,验证一切正常。
用VS Code打开zephyr/samples/basic/blinky,点击nRF Connect插件里的"Build"按钮。编译成功后,板子插USB,点击"Flash"烧录。你会看到板子上的LED1开始闪烁。
如果灯不亮,别急。检查这几个地方:
- USB线是不是数据线?有些线只能充电,不能传数据。
- 板子上的开关是不是拨到了"ON"?
- J-Link驱动装了吗?Windows下需要装SEGGER的驱动。
灯亮了,恭喜你,环境搭建成功。接下来咱们就可以正式进入蓝牙多连接的世界了。
核心要点:nRF52840 DK + Zephyr RTOS + VS Code + nRF Connect,这套组合拳是当前最主流的多连接开发方案。环境搭好了,后面写代码就是水到渠成的事。