Цитата(-SANYCH- @ May 20 2013, 11:56)

Как то эти два предложения противоречат друг с другом.
Вам нужно либо бут (это маленькая программка которая только умеет загружать основную программу и выполнять минимальные требования) либо вместо бута уже полноценное приложение которое умеет принимать и прошивать новую прошивку.
В случае с бутом как на меня это более хороший вариант так как программка бута маленькая и ее отладить намного проще. После чего она не изменяется а только обновляется основная программа.
Есть еще вариант, на процах с достаточным ОЗУ:
1) бут компилиться для работы в ОЗУ, потом его бинарник подстыковывается любым образом в основную программу как массив данных.
2) в основной программе, при выборе апдейта прошивки - бут перегружается в ОЗУ и ему передается управление.
Основных достоинств этого метода два:
1) нет проблем с теми процами, которые не могут выплолнять програму из флеш и одновременно писать в эту флеш (в другие блоки, естественно).
2) поскольку бут физически находится в основной программе. при ее апдейте бут тоже апдейтится.
Недостаток вроде только один - сбой питания или передачи данных в процессе записи может привести к полной неработоспособности устройства. Но это можно обойти различными методами (например еще один неизменный супербут).