15810361152 发表于 2026-2-12 10:24:16

针对双bank和单bank的使用方法建议

一、概念对齐
[*]双‑bank / 双槽(dual‑bank)
新固件先放到“备用区域”(bank1 / secondary slot),验证通过后再复制/交换到主区域(bank0 / primary slot),原应用在整个传输和验证过程中都保留,可回退。[nRF5 dual-bank 描述; MCUboot 双槽说明]

[*]单‑bank / 单槽(single‑bank)
新固件直接覆盖当前应用所在区域,没有备用镜像;如果升级中断,设备只能停在 DFU/bootloader 模式等待重新刷机。[nRF5 single-bank 描述; MCUboot 单槽模式]

二、什么时候优先用双‑bank(推荐场景)文档普遍把双‑bank作为首选、安全方案:[nRF5 dual-bank 优先]
[*]产品对“升级失败不能变砖”要求高
[*]例如量产设备、现场难以接触维护的设备。

[*]升级失败时仍能启动旧应用继续工作或重新尝试 DFU。



[*]有足够 Flash 空间
[*]需要能在应用和应用数据之间腾出一块足够大的区域存放完整新镜像。[nRF5 dual-bank 空间条件]



[*]需要回退机制 / 版本切换策略
[*]MCUboot 的 swap / overwrite / direct‑XIP / direct‑XIP with revert 等模式都基于双槽,支持更灵活的升级策略。[MCUboot 模式表]



[*]多核或多镜像系统
[*]如 nRF54H20 的 merged slot 策略,本质上也是双槽,只是把多核固件合并成一个镜像在两个槽之间切换,以保证版本一致性。[nRF54H merged slot]



总结:如果 Flash 够用、产品对可靠性有要求,优先选双‑bank/双槽。三、什么时候考虑单‑bank(single‑bank / 单槽)1. nRF5 SDK(legacy bootloader)
[*]当可用空闲空间不足以容纳完整新镜像时,必须退而求其次使用 single‑bank:
[*]文档说明:如果新镜像大于应用和应用数据之间的空闲空间,就会删除应用,转为 single‑bank 更新。[nRF5 single-bank 条件]



[*]可以通过 NRF_DFU_SINGLE_BANK_APP_UPDATES 让 single‑bank 成为首选(节省空间),也可以通过 NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES 禁止 single‑bank(更安全)。[nRF5 DFU 配置]

2. nRF Connect SDK + MCUboot
[*]使用 CONFIG_SINGLE_APPLICATION_SLOT / SB_CONFIG_MCUBOOT_MODE_SINGLE_APP 时,MCUboot 只保留一个应用槽,不能通过应用内 DFU 做双镜像切换,通常配合串行恢复等方式使用。[MCUboot 单槽模式; sysbuild 强制选项映射]

[*]官方博客也强调:single‑bank 的主要优点是几乎把可用 NVM 翻倍,代价是升级过程中不保留旧应用,失败时只能回到 DFU 模式重刷。[Single-bank DFU 博客]

适用场景:
[*]Flash 极度紧张
[*]应用体积接近芯片 Flash 上限,无法再留出完整 secondary slot。



[*]可以接受“升级失败后必须重新刷机”
[*]例如开发阶段、内部设备、可轻松接触的设备。



[*]只需要通过串口/线缆恢复,不要求在线 OTA 的高可靠性。

四、与 OTA 方式的关系(蓝牙 OTA / FOTA)
[*]蓝牙 OTA / 应用内 DFU
[*]通常依赖 MCUboot 的双槽模式(swap / overwrite / direct‑XIP 等),应用通过 MCUmgr + SMP 把镜像写到 secondary slot,再由 MCUboot 切换。[MCUboot 双槽需求]

[*]如果改成单槽(single‑bank),就失去“新旧镜像并存”的优势,蓝牙 OTA 失败时设备会直接没有可运行应用。



因此:如果你的主要升级方式是 BLE OTA,且产品对可靠性有要求,强烈建议使用双‑bank/双槽。五、实用选择建议(总结)
[*]优先选双‑bank / 双槽
[*]条件:Flash 足够;需要 BLE OTA / FOTA;产品对可靠性有要求。

[*]配置方向:
[*]nRF5 SDK:默认 dual‑bank,除非显式打开 NRF_DFU_SINGLE_BANK_APP_UPDATES。[nRF5 DFU 默认行为]

[*]nRF Connect SDK:使用 MCUboot 默认双槽模式(swap / overwrite / direct‑XIP 等)。[MCUboot 模式表]





[*]在以下情况才考虑单‑bank / 单槽
[*]Flash 空间不足以容纳完整第二镜像;

[*]设备可方便接触、可接受升级失败后通过线缆/串口重新刷机;

[*]或仅作为开发/测试配置,而非量产配置。




页: [1]
查看完整版本: 针对双bank和单bank的使用方法建议