DFU V2 BLE 用户应用示例

源码路径:example/dfu_v2/ble/app

支持的平台

  • sf32lb52-lcd_n16r8_hcpu —— SF32LB52X,16MB NOR Flash + 8MB PSRAM。

概述

本例程是一个标准的 BLE 外设应用,集成了 DFU V2 中间件。它既能在运行过程中实时更新非自身的镜像(资源、字体、loader 等),也能在需要更新 HCPU 自身应用时切换进独立的 DFU loader 子程序完成升级。

例程的使用

  1. 设备上电后启动 BLE 广播,手机 / 上位机通过 BLE 连接后即可推送固件。推送资源、字体、loader 等非 HCPU 镜像时,设备在运行中实时写入对应分区。

  2. 更新 HCPU 自身应用时,运行中的应用不能擦写自己,需要在串口里执行 cmd_diss ota_reboot 切换进 loader 完成升级。

  3. 手机 APP 与旧版 BLE DFU 保持一致,无需改动。

硬件需求

运行该例程前,需要准备:

  • 一块本例程支持的开发板(支持的平台)。

  • 一台手机或上位机(作为 BLE 主机推送固件)。

编译和烧录

切换到例程project目录,运行scons命令执行编译:

> scons --board=sf32lb52-lcd_n16r8_hcpu -j8

编译用户应用时,配套的同通道 loader 子程序会通过 AddDFU_BLE() 作为子工程自动一并编译。

关于编译、下载的详细步骤,请参考快速入门的相关介绍。

例程的预期结果

例程启动后:

  1. 串口打印启动横幅 === peripheral_with_ota V2 Start ===,随后初始化 DFU V2 中间件并启动 BLE 广播,广播名形如 SIFLI_APP-xx-...

  2. 初始化阶段调用 dfu_mode_host_set_self_img_id(0),告知 Host 模式跳过 HCPU 镜像(img_id=0),因为运行中的应用无法覆盖自己。

  3. 手机 / 上位机通过 BLE 推送资源、字体、loader 等非 HCPU 镜像时,串口打印 OTA 进度日志(OTA progressOTA image N completeOTA all complete)。

  4. 更新 HCPU 应用时,执行 cmd_diss ota_reboot 后设备重启并跳进 loader,由它接收并直写新的 HCPU 固件,完成后重启回新版本应用。

  5. 随时可用 cmd_diss ota_info 查询当前 OTA 进度,空闲时打印 OTA: idle

异常诊断

参考文档

更新记录

版本

日期

发布说明

0.0.1

06/2026

初始版本