и не надо писать одинаковые функции обновления прошивки из основной программы и из бутлоадера. Все можно свести к задаче обновления из бутлоадера.
Достаточно сделать режим загрузки бутлоадера. 1. по флагу в памяти или горячей перезагрузки с флагом в РАМе 2. по специальной команде в начале загрузки (зажатая кнопка, или команда по порту и т.д.) 3. по отсутствию валидной прошивки (контрольная сумма, код безопасности и так далее.
любой из 3 сработавших вариантов переводит схему в режим обновления прошивки, если все проскочили то штатная загрузка. Такую схему вы никогда не превратите в кирпич. А также поддержка перезаписи памяти программы надо поддержать всего в одном месте в загрузчике, основной прошивки не надо даже давать возможность это делать.
Загрузчик примитивен, без инициативы, а значит может применяться во всех ваших прочих устройствах, не зависимо от того что они делают. Мы уже такой загрузчик не глядя в приборы втыкаем...
|