DFU:Leave 后应用程序未加载

Application not loading after DFU:Leave

我正在尝试在 DFU 模式下对我们板上的 STM32F401 闪存进行编程。我在我的 linux computer.For 我的项目要求中使用 dfu-util 工具,BOOT 0 引脚在整个过程中始终保持高电平。

我正在使用以下命令来闪烁并跳转到应用程序代码。

dfu-util -a 0 -s 0x08000000:leave -D <location-to-binary>.bin

烧写完成后通过'lsusb'命令可以看到MCU有时没有脱离DFU boot loader,有时脱离。无论哪种方式,应用程序都不会启动。

当我在bootloader中进一步尝试使用leave命令时,它显示了以下日志并且上述情况仍在继续,

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Opening DFU capable USB device...
Device ID 0483:df11
Device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(10) = dfuERROR, status(10) = Device's firmware is corrupt. It cannot return to run-time (non-DFU) operations
Clearing status
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
DfuSe command mode
Submitting leave request...
Transitioning to dfuMANIFEST state

在此先感谢您的任何建议或帮助。

我发现了问题。我不得不取消注释 system_stm32f4xx.c 文件中的 define USER_VECT_TAB_ADDRESS

基本上发生的事情是引导加载程序正在寻找来自闪存应用程序的可加载向量地址。随着 USER_VECT_TAB_ADDRESS 注释指向向量地址的指针一直指向引导加载程序向量 table 有效地使闪存应用程序崩溃并重置控制器。在 BOOT 0 引脚为高电平的情况下,它会在每次重置时不断加载到引导加载程序中。

有关此问题的更多信息,请参见以下类似问题: STM32G474 bootloader exit