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

问题描述 投票:0回答:1

在我的项目中,我正在使用STM32F072C8T7 MCU。在该MCU中,只有一个引导引脚称为BOOT0。根据应用笔记,我必须配置BOOT0-> GND来选择主闪存作为引导空间。

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

enter image description here

embedded boot bootloader stm32f0
1个回答
0
投票

我想知道的是,当我以后要升级设备的固件时,是否需要对BOOT0引脚进行任何更改?

如果要使用出厂的ROM引导加载程序编写新固件,则可以,对于大多数STM32部件,您需要将BOOT0引脚拉高,然后复位处理器。 (在某些情况下,可能会将现有程序跳入出厂引导ROM,就好像该引脚处于不同于实际的其他状态一样,但是要弄清楚这可能会有些棘手,并且可能需要反向工程启动ROM)

但是,还有其他几种常见的方法可以更改STM32处理器上的程序,这些方法不会通过工厂引导程序,因此也不会指向更改引导引脚的状态。其中首长:

  1. 您可以使用SWD界面写入闪存。这在开发中很常见(您也可以通过这种方式进行断点调试),但是一旦产品进入客户手中就不那么常见了。

  2. 您可以让正在运行的程序接受更新的程序。某些部件具有双闪存存储区,您可以在其中选择启动一个或另一个的位。或者,您也许可以在快闪开始附近编写一个小的例程,以便在两个图像之间进行选择。有时,您需要先加载足够小的微型固件,以留出空间再加载新的完整固件。这种类型的方法在具有无线电连接的产品中非常普遍,通常将其称为OTA(空中下载)升级。经常将执行此操作的有线接口视为自定义引导程序(与出厂ROM引导程序相对)-例如,某些具有USB接口的早期部件不支持通过出厂引导程序,因此如果要通过USB进行升级您必须自己编写。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.