Dobermann 1 8 декабря, 2010 Опубликовано 8 декабря, 2010 · Жалоба Всем привет. Необходимо реализовать функционал удаленной перепрошивки контроллера, в данном случае по GPRS каналу. Кто может поделиться или продать исходники bootloadera, который реализует подобную функцию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 8 декабря, 2010 Опубликовано 8 декабря, 2010 · Жалоба Всем привет. Необходимо реализовать функционал удаленной перепрошивки контроллера, в данном случае по GPRS каналу. Кто может поделиться или продать исходники bootloadera, который реализует подобную функцию? У Атмела есть несколько Application Notes по реализации BootLoader'ов с исходными текстами. Там ничего сложного нет. Разберитесь и приспособьте под свою задачу: http://www.atmel.com/dyn/products/app_note...p?family_id=607 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 8 декабря, 2010 Опубликовано 8 декабря, 2010 · Жалоба У Атмела есть несколько Application Notes по реализации BootLoader'ов с исходными текстами. Там ничего сложного нет. Разберитесь и приспособьте под свою задачу: http://www.atmel.com/dyn/products/app_note...p?family_id=607 Большое спасибо, но нет особо времени с разборами, хотя после сдачи проекта непременно этим займемся Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 8 декабря, 2010 Опубликовано 8 декабря, 2010 · Жалоба Большое спасибо, но нет особо времени с разборами Я почти уверен, что вы быстрее напишете свое, чем найдете готовое. А как МК с GPRS-модулем связан (по какому интерфейсу) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 8 декабря, 2010 Опубликовано 8 декабря, 2010 · Жалоба uart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 8 декабря, 2010 Опубликовано 8 декабря, 2010 · Жалоба uart Тогда задача совершенно тривиальная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dobermann 1 8 декабря, 2010 Опубликовано 8 декабря, 2010 · Жалоба Тогда задача совершенно тривиальная. не спорю, но времени то особо и нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mrKirill 1 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба Всем привет... не спорю, но времени то особо и нет Вот уже, как минимум, 2,5 часа в пустую проведено... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sensor_ua 0 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба Удаленное обновление чревато обрывом связи. Всвязи с чем стОит принять решение о степени критичности такой ситуации по отношению к дальнейшему функционированию контроллера. Т.е. решить, должен ли продолжать работать (по основной программе) контроллер в случае неудачи при обновлении (необходима ли резервная копия). Если не хочется иметь мертвый девайс, нужно уметь идентифицировать целостность прошивки самим бутлоадером или через него и без такой сверки не отдавать управление основной программе. Но даже это не спасает от записи прошивки с логической ошибкой, которая может больше не позволить перейти в бутлоадер. Я бы предложил посмотреть в сторону бутлоадеров, совместимых с STK500 (например где-то там был http://www.miklobit.com) или загружающих extended-hex, которые можно дополнить нужными фичами. Но без проработки модели работы при отказе по связи это может быть пустой или даже вредной работой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
subver 0 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба Нужно прошивку сначала "скачивать" во внутреннюю память устройства, а потом уже пилить ее потихоньку, обеспечив защиту от сбоев питания и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Aleksandrovi4 2 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба В том то как раз и проблема, что используя "голую" AVR (без внешних ОЗУ, ПЗУ) засунуть прошивку целиком во внутренний SRAM навряд ли получится. Объём Flash раз в 10 превосходит SRAM. Поэтому принимать прошивку только поблочно. Действовать именно как сказал sensor_ua: разрешать выполнение кода после перепрошивки только удостоверившись в её достоверности средствами загрузчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fry__ 0 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба Вот уже, как минимум, 2,5 часа в пустую проведено... За 2,5 часа bootloader не напишешь. Удаленное обновление чревато обрывом связи. Нормальному bootloader'у такое не страшно. В связи с чем стОит принять решение о степени критичности такой ситуации по отношению к дальнейшему функционированию контроллера. Т.е. решить, должен ли продолжать работать (по основной программе) контроллер в случае неудачи при обновлении (необходима ли резервная копия). Если не хочется иметь мертвый девайс, нужно уметь идентифицировать целостность прошивки самим бутлоадером или через него и без такой сверки не отдавать управление основной программе. В качестве хеш-функции подойдет и проверка CRC32(16) для залитой прошивки. Но даже это не спасает от записи прошивки с логической ошибкой, которая может больше не позволить перейти в бутлоадер. Бутлоадер должен получать управление при старте в любом случае. После чего должен подсчитать CRC для прошитой области ROM и сравнить с сохранненой CRC, которая подсчитывалась при получении прошивки. Если обнаружится несоответствие - должен перейти в режим ожидания комманд от канала загрузки. Иначе - отдать управление... Нужно прошивку сначала "скачивать" во внутреннюю память устройства, а потом уже пилить ее потихоньку, обеспечив защиту от сбоев питания и т.п. Это как? Т.е. если RAM меньше прошивки то ставить внешюю? Зачем. PS: Вообще создание подобного освещено в Application Notes (как уже писал kovigor ), ничего сложного в этом нет - нужно только канал данных поменять. И лучше конечно написать свой код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба Скажите, а цена железа какая? (GPRS) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба В том то как раз и проблема, что используя "голую" AVR (без внешних ОЗУ, ПЗУ) засунуть прошивку целиком во внутренний SRAM навряд ли получится. Объём Flash раз в 10 превосходит SRAM. Поэтому принимать прошивку только поблочно. Действовать именно как сказал sensor_ua: разрешать выполнение кода после перепрошивки только удостоверившись в её достоверности средствами загрузчика. Ну тогда Вам один путь - менять железо (ставить внешнюю flash объёмом >= flash AVR). Или если позволяет flash контроллера в загрузчике (тут надо уточнить что за AVR стоит, какой объём flash и размер памяти загрузчика) скачивать прошивку записывая её в свободное место flash, там проверять целостность и только потом перешивать ту часть flash где лежит приложение. ИМХО реализуемо но с трудом на старших мегах (128/256) и только если размер рабочей программы будет меньше чем (flash_size-boot_size)/2. При наличии внешней памяти дистанционная перепрошивка не вызывает особых сложностей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 9 декабря, 2010 Опубликовано 9 декабря, 2010 · Жалоба Бутлоадер должен получать управление при старте в любом случае. После чего должен подсчитать CRC для прошитой области ROM и сравнить с сохранненой CRC, которая подсчитывалась при получении прошивки. Если обнаружится несоответствие - должен перейти в режим ожидания комманд от канала загрузки. Иначе - отдать управление... Именно так и делал. Решение непотопляемое. Бутлоадер никогда не модифицируется и при любом включении или сбросе устройства получает управление. Дальше все, как вы описали. Для защиты от заливки программы с логическими ошибками и заведомо правильной CRC32 можно ввести в бутлоадер небольшой временной интервал (к примеру, 5 секунд), в течение которого он будет ожидать команду обновления прошивки ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться