|
查阅各类文档时,我一直分不清 DFU 模式和 BootLoader 究竟是同一个东西,还是两种不同概念。 我的理解是单片机进入 BootLoader 状态后,支持多种通信接口烧录程序,例如串口、I2C、CAN、USB 等。 如果想要通过 USB 和单片机通信烧录固件,就需要启用 USB DFU 模式。 正常情况下用 USB 线连接单片机后,Windows 设备管理器里应当识别出STM32 BOOT Loader设备。 但有时识别名称会显示为 bootloader,有时又显示为 DFU。 请问 BootLoader 和 DFU 模式二者的区别到底是什么? |
调度器原子变量相关问题
运行到 WRITE_REG (FLASH->OPTKEYR, FLASH_OPTKEY1)跳转 HardFaultHandler
STM32F417IG 单端外部时钟旁路HSE Bypass问题
STM32L4A6 SDMMC 无法使用 1.8V IO 驱动 microSD 卡
STM32L4P5xx 系统内 Bootloader:RAM3 能否用作栈指针内存?
在 STM32CubeIDE 中生成 ioc 配置文件
CAN 总线多节点环境下进行固件升级
在 Bootloader 运行期间保持 GPIO 引脚电平状态不变
把 MCO1 时钟源选为 PLLCLK会怎样
I2C 错误代码含义
微信公众号
手机版
简单来说,BootLoader 是“容器”或“框架”,而 DFU 模式是“容器”实现的一种特定“功能” 。
BootLoader:一个基础的“引导加载程序”
可以把 BootLoader 理解为一个在单片机(MCU)上电后首先运行的小程序,它的核心任务是引导和加载,主要做两件事:
一个 BootLoader 可以支持多种通信接口来实现固件升级,比如 UART(串口)、I2C、SPI、CAN 以及 USB 等。
DFU 模式:一种特定的“设备固件升级”功能
DFU 的全称是 Device Firmware Update,即设备固件升级。它并不是一个独立的程序,而是 BootLoader 所处于的一种特殊工作状态或模式。
当 BootLoader 进入 DFU 模式后,它的任务就变得非常单一:等待并接收来自上位机(如你的电脑)的新固件,然后将其写入到单片机的 Flash 中。
两者的关系:功能与载体的区别
总结一下就是:
因此,一个 BootLoader 可以只支持 DFU 模式,也可以同时支持 DFU、串口等多种升级模式。
为什么设备名有时显示“BootLoader”,有时显示“DFU”?
这正是造成混淆的常见原因,但两者都指向同一个东西:运行在 DFU 模式下的 BootLoader 程序 。
所以,无论显示为什么名字,都意味着你的单片机已经成功启动了 BootLoader,并进入了 DFU 模式,正在等待通过 USB 进行固件升级。
以 STM32 为例
为了更好地理解,可以看看 STM32 的情况:
在这种情况下,可以说“STM32 通过其内置的 BootLoader 实现了 DFU 模式 ”。