There are many ways to program an STM32 chip (in my case
- USB DFU mode (using DFuSe utility from ST)
- UART Serial Port (through something like FTDI chip)
- JTAG or SWO debug ports
- SD Card bootloader: https://github.com/akospasztor/stm32-bootloader
But often omitted in discussions is something similar to NXP's
In-System Programming (ISP), see note AN10986 (PDF)
It is the easiest (avoids using a proprietary ST DFuSE utility), cheapest (avoids SD card receptacle BOM cost, or USB-to-Serial chip) of all but I couldn't find a solution anywhere on the internet. For example, the Teenage Engineering OP-Z firmware upgrade process is similar to NXP's ISP - i.e., connect the device to a computer over USB, it shows up as a Mass Storage Device and drag and drop the .bin/.hex file, eject and voila! the firmware upgrade process automatically starts. How can one implement such a way to upgrade firmware on STM32 devices?
I want the user to upload firmware on my device in the simplest, easiest way. It is OK for prototyping phase to use aforementioned methods (1-4), but it is unacceptable in a real production device.
Any insight into this matter would be greatly appreciated!