|
|
  |
Bootloader и радиоканал -> |
|
|
|
Jun 4 2011, 14:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215

|
Цитата(V_G @ Jun 4 2011, 16:21)  Заливать прошивку в буферную память (ОЗУ), подключенную к Y1. Когда всю залили, проверить целостность данных и инициировать перенос из ОЗУ в память программ проца. Придется потратиться на внешнее ОЗУ. Можно, конечно, заливать в свободную память программ Y1, но мне такой способ не нравится. Если нет ОЗУ с SPI, можно заливать во флэш с SPI Такой процесс должен будет апдейтить прошивку в двух группах устройств: одна группа состоит из сотен однотипных устройств, где важна стоимость каждой детали, а другая это группа где можно хоть и два процессора поставить это не поменяет картину, так как это прибор в комплекте один. Другими словами желательно конечно с минимальными мат. затратами все это реализовать.
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jun 4 2011, 23:38
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
За сервис надо платить. Либо вы берете процессор с бОльшим объемом памяти, чтобы в нем накапливать принятые программные блоки, либо организуете эту память снаружи.
Либо третье - в бутлоадере реализовать полное управление радиоканалом, исправление ошибок, контроль целостности прошивки, и никогда не выходить в основную программу до ее верификации. Но при этом бутлоадер, как правило, сильно раздувается и может не поместиться в отведенное для него место. И при неудачном завершении передачи прошивки вы не сможете восстановить предыдущую для продолжения нормальной работы.
Если же вы начали накопление новой прошивки не в основной программной памяти (по первым двум вариантам), и произошел крах системы связи, вы вполне можете (по таймауту) вернуться к выполнению всех функций на старой прошивке. Или вообще продолжать выполнение основных функций во время накопления новой прошивки. Т.е. в этом (более дорогом) варианте имеете более надежно функционирующую систему. Выбирайте.
|
|
|
|
|
Jun 5 2011, 11:12
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата Заливать прошивку в буферную память (ОЗУ) Тогда уж в ПЗУ, но лучше чтобы у Y загрузчик поддерживал радио интерфейс.
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Jun 15 2011, 14:18
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764

|
У AVR объём ПЗУ и ОЗУ очень сильно отличается, поэтому в оличие от каких-нибудь ARM невозможно положить принятую прошивку в буфер внутренней SRAM целиком, проверить её целостность и потом зашить во Flash. Тут либо как сказали выше ставить внешнюю память, либо пойти по другому пути. Например как я делал с обновлением прошивки через Wiznet W5100 (который по SPI к контроллеру прицеплен). Принимаемые данные пишутся напрямую во флэш (я их бил на пакеты равные объёму страницы памяти). Проверку целостности пакетов и потери пакетов при этом не проводил. На управляющей стороне по завершению прошивки ПО генерировала пакет "активация прошивки", сопровождаемый CRC всей области памяти приложений. Контроллер этот пакет принимал, считал CRC памяти, сверял с полученной и в случае удачи отсылал ответ "Всё ОК, перепрошивка удалась". Если CRC не совпадали, отсылал ответ "Прошивка повреждена, требуется повторная перепрошивка". Плюсы: не надо дополнительных корпусов под буфера; можно шить сразу несколько устройств разом. Минус: Область бутлодера крайне мала, а в неё надо втиснуть загрузчик, софт обслуживания канала данных, калькулятор CRC. Я свой Wiznet в Mega328 только на максимальном уровне оптимизации по объёму смог впихнуть.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|