DFU 后程序无法运行

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

我正在尝试在我的STM32F401CCU6板上运行闪烁LED程序,并且我正在使用基本的CLI工具(在Linux中),例如

arm-none-eabi-gcc
dfu-util
(或
openocd
)用于学习目的。

我已经按照本教程创建了基本程序,并进行了一项更改。我没有 ST-Link,并且正在尝试使用开发板附带的 USB-C 端口进行刷新(因此,使用

dfu-util
)。它不依赖于任何STM头文件(除了
stdint.h
,它是针对
uint32_t
的,也是来自编译器的)。

我用来上传这个的命令是:

$ dfu-util -a 0 -s 0x08000000:leave -D ./main.elf
dfu-util 0.11

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/

dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
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  "
Downloading element to address = 0x08000000, size = 9528
Erase           [=========================] 100%         9528 bytes
Erase    done.
Download        [=========================] 100%         9528 bytes
Download done.
File downloaded successfully
Submitting leave request...
Transitioning to dfuMANIFEST state

这个

main.elf
的objdump。

但是,板载 LED 和连接到 A5 引脚的 LED 都不发光。我什至尝试切换代码以指向 C13 板载 LED,但它仍然不发光。

我从 AUR 那里得到了这个

dfu-util

提前谢谢您。

c embedded stm32 stm32f4 dfu
1个回答
0
投票

STM32 引导加载程序不会加载 ELF 文件,并且

dfu-util
无法处理 ELF 以仅从中加载 ROM 部分(它只是将提供的文件加载到其参数中提供的位置)。与链接教程中的工具(即 openocd)可以为您解析 ELF 不同,您需要自己对其进行预处理:

arm-none-eabi-objcopy -O binary main.elf main.bin
dfu-util -a 0 -s 0x08000000:leave -D main.bin
© www.soinside.com 2019 - 2024. All rights reserved.