采用蓝牙OTA方式需要注意哪些位置
1. Bootloader 与分区配置[*]必须使用 MCUboot 作为可升级 bootloader:
[*]使用 sysbuild 时在 sysbuild.conf 中启用:SB_CONFIG_BOOTLOADER_MCUBOOT=y
或在命令行:west build -b <board> -- -DSB_CONFIG_BOOTLOADER_MCUBOOT=y
[nRF52 FOTA; nRF54L FOTA]
[*]对于 nRF54L 系列,注意官方给出的 MCUboot 额外配置(如 direct-xip、外部 Flash 等),以及必要时调整 CONFIG_BOOT_MAX_IMG_SECTORS(例如 nRF54LM20 DK 需要设为 256)。[nRF54L FOTA; Academy 54LM20 提示]
2. 应用侧启用 FOTA(MCUmgr + SMP over BLE)
[*]应用必须是 BLE Peripheral:
[*]需要启用 CONFIG_BT_PERIPHERAL。[nRF52 FOTA; nRF54L FOTA]
[*]推荐使用简化开关 CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU:
[*]在 prj.conf 中添加:CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
[*]该选项会自动:
[*]启用 MCUmgr、SMP over BLE 传输;
[*]启用 Image/OS 管理 handler;
[*]启用 BT reassembly、加大缓冲区(通过 CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP)。[nRF52 FOTA; nRF54L FOTA; Academy Exercise 5]
[*]官方示例构建方式(以 Peripheral LBS 为例):west build -b <board_target> -- \-DSB_CONFIG_BOOTLOADER_MCUBOOT=y \-DCONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
[nRF54L FOTA 示例命令; nRF52 FOTA 示例命令]
[*]CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU 适合学习/原型阶段,量产项目建议查看它隐含的选项,只挑自己需要的单独配置。[Academy Exercise 5 说明]
3. 安全性(强烈建议)
[*]防止未授权 OTA:
[*]强烈建议启用:CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_AUTHEN=y
[*]这样在访问 SMP 特征前必须完成配对,避免任意手机给设备刷固件。[nRF54L FOTA 安全提示; Academy 安全建议]
[*]nRF54L15 如需加密镜像(防止固件被窃取/篡改),可以结合 MCUboot + ECIES-X25519 + KMU,官方有专门文档和示例流程。[加密 DFU 说明]
4. 蓝牙连接与吞吐量
[*]通过 CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP 或参考 overlay-bt.conf 中的配置,适当增大:
[*]MTU / ACL buffer 大小;
[*]MCUmgr reassembly buffer;
以提高 OTA 速度,但会增加 RAM 占用。[nRF54L FOTA 速度优化; nRF52 FOTA 说明]
[*]SMP Service UUID 为 8D53DC1D-1DB7-4CD3-868B-8A527460AA84,如需让手机 App 更容易发现 DFU 设备,可以把该 UUID 加入广播/扫描响应。[nRF52 FOTA]
5. 手机端 / 上位机工具选择与使用
[*]官方推荐的手机 App:
[*]nRF Connect Device Manager:专门支持 MCUmgr/SMP OTA,Academy 教程中有完整操作步骤。[Academy Exercise 5 步骤]
[*]也可以用 nRF Connect for Mobile 或 PC 端 mcumgr 工具。[Academy Exercise 5 说明]
[*]注意镜像文件类型:
[*]常用:app_update.bin、zephyr.signed.bin 或 dfu_application.zip,不同工具支持的格式略有差异,按文档/工具说明选择。[Academy Exercise 5 文件说明]
6. 量产项目的额外注意点
[*]不要长期依赖 CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU,而是:
[*]打开它看它 select/imply 了哪些 Kconfig;
[*]只把真正需要的选项拷贝到自己工程中,避免引入多余功能。[Academy 关于 CONFIG_NCS_SAMPLE* 的建议]
[*]结合芯片安全特性(如 nRF54L 的 KMU、镜像签名/加密、调试口锁定等)做整体安全设计。
页:
[1]