Цитата(KIG @ Nov 28 2009, 16:12)

Часто обрывается канал связи и сбивается работа МК (прошивка МК портится). Подскажите, пожалуйста, как реализовать (где можно прочитать) самопрограммирование МК из внешней Flash памяти? Возможно ли хранить резервную копию прошивки МК в собственной Flash памяти МК (Как это сделать)?
Надо не резервную копию хранить, а начинать перепрошивку не раньше, чем убедишься в том, что новая прошивка скачалась целиком и без ошибок.
Самый простой способ - взять МК с запасом собственной Flash. С таким расчетом, чтобы после прошивки оставалось не меньше половины свободного места. Тактика такая: новую прошивку прошиваем сначала на свободное место флэша - на верхние свободные адреса памяти. Тут мы ничем не рискуем, даже если связь по дороге оборвется или новая прошивка придет с ошибками. Когда загрузка новой прошивки будет завершена, приступаем к ее проверке - тут самое простое проверить по контрольной сумме. Убедившись, что новая прошивка хороша, переписываем новую провшику из верхних адресов флэш-памяти в нижние, чем и замещаем старую прошивку на новую. Код в верхних адресах стирать нет необходимости. Этот подход удобен еще и тем, что на время копирования из верхней памяти в нижную, можно заблокировать все прерывания, чтобы обезопасить процесс замещения. В то время как запись фрагментов новой прошивки в верхнюю память осуществляется в обычном режиме, т.к. работу МК повредить не может.