sourcebox / dfu-buddy

Cross-platform GUI utility for device firmware updates (DFU) via USB.
MIT License
61 stars 8 forks source link

Question about DFU vs DfuSe #4

Open iddq opened 11 months ago

iddq commented 11 months ago

Plain DFU is not supported yet, only DfuSe devices like STM32.

Hello,

Can you help me to find some references please what is the difference between DFU and DfuSe?

Thank you.

sourcebox commented 11 months ago

A DFU file is just a raw image that has a 16 byte suffix appended. The format of the suffix is described in Appendix B of https://www.usb.org/sites/default/files/DFU_1.1.pdf. Since the file does not specify any information about memory layout, it can only be transferred as whole, leaving it up to the device to process it.

A DfuSe file is a DFU file with the mentioned suffix, but the image itself has a specific format. This allows to define several sections at different memory addresses. The format is described in document UM0391 from ST, unfortunately there's currently no direct link to it on the ST site. You can try http://rc.fdr.hu/UM0391.pdf as alternative.

JohnAZoidberg commented 6 months ago

I found that I can add a DFU suffix with this tool: https://dfu-util.sourceforge.net/dfu-suffix.1.html Then dfu-buddy will recognize it as a "Plain" DFU file.

sourcebox commented 6 months ago

I found that I can add a DFU suffix with this tool: https://dfu-util.sourceforge.net/dfu-suffix.1.html Then dfu-buddy will recognize it as a "Plain" DFU file.

Yes, DFU buddy will recognize the file correctly. But it can't be flashed because plain files require a different handling on the USB layer - which is currently not implemented.