Распространенным способом решения этой проблемы является наличие загрузчика. Это часть прошивки в виде отдельной программы (отдельный проект и т. Д.), Которая запускается перед вашим основным приложением и находится в отдельной области внутренней флэш-памяти. Чаще всего эта область никогда не затрагивается после производства - загрузчик не изменяется - хотя вы можете подходить к нему так, как вам требуется.
Когда запускается загрузчик, он может нести ответственность за следующее (не все, возможно, вам нужно, но я перечисляю возможности, так как кажется, вы можете найти их полезными):
- Проверка наличия загруженного приложения внутри MCU, если оно действительно и его версия,
- Проверка наличия загруженного приложения во внешней флэш-памяти, если оно действительно, какая у него версия,
- Основываясь на двух вышеперечисленных шагах: определение необходимости обновления внутреннего приложения и, если да, его обновление (удаление области флэш-памяти, занимаемой приложением во внутренней флэш-памяти, запись приложения из внешней флэш-памяти с последующей проверкой),
- После завершения - перейти к приложению.