cancel
Showing results for 
Search instead for 
Did you mean: 

STM32CubeProgrammer with DFU erase error

Ben K
Senior III
Posted on May 01, 2018 at 22:20

I recently started using the STM32CubeProgrammer for flashing MCUs via their DFU bootloader in the system memory. (After resolving the windows driver conflict with DfuSe, the lesson is: use Zadig instead of the batch file.) When using the DFU bootloader in the system memory to flash an ELF file, I get the following error log:

21:53:04 : Memory Programming ...

21:53:04 : Openeing and parsing file: E:\Workspace\DfuBoot\F4xxxGxx\DfuBoot.elf

21:53:04 :   File          : E:\Workspace\DfuBoot\F4xxxGxx\DfuBoot.elf

21:53:04 :   Size          : 8040 Bytes

21:53:04 :   Address       : 0x08000000

21:53:04 : Erasing memory corresponding to segment 0:

21:53:04 : Erasing internal memory sector 0

21:53:04 : erasing sector 0000 @: 0x08000000 done

21:53:04 : Erasing memory corresponding to segment 1:

21:53:04 : Error: Operation exceeds memory limits

21:53:04 : Error: Failed to erase memory

21:53:04 :   Address:      : 0x0

21:53:09 : Error: Start operation failed

The target MCU is an STM32F407VGT6 (Discovery board). My suspicion is that there is a bug when handling images with smaller size then a single flash sector. Why else would it try to erase sector 1, where nothing is allocated to in the image?

The USB packet log shows that the programmer

1. sets address to 0x08000000

2. erases sector at address 0x08000000

3. sets address to 0x00000000

After step 3 the bootloader enters DFU_DNLOAD_BUSY then DFU_ERROR state with error=TARGET, most likely highlighting the incorrect address.

At this point the programmer's GUI displays the error, however it keeps polling the bootloader DFU status endlessly, which I would also consider an incorrect behavior. It should send a DFU CLRSTATUS request instead, and wait for new user command.

#dfu-bootloader #stm32cube-programmer
0 REPLIES 0