DFU V2 CDC Loader 示例
源码路径:example/dfu_v2/cdc/loader
支持的平台
sf32lb52-lcd_n16r8_hcpu— SF32LB52X,16MB NOR Flash(n16r8)。
概述
本例程是 DFU V2 在 USB-CDC 通道上的 DFU loader 子程序。它独立烧写在 DFU_V2_LOADER 分区,开机由 bootloader 在检测到升级标志后跳入,负责通过 USB-CDC 接收新固件并直写目标分区,可选地在屏幕上显示升级进度。
例程的使用
本 loader 通常无需单独构建:CDC 用户应用工程的 SConstruct 通过 AddDFU_CDC(SIFLI_SDK)(见 tools/build/building.py)把它作为子工程自动加入,构建用户应用时会一并生成 loader 固件。也可以单独构建本 loader。
硬件需求
运行该例程前,需要准备:
一块本例程支持的开发板(支持的平台)。
编译和烧录
直接构建 CDC 用户应用(会自动带上本 loader),切换到用户应用 project 目录,运行 scons 命令执行编译:
> scons --board=sf32lb52-lcd_n16r8_hcpu -j8
如需单独构建本 loader,切换到本例程 project 目录,运行 scons 命令执行编译:
> scons --board=sf32lb52-lcd_n16r8_hcpu -j8
产物在对应的 build_<board> 目录下。关于编译、下载的详细步骤,请参考快速入门的相关介绍。
例程的预期结果
烧入工程后,板子运行的是用户应用(屏幕显示版本号
Ver: 1.0.9)。PC 端通过 USB-CDC 向用户应用发送 4 字节触发魔数
0xAA 0x55 0xDF 0x00;应用回 ACK0xAA 0x55 0xDF 0x01,随后调用dfu_enter_dfu_mode()写下升级标志并重启。bootloader 重启后检测到升级标志,跳入本 loader(
DFU_V2_LOADER分区)。loader 在main()中先dfu_init()初始化中间件,再dfu_check_install()处理可能的待装任务,然后等待 USB-CDC 连接。PC 工具连上后把新固件分块发给 loader。loader 通过
dfu_process()接收并直写目标分区,期间on_dfu_event()回调把进度推给 LVGL 界面,屏幕显示百分比;全部完成后弹出成功提示。loader 完成安装并重启,bootloader 跳回新的用户应用。屏幕上的版本号变化即可确认升级成功。
调试时可在串口控制台用 cdc_dfu_info 命令查看 USB 就绪状态与当前传输进度。
异常诊断
参考文档
更新记录
版本 |
日期 |
发布说明 |
|---|---|---|
0.0.1 |
06/2026 |
初始版本 |