Цитата(Арк К @ Mar 15 2013, 09:07)

Это где же столько оперативки взять, чтоб всю флэш туда вместить?
А кто говорит про оперативку? В моих серийных устройствах, которые могут обновляться дистанционно, стоит flash-память для хранения данных и обновления прошивок. Процедура обновления прошивки выполняется только через внешнюю память - сначала файл прошивки сохраняется во внешнюю flash, потом проверяется целостность файла, потом принадлежность к данному устройству. Если всё ок, то загрузчик выполняет обновление ПО. Если какой-либо сбой в результате которого не удалось обновить ПО (например незапланированная перезагрузка) то при следующем запуске загрузчика он обнаружит обновление во flash и снова попытается обновить ПО. Этот процесс будет повторяться до тех пор пока прошивка не обновится. Дополнительно имеется возможность отката на старую версию прошивки.
Как показала практика серийных устройств возможность надёжной дистанционной перепрошивки невероятно полезная вещь.
Цитата(Арк К @ Mar 15 2013, 09:07)

... Затем, опять же при помощи спец утилиты, которая связывается с бутлодером контроллера и делает все необходимые проверки соответствия, содержимое флэши передаётся в контроллер постранично. Каждая страница идёт со своей собственной CRC16, проверяется бутлодером, им же расшифровывается и пишется во флэш. Другими словами, hex разбирается на большом компе, а пользователю отправляем только файл образа прошивки и маленькую утилитку.
Это по сути ничем не отличается от перепрошивки на месте обычным программатором. Вы даёте возможность пользователю самостоятельно обновить ПО. Даже если обновление ПО не удастся он всегда может самостоятельно заново попытаться прошить устройство.
Если у топикстартера нет необходимости удалённого обновления ПО то подобный метод вполне может подойти. В одном из моих первых устройств с загрузчико atmega128 на ходу успевала принимать hex-файл, выделять страницы и прошивать flash контроллера. Но я всегда хотел чтобы ктото написал утилиту для PC которая могла-бы разбивать бинарный файл и по принципу запрос-ответ отправлять данные постранично.