Skip to main content
Davorin
Associate III
June 10, 2020
Solved

Programming STM32 in bootloader mode under Linux

  • June 10, 2020
  • 3 replies
  • 9068 views

Good evening (o;

Now that my test setup works fine with setting the RTC via USB CDC and entering USB DFU mode due to the excellent help from the community members here....the next little problem arises (o;

Which program can be used nowadays under Linux to flash a STM32 MCU in USB DFU mode?

The STM32Cube programmer installs nice on Debian 10 and Ubuntu 20.04, but fails to start due to Java error...and guess this error exists since a long time and ST doesn't seem to care about it...

So is there another program for programming in DFU mode under Linux?

And if so...what input file format it expects? Something that comes strait out of STMCubeIDE?

 Or is there a sample CLI application which uses libusb to flash the MCU?

thanks in advance

richard

This topic has been closed for replies.
Best answer by MMisa

please see - http://dfu-util.sourceforge.net/dfuse.html

3 replies

MMisa
Associate II
June 12, 2020

Hi I am using st-link, but for dfu I would try dfu-programmer and dfu-util packages.

Davorin
DavorinAuthor
Associate III
June 12, 2020

Ah great..thanks :)

So I can just throw the .bin file at it?

Or does the .bin/.elf file needs conversion? As I remember vagely dfu_util uses .hex files...

MMisa
MMisaAnswer
Associate II
June 12, 2020
Davorin
DavorinAuthor
Associate III
June 12, 2020

Just great :)

Can sent it to DFU mode with:

echo "X1704" > /dev/ttyACM1

flash it then:

dfu-util -a 0 -s 0x08000000:leave -D ./USB_Thermologger_2/Debug/USB_Thermologger_2.bin
dfu-util 0.9
 
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 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: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash "
Downloading to address = 0x08000000, size = 42285
Download	[=========================] 100% 42285 bytes
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST state

and it comes back to life ;)