我正在尝试编程在我们的板上的STM32F401闪光灯在DFU模式。我在我的linux computer.For中使用dfu工具,我的项目要求引导0引脚在整个过程中始终保持在很高的位置。
我使用下面的命令闪现并跳转到应用程序代码。
dfu-util -a 0 -s 0x08000000:leave -D <location-to-binary>.bin在闪存完成后,我可以看到'lsusb‘命令,有时MCU不是没有DFU引导加载程序,有时是脱离它。无论哪种方式,应用程序都不会启动。
当我进一步尝试在引导加载器中使用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提前感谢您的任何建议或帮助。
发布于 2021-08-30 06:43:06
我发现了问题。我不得不取消system_stm32f4xx.c文件中的define USER_VECT_TAB_ADDRESS注释。
基本上,所发生的事情是引导加载程序正在从闪存应用程序中寻找一个可加载的向量地址。随着USER_VECT_TAB_ADDRESS的注释,指向向量地址的指针一直指向引导加载器向量表,有效地破坏了flash应用程序重置控制器。随着引导0引脚高,它继续加载到引导加载器与每次重置。
有关此问题的更多信息可在以下类似问题中获得:STM32G474 bootloader exit
https://stackoverflow.com/questions/68936466
复制相似问题