1. 搭建蓝牙芯片固件升级开发环境

任务目标

本案例完成蓝牙芯片固件升级开发环境的搭建,以Nordic nRF52840 DK开发板配合nRF Connect SDK v2.6.x为例,建立可编译、可烧录的最小工程骨架,为后续OTA升级实验提供一致的本地工具链与验证路径。

环境依赖清单

组件版本/要求用途
nRF Connect SDK (NCS)v2.6.x固件源码、Zephyr RTOS、BLE协议栈
nRF Command Line Tools10.24.x提供west、nrfjprog、J-Link驱动
SEGGER Embedded Studio7.x(可选)IDE调试(本案例使用命令行)
Python3.8+west工具依赖
Git2.30+拉取NCS仓库

安装与配置步骤

  1. 安装nRF Command Line Tools(包含J-Link驱动与nrfjprog)。
  2. 创建NCS工作目录并拉取SDK:
mkdir ncs && cd ncs
west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.6.0 nrf
cd nrf
west update
  1. 安装Python依赖(west工具链):
pip3 install -r zephyr/scripts/requirements.txt
pip3 install -r nrf/scripts/requirements.txt
  1. 验证工具链:
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

验证方法

  1. 编译通过:west build命令无错误退出,生成build/zephyr/zephyr.hex。
  2. 烧录成功:west flash完成后,开发板LED0以0.5秒间隔闪烁。
  3. 串口输出:连接USB串口(115200-8-N-1),复位开发板应看到Zephyr启动日志(含*** Booting Zephyr OS build v3.5.0-... ***)。

满足以上三点即环境搭建成功。若编译报错,优先检查west update是否完整、Python依赖是否安装;若烧录失败,确认开发板已连接且J-Link驱动正常。

nRF52840固件升级开发环境搭建流程 1. 安装工具 nRF命令行工具 + Git + Python 2. 拉取NCS SDK west init + west update 3. 安装依赖 pip3 install -r requirements 4. 创建工程 fw_update_env + prj.conf 5. 编译固件 west build -b nrf52840dk 6. 烧录验证 west flash + LED闪烁 验证通过 LED闪烁 + 串口日志 编译/烧录失败 检查依赖与连接 修正后重试