You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CMake参数修改Zephyr项目的蓝牙设备名称配置?

解决方案:批量构建带唯一蓝牙设备名的Zephyr节点固件

针对你在VS Code nRF Connect环境下,为蓝牙Mesh节点批量生成唯一设备名的需求,提供两种可行方案:


方案一:CMake直接传递参数生成设备名(最简便)

无需修改Kconfig,直接通过CMake参数动态覆盖CONFIG_BT_DEVICE_NAME:

1. 修改项目CMakeLists.txt

在项目根目录的CMakeLists.txt中添加以下代码,自动将传入的MY_SERIAL_NUMBER参数转换为蓝牙设备名:

# 处理自定义序列号参数,生成蓝牙设备名
if(DEFINED MY_SERIAL_NUMBER)
  set(CONFIG_BT_DEVICE_NAME "Mesh_Node_${MY_SERIAL_NUMBER}" CACHE STRING "Bluetooth device name" FORCE)
endif()

注:FORCE关键字用于覆盖prj.conf中的默认配置值。

2. 在VS Code nRF Connect中创建多构建配置

  • 打开nRF Connect扩展的「Build」视图,点击「Build configurations」旁的+号添加新配置
  • 每个配置设置:
    • Configuration name:如Node A
    • Build directory:如${workspaceFolder}/build_A
    • CMake options:添加-DMY_SERIAL_NUMBER="A"(对应节点A,节点B则改为"B",以此类推)
  • 重复上述步骤创建Node B/C/D的配置

3. 批量构建

代码变更后,在「Build configurations」中选中所有节点配置,点击「Build all」即可一次性生成所有节点的HEX文件。


方案二:通过Kconfig扩展实现(更规范,适合长期维护)

通过自定义Kconfig配置项,在代码中动态组合设备名:

1. 添加自定义Kconfig项

在项目根目录创建Kconfig文件(若已存在则追加):

config MY_NODE_SERIAL
    string "Node Serial Number"
    default ""
    help
        Unique serial identifier for the mesh node (e.g., A, B, 001)

2. 修改代码动态设置设备名

在main.c的蓝牙初始化逻辑前,通过自定义配置项生成并设置设备名:

#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/hci.h>
#include <zephyr/sys/printk.h>

void main(void) {
    int err;
    char dev_name[BT_DEVICE_NAME_MAX];

    // 组合唯一设备名(格式可自定义)
    snprintf(dev_name, sizeof(dev_name), "Mesh_Node_%s", CONFIG_MY_NODE_SERIAL);

    // 设置蓝牙设备名
    err = bt_set_name(dev_name);
    if (err) {
        printk("Failed to set device name: %d\n", err);
        return;
    }

    // 初始化蓝牙
    err = bt_enable(NULL);
    if (err) {
        printk("Bluetooth init failed: %d\n", err);
    }

    // 后续业务逻辑...
}

3. 配置VS Code构建参数

和方案一类似,每个节点的构建配置中,CMake参数改为:

-DCONFIG_MY_NODE_SERIAL="A"

后续同样通过「Build all」批量生成固件。


关键说明

你最初尝试在prj.conf中用宏组合CONFIG_BT_DEVICE_NAME不可行的原因是:Zephyr的Kconfig字符串配置项不支持预处理器宏展开,必须直接传入字符串值。上述两种方案分别通过CMake覆盖配置、代码动态设置的方式绕过了这个限制。

内容的提问来源于stack exchange,提问作者ulis bad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:35:18