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

 
 
 
Reply to this topicStart new topic
> Обновление прошивки пользователем., Подводные камни, лежачие грабли.
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
Dron_Gus
сообщение Jan 4 2008, 14:53
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



У нас на плате стоит AT45DB. В ней выделен блок размером с прошивку минус бутлоадер. Вначале прошивка заливается в ДБ, потом перезагрузка с выставлением флага и перешифка основной прошивки бутлоадером. Пока нормально не перешьется - флаг не снимается. Так что выдергивать питание можно.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 4 2008, 15:22
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



При загрузке всегда должен стартовать "нестираемый"/немодифицируемый бутлоадер, который в зависимости от каких-то условий загружает программу для модификации firmware или передает управление непосредственно самой firmware, если проверка ее целостности проходит нормально. В случае ошибки при модификации firmware МК всегда при включении будет "крутиться" в бутлоадере, ожидая загрузки корректной firmware.
Go to the top of the page
 
+Quote Post
Baser
сообщение Jan 4 2008, 22:04
Сообщение #4


Просто 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
rezident
сообщение Jan 5 2008, 01:05
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



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

Уже давно и неоднократно в этом форуме давались примеры реализации "перемещаемой" таблицы векторов для MSP430. Таблица векторов прерываний располагается в ОЗУ. Немодифицируемый бутлоадер при этом может быть расположен в том же секторе, что оригинальные вектора прерываний, т.к. необходимость модифицировать этот сектор отпадает.
Этот способ конечно же не дает 100% гарантии, но значительно, по сравнению с вашим, повышает надежность при модификации firmware.
Go to the top of the page
 
+Quote Post
_dem
сообщение Jan 5 2008, 08:28
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



У вас размер прошивки (с учетом "перспективки") превышает половину размера флеша ?
Go to the top of the page
 
+Quote Post
Baser
сообщение Jan 5 2008, 15:37
Сообщение #7


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

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



Цитата(rezident @ Jan 5 2008, 03:05) *
Уже давно и неоднократно в этом форуме давались примеры реализации "перемещаемой" таблицы векторов для MSP430. Таблица векторов прерываний располагается в ОЗУ. Немодифицируемый бутлоадер при этом может быть расположен в том же секторе, что оригинальные вектора прерываний, т.к. необходимость модифицировать этот сектор отпадает.
Этот способ конечно же не дает 100% гарантии, но значительно, по сравнению с вашим, повышает надежность при модификации firmware.

А я не претендую на истину в последней инстанции. Это просто мои пять копеек в копилку чужого опыта. Вы же не знаете всех обстоятельств той работы. А тогда меня попросили помочь разработать возможность перепрошивки firmware, когда флеш MSP430 была забита под завязку, и основной разработчик ногами запихивал нужную функциональность в память. На все про все мне могли дать пару сотен байт флеша crying.gif Да и сроки поджимали, проклятое немецкое плановое хозяйство biggrin.gif
Go to the top of the page
 
+Quote Post
KAlex
сообщение Jan 8 2008, 07:58
Сообщение #8


Местный
***

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



Цитата(_dem @ Jan 5 2008, 11:28) *
У вас размер прошивки (с учетом "перспективки") превышает половину размера флеша ?

Да, я понял, о чем речь.
Превышает, и намного.

Цитата(Dron_Gus @ Jan 4 2008, 17:53) *
Вначале прошивка заливается в ДБ, потом перезагрузка с выставлением флага и перешифка основной прошивки бутлоадером. Пока нормально не перешьется - флаг не снимается. Так что выдергивать питание можно.

А как на счет перешивки самого бутлоадера?
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 8 2008, 12:12
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(KAlex @ Jan 8 2008, 10:58) *
А как на счет перешивки самого бутлоадера?


Для пользователя эта опция обычно недоступна. А разработчк (сервис, производитель) всегда имеет способ прошить что надо и куда надо.
Go to the top of the page
 
+Quote Post
_dem
сообщение Jan 9 2008, 07:23
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



На крайний случай поставьте на плату SPI FLASH или I2C EEPROM нужного размеру, благо цены на них сейчас смешные, и храните образ прошивки там. А "нестираемый" бутлоадер будет перетаскивать его на место основной прошивки.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 07:00
Рейтинг@Mail.ru


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