STM32F072C8T7 (Boot0) 使用 USB 的引导加载程序

STM32F072C8T7 (Boot0) Bootloader using USB

在我的项目中,我使用的是 STM32F072C8T7 MCU。在这个 MCU 中,只有一个名为 BOOT0 的引导引脚。根据应用说明,我必须配置 BOOT0 -> GND 以选择主闪存作为引导 space。

我已经这样做了,程序似乎运行良好。我想知道的是,当我以后要升级我的设备的固件时,是否需要对BOOT0引脚进行任何更改?

enter image description here

What I am wondering is that, when I want to upgrade the firmware of my device later in the future, do I need to make any changes to the BOOT0 pin?

如果您想使用工厂 ROM 引导加载程序写入新固件,那么是的,对于大多数 STM32 部件,您需要将 BOOT0 引脚拉高,然后重置处理器。 (在某些情况下,可以让您现有的程序跳转到工厂引导 ROM,就好像该引脚处于与实际不同的状态,但这可能有点棘手,可能需要对启动进行逆向工程引导 ROM)

然而,还有一些其他常见方法可以更改 STM32 处理器上的程序,这些方法不通过工厂引导加载程序,因此不指向更改引导引脚的状态。其中最主要的是:

  1. 可以使用SWD接口写入flash。这在开发中很常见(您也可以通过这种方式进行断点调试),但一旦产品到达客户手中就不太常见了。

  2. 您可以让 运行 程序接受更新的程序。有些部件有双闪存组,您可以 select 稍微启动一个或另一个。或者您可以在两幅图像之间 selects 的闪存开始处编写一个小例程。有时您需要先加载一个小到足以留出空间的微型固件,然后再加载一个新的完整固件。这种方法在具有无线电连接的产品中非常常见,通常称为 OTA(空中下载)升级。执行此操作的有线接口通常被认为是自定义引导加载程序(相对于工厂 ROM 引导加载程序)——例如,一些带有 USB 接口的早期部件没有通过工厂引导加载程序支持,所以如果你想通过 USB 进行升级你必须自己写。