1. 搭建蓝牙芯片固件升级开发环境
任务目标
本案例完成蓝牙芯片固件升级开发环境的搭建,以Nordic nRF52840 DK开发板配合nRF Connect SDK v2.6.x为例,建立可编译、可烧录的最小工程骨架,为后续OTA升级实验提供一致的本地工具链与验证路径。
环境依赖清单
| 组件 | 版本/要求 | 用途 |
|---|---|---|
| nRF Connect SDK (NCS) | v2.6.x | 固件源码、Zephyr RTOS、BLE协议栈 |
| nRF Command Line Tools | 10.24.x | 提供west、nrfjprog、J-Link驱动 |
| SEGGER Embedded Studio | 7.x(可选) | IDE调试(本案例使用命令行) |
| Python | 3.8+ | west工具依赖 |
| Git | 2.30+ | 拉取NCS仓库 |
安装与配置步骤
- 安装nRF Command Line Tools(包含J-Link驱动与nrfjprog)。
- 创建NCS工作目录并拉取SDK:
mkdir ncs && cd ncs
west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.6.0 nrf
cd nrf
west update
- 安装Python依赖(west工具链):
pip3 install -r zephyr/scripts/requirements.txt
pip3 install -r nrf/scripts/requirements.txt
- 验证工具链:
west --version
nrfjprog --version
最小工程创建与编译
在ncs/nrf/apps下创建fw_update_env工程,包含以下两个文件:
# prj.conf
CONFIG_GPIO=y
CONFIG_SERIAL=y
CONFIG_UART_CONSOLE=y
CONFIG_BOOTLOADER_MCUBOOT=y
/* main.c */
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/gpio.h>
#define LED0_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
void main(void)
{
if (!gpio_is_ready_dt(&led)) {
return;
}
gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
while (1) {
gpio_pin_toggle_dt(&led);
k_sleep(K_MSEC(500));
}
}
在ncs/nrf/apps/fw_update_env目录下创建CMakeLists.txt:
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(fw_update_env)
target_sources(app PRIVATE src/main.c)
编译与烧录
cd ncs/nrf/apps/fw_update_env
west build -b nrf52840dk_nrf52840
west flash
验证方法
- 编译通过:west build命令无错误退出,生成
build/zephyr/zephyr.hex。 - 烧录成功:west flash完成后,开发板LED0以0.5秒间隔闪烁。
- 串口输出:连接USB串口(115200-8-N-1),复位开发板应看到Zephyr启动日志(含
*** Booting Zephyr OS build v3.5.0-... ***)。
满足以上三点即环境搭建成功。若编译报错,优先检查west update是否完整、Python依赖是否安装;若烧录失败,确认开发板已连接且J-Link驱动正常。