There should be a relatively compact bootloader that sits underneath the main device firmware. The purpose of this bootloader is to manage firmware upgrades, startup failure recovery scenarios, and to otherwise quickly start the main device firmware.
Since this bootloader is not intended to be user-upgradable, it should be based on a very stripped-down fork of the platform and library code from the main firmware. This should most likely include:
No FreeRTOS code, running on just the bare metal
Stripped down u8g2, perhaps sufficient to only show simple graphics and no fonts (depending on font size)
Minimalist USB and FatFS support, sufficient to support installing firmware from a pre-set or default filename.
As part of this, the main firmware should be reconfigured to go into a part of flash above what gets reserved for the bootloader.
It may take some experimentation to get this right, but it is an absolute requirement before the device can be considered usable from someone who isn't willing or able to plug an ST-Link programmer into it.
There should be a relatively compact bootloader that sits underneath the main device firmware. The purpose of this bootloader is to manage firmware upgrades, startup failure recovery scenarios, and to otherwise quickly start the main device firmware.
Since this bootloader is not intended to be user-upgradable, it should be based on a very stripped-down fork of the platform and library code from the main firmware. This should most likely include:
As part of this, the main firmware should be reconfigured to go into a part of flash above what gets reserved for the bootloader.
It may take some experimentation to get this right, but it is an absolute requirement before the device can be considered usable from someone who isn't willing or able to plug an ST-Link programmer into it.