this is for the stm32f103 based boards (e.g. the various 'pill' boards etc)
technically stm32f103 (and most of other variants i'd guess. jumps to 0x8000000) start of flash memory and start running from there after a reset.
so if you can find a means to place your sketch.bin at that location 0x8000000, it would start running from there.
one of those ways to place a sketch.bin at 0x8000000 is to use a usb-uart dongle e.g.
https://medium.com/@paramaggarwal/progr ... 3cec0dbc86
or you could use a st-link v2 dongle
https://github.com/stm32duino/wiki/wiki/Upload-methods
^^ read this from the official core - covers lots of ground including (usb-uart, st-link, Roger's stm32duino bootloader and hid bootloader)
the usb (dfu) bootloader on the maple mini (and blue pill) has its origins from leaflab (the maple mini) - this is literally user firmware not built-in on chip
and Roger made much improvements on it nicknamed the stm32duino-bootloader
https://github.com/rogerclarkmelbourne/ ... bootloader
after installing Roger's bootloader, that make it possible to install a sketch using the command
for libmaple based (and official core) sketches with a usb cable (no dongles required). select the appropriate upload method
checkout also the hid boot loader
viewtopic.php?f=58&t=19
this is convenient as otherwise the normal means to install a sketch or firmware on stm32f103 is either uart (using a usb-uart dongle) or a jtag-swd dongle (e.g. st-link v2)
to run a sketch directly at 0x8000000, among the things one need to check is to look in the ld scripts to select ld scripts that start at 0x8000000 and that the vector table table entry point is at 0x8000000 (this normally is a define e.g. VECT_TAB_OFFSET=0x0 official core, VECT_TAB_ADDR=0x8000000 libmaple core). if you build using an external tool and your sketch doesn't 'work', take a look at how the ld scripts are defined and the vector tab address define is defined e.g. in boards.txt
these are normally pre-defined in boards.txt in the core and one would only need to select the appropriate entries e.g. upload method.from the menu in the Arduino IDE
if one use the Roger's 'stm32duino (dfu) boot loader' the flash start address of the sketch would normally be 0x8002000. again it is more a matter of selecting the appropriate upload method in Arduino IDE. and Roger's 'stm32duino (dfu) boot loader' should be installed at 0x8000000 using a usb-uart dongle or an st-link v2 dongle e.g.
https://medium.com/@paramaggarwal/progr ... 3cec0dbc86
https://github.com/rogerclarkmelbourne/ ... ill-Boards
there is also this HID bootloader which probably works better for windows users
viewtopic.php?f=58&t=19