|
Изменение прошивки мк по GPRS-каналу...?, SIM300D и SIM900 |
|
|
|
Aug 19 2010, 09:51
|
Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 8-06-07
Пользователь №: 28 294

|
Возникла необходимость предвидеть в устройстве возможность дистанционного обновления ПО микроконтроллера, желательно по GPRS-каналу. Ожидаемый объем прошивки 64-128 кб. Так как напрямую "в лоб" (прямо в память мк) это сделать скорее всего не получится, пришла идея использовать промежуточный буфер памяти в виде флеш памяти AT45 (она все равно находится на борту, 16 Мбит так что выделить 100 кб не проблема вроде). Идея в принципе проста - центральный сервер по команде будет отправлять по частям HEX файл с обновленной прошивкой, части будут проверятся по протоколу и на CRC, после чего будут записываться в буфер AT45, и формировать в ее памяти зеркало прошивки мк. После записи всего массива HEXа, сервер подаст команду на включение бутлоадера - и через минуту вторую устройство с новым ПО. Конечно нужно еще продумать протокол, возможно добавить кодирование и т.д. - но в теории идея выглядит очень работоспособной...? осталось попробовать на практике Хотелось бы услышать мнение форумчан по этому вопросу? Кто какой способ изменения ПО устройства использует?
|
|
|
|
|
 |
Ответов
|
Aug 19 2010, 10:14
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663

|
Привет Марис!
Именно так я у себя и сделал: внешняя память AT45DB, файлик забирается с сервера записывается туда. По окончании записи проверяется СRC, если она в порядке - управление передаётся на загрузчик. Файлик передаётся и хранится зашифрованным (RC4). Также загрузчик получает управление при включении питания. Он проверяет - "а нет ли в памяти файла прошивки?" Если есть - перепрошивает процессор и стирает файл из памяти. Благодаря этому выключения питания в процессе перепрошивки не страшны. Процессор - MSP430F149, загрузчик меньше 2-х килобайт. Это работает уже на паре тысяч экземпляров, и спасало не раз. Исходник , если что - мне не жалко
С уважением Ефанов Сергей.
|
|
|
|
|
Aug 19 2010, 10:46
|
Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 8-06-07
Пользователь №: 28 294

|
Цитата(Dmitrich @ Aug 19 2010, 13:14)  Привет Марис!
Именно так я у себя и сделал: внешняя память AT45DB, файлик забирается с сервера записывается туда. По окончании записи проверяется СRC, если она в порядке - управление передаётся на загрузчик. Файлик передаётся и хранится зашифрованным (RC4). Также загрузчик получает управление при включении питания. Он проверяет - "а нет ли в памяти файла прошивки?" Если есть - перепрошивает процессор и стирает файл из памяти. Благодаря этому выключения питания в процессе перепрошивки не страшны. Процессор - MSP430F149, загрузчик меньше 2-х килобайт. Это работает уже на паре тысяч экземпляров, и спасало не раз. Исходник , если что - мне не жалко
С уважением Ефанов Сергей. Здравствуйте Сергей! Очень рад Вас "слышать"... Сколько лет, сколько зим... У меня такая же идейка... Исходник не помешал бы (особенно кодирование и если есть какое то пробное простое по сервера-обновления)... Какое в среднем время занимает обновление? А последнюю прошивку на всякий случай в АТ45 сохраняете? Цитата(Slonofil @ Aug 19 2010, 12:56)  Планирую заняться тем же, поделюсь своими соображениями.
Буферную память желательно иметь попроще интерфейсом, потому что баги могут быть в том числе и в управлении памятью, и чем проще управление, тем меньше вероятность неучтённых проблем. В то же время, обращение к памяти осуществляется из бутлоадера, а он, как известно, не обновляется, стало быть, его нужно очень тщательно отлаживать. И делать поменьше размером.
Удачи! С АТ45 все просто делается, SPI на аппаратном уровне поддерживается... По буту все ясно - нужно сделать надежным и универсальным - на все случаи жизни...
|
|
|
|
|
Aug 19 2010, 16:30
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663

|
Цитата(mapic @ Aug 19 2010, 14:46)  >Исходник не помешал бы
выслал на e-mail
>(особенно кодирование и если есть какое то пробное простое по сервера-обновления)...
Файл забирается по протоколу HTTP через 80 порт с обычного web - сервера
>Какое в среднем время занимает обновление?
Примерно минуту, основное время занимает получение файла. Собственно перепрошивка процессора - секунд 15-20.
>А последнюю прошивку на всякий случай в АТ45 сохраняете?
Нет, а зачем?
|
|
|
|
|
Aug 20 2010, 15:46
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 15-02-05
Пользователь №: 2 663

|
>Я просто думал немножко обрабатывать HEX файл на стороне сервера с тем чтобы уменьшить его размер для уменьшения трафика гпрс и объема памяти АТ45, а также для того что бы уменьшить размер и сложность бута? Я использую бинарный файл (не НЕХ), закодированный в .uue >Меня именно и интересовало среднее время передачи прошивки по гпрс каналу и какой объем пзу процессора? GPRS - это канал с малопредсказуемой скоростью. Если всё хорошо - файл закачивается секунд за 30-40. Но частенько он идет небольшими кусками с долгими паузами. В моём случае (MSP430F149) - 60К. Размер передаваемого файла (.uue) - 81К >А последнюю прошивку на всякий случай в АТ45 сохраняете? >Нет, а зачем? >Ну так на всякий случай... что бы в любой момент по команде сервера перепрошить? После перепрошивки в памяти процессора точная копия того образа, что мы получили. Смысла прошивать её ещё раз - нет. Если предположить, что по каким то причинам "слетит" память процессора - то в этом случае, сам себя он перепрошить уже не сможет. Цитата(SZ0 @ Aug 20 2010, 07:28)  Вы не могли бы здесь их выложить? Держите. Это функция, которая собственно и перепрошивает память процессора. Она получает управление при сбросе, проверяет, нет ли во внешней памяти прошивки, если она есть и контрольная сумма правильная - стирает основную память, прошивает новый образ (попутно его расшивровывая), и стирает файл прошивки во внешней памяти. Ключ шифра я, по понятным соображениям, из исходника удалил.
boot2010_08_19_20_10.rar ( 2.24 килобайт )
Кол-во скачиваний: 284
|
|
|
|
Сообщений в этой теме
mapic Изменение прошивки мк по GPRS-каналу...? Aug 19 2010, 09:51 Slonofil Планирую заняться тем же, поделюсь своими соображе... Aug 19 2010, 09:56   SZ0 Цитата>Исходник не помешал бы
выслал на e-mail... Aug 20 2010, 03:28 mapic Сергей что с Вашим емейлом? - не могу отправить пи... Aug 20 2010, 16:32 mapic За исходник спасибо...
Посмотрел Ваш пример... все... Aug 20 2010, 23:39 rx3apf Цитата(mapic @ Aug 21 2010, 03:39) Тогда ... Aug 21 2010, 00:24 Dmitrich Цитата(mapic @ Aug 21 2010, 03:39) Не под... Aug 21 2010, 03:38  mapic Цитата(Dmitrich @ Aug 21 2010, 06:38) Есл... Aug 21 2010, 13:09 AlexandrY Цитата(mapic @ Aug 19 2010, 12:51) Хотело... Aug 21 2010, 13:36 mapic Цитата(AlexandrY @ Aug 21 2010, 16:36) Ка... Aug 21 2010, 15:42  AlexandrY Цитата(mapic @ Aug 21 2010, 18:42) С таки... Aug 21 2010, 16:13   mapic Цитата(AlexandrY @ Aug 21 2010, 19:13) Ну... Aug 21 2010, 16:47    AlexandrY Цитата(mapic @ Aug 21 2010, 19:47) я имел... Aug 21 2010, 17:08     alx125 Цитата(AlexandrY @ Aug 21 2010, 21:08) ... Aug 23 2010, 10:31 Alechek Цитата(AlexandrY @ Aug 21 2010, 19:36) Ка... Sep 1 2010, 05:49 ArtemKAD ЦитатаАТ45 успевает все записать?
С легкостью. Там... Aug 21 2010, 14:39 mempfis_ Цитата(mapic @ Aug 19 2010, 12:51) Возник... Sep 1 2010, 07:34 rx3apf Цитата(mempfis_ @ Sep 1 2010, 11:34) 2. У... Sep 2 2010, 16:04  mempfis_ Цитата(rx3apf @ Sep 2 2010, 19:04) Или я ... Sep 2 2010, 19:00
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|