Цитата(KAlex @ Jan 4 2008, 13:16)

Устройство на ARM7S, связь с ПК - USB. Все usb-шные процедуры работают из RAM. ...
Цитата(rezident @ Jan 4 2008, 17:22)

При загрузке всегда должен стартовать "нестираемый"/немодифицируемый бутлоадер, ...
С ARMами не работал, не знаю есть ли там защищенный бутовый блок. Если есть, то можно сделать 100% надежно. В противном случае при сбоях возможна потеря работоспособности.
Могу поделиться опытом обновления прошивки у прибора на MSP430F149. У него специальной бутовой области нет, таблица векторов жестко закреплена, внешней флешки в приборе не было. Внутренний масочный загрузчик использовал ножки, не совпадающие с UART-ом, а перепрошивать нужно было через UART. Сам загрузчик грузился по UARTу в ОЗУ и из него перешивал флеш. 100% надежное перепрограммирование сделать было невозможно.
Для уменьшения вероятности сбоя применил следующий трюк. Вся флеш перешивалась 1-2 минуты. Любой сбой в это время гробил программу. Поэтому прошивку сделал в три этапа:
1. Загрузчик из ОЗУ прошивает свою копию в два сектора флеша с таблицой векторов.
2. Перешивается вся флеш за исключением этих двух секторов.
3. Перешиваются два последних сектора (затирается копия загрузчика) и таблица векторов прикладной программы.
Суть в том, что теперь критичными к сбоям становятся только этапы 1 и 3, а их длительность всего 1-2 секунды по сравнению с общим временем апгрейда 1-2 минуты.
По крайней мере заказчики не жаловались (а устройство было достаточно серийным, бытовым). Видимо процент обращений в их сервис-центры по этой причине не превосходил обычных величин