реклама на сайте
подробности

 
 
> Обновление прошивки пользователем., Подводные камни, лежачие грабли.
KAlex
сообщение Jan 4 2008, 11:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Устройство на ARM7S, связь с ПК - USB. Все usb-шные процедуры работают из RAM.
Програмка на ПК заливает по USB в ARM новую прошивку. Устройство перегружается и работает далее.
Я понимаю, что если в процессе заливки отрубиться питание, или комп зависнет, то дальнейшая работа устройства будет скорее всего невозможна. Но этот риск берет на себя покупатель.
В течение дня тестировал, ни одного сбоя. Но все таки неспокойно на душе.
Какие еще могут быть грабли? Ваши мысли по этому поводу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Jan 4 2008, 22:04
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(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 минуты.

По крайней мере заказчики не жаловались (а устройство было достаточно серийным, бытовым). Видимо процент обращений в их сервис-центры по этой причине не превосходил обычных величин smile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01604 секунд с 7
ELECTRONIX ©2004-2016