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

 
 
> Изменение прошивки мк по GPRS-каналу...?, SIM300D и SIM900
mapic
сообщение Aug 19 2010, 09:51
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 8-06-07
Пользователь №: 28 294



Возникла необходимость предвидеть в устройстве возможность дистанционного обновления ПО микроконтроллера, желательно по GPRS-каналу. Ожидаемый объем прошивки 64-128 кб.

Так как напрямую "в лоб" (прямо в память мк) это сделать скорее всего не получится, пришла идея использовать промежуточный буфер памяти в виде флеш памяти AT45 (она все равно находится на борту, 16 Мбит так что выделить 100 кб не проблема вроде). Идея в принципе проста - центральный сервер по команде будет отправлять по частям HEX файл с обновленной прошивкой, части будут проверятся по протоколу и на CRC, после чего будут записываться в буфер AT45, и формировать в ее памяти зеркало прошивки мк. После записи всего массива HEXа, сервер подаст команду на включение бутлоадера - и через минуту вторую устройство с новым ПО.

Конечно нужно еще продумать протокол, возможно добавить кодирование и т.д. - но в теории идея выглядит очень работоспособной...? осталось попробовать на практике biggrin.gif

Хотелось бы услышать мнение форумчан по этому вопросу? Кто какой способ изменения ПО устройства использует?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mempfis_
сообщение Sep 1 2010, 07:34
Сообщение #2


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(mapic @ Aug 19 2010, 12:51) *
Возникла необходимость предвидеть в устройстве возможность дистанционного обновления ПО микроконтроллера, желательно по GPRS-каналу....
...пришла идея использовать промежуточный буфер памяти в виде флеш памяти AT45...
Хотелось бы услышать мнение форумчан по этому вопросу? Кто какой способ изменения ПО устройства использует?


Использовать at45 - идея хорошая. Просто предусмотрите 2 банка для прошивки (текущая рабочая и обновляемая). При сбое в одном из банков программу можно будет всегда восстановить из другого.
По поводу метода перепрошивки. У нас было реализовано 2 способа:
1. Сервер даёт команду устройству на загрузку блока данных размером со страницу памяти at45. Устройство принимает её, проверяем crc посылки, сохраняет и отправляет подтверждение. После приёма всех страниц прошивки даётся команда на перепрошивку. Вариант довольно сложный т.к. требует написание сервера.
2. Устройство само скачивает прошивку с сервера с помощью http-запросов. Метод GET позволяет скачивать не только весь файл, а и выбранный диапазон байт (0-1023, 1024-2047 и т.д). Плюс метода в том что устройство само контролирует процесс загрузки, перезапрос выбранных страниц если не получено обновление, реконнект к серверу. Значительным плюсом является то что не нужно писать специальный сервер для обновления и все HTTP-сервера с которых я пытался скачивать прошивку поддерживали Partial Get. Минус - данные пришлось делать ascii-кодированными (хотя сейчас вижу вариант решения без кодирования) и оверхед при каждом запросе порядка 300 байт (шапка http-запроса).


В целом второй вариант показался более простым и сейчас успешно реализован. Осталось немного подрихтовать его чтобы обойтись без ascii-кодирования. Обновление ПО размером 64к (~150к gprs-траффика после доработки может уменьшится наполовину) занимает 2-3 минуты.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Sep 2 2010, 16:04
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(mempfis_ @ Sep 1 2010, 11:34) *
2. Устройство само скачивает прошивку с сервера с помощью http-запросов. Метод GET позволяет скачивать не только весь файл, а и выбранный диапазон байт (0-1023, 1024-2047 и т.д).
Минус - данные пришлось делать ascii-кодированными (хотя сейчас вижу вариант решения без кодирования) и оверхед при каждом запросе порядка 300 байт (шапка http-запроса).

Или я торможу или чего-то не понимаю. А почему "пришлось ASCII-кодированными" ? Чем бинарник хуже ? Ведь вроде как нет совершенно никаких сложностей получить по GET бинарник ?
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Sep 2 2010, 19:00
Сообщение #4


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(rx3apf @ Sep 2 2010, 19:04) *
Или я торможу или чего-то не понимаю. А почему "пришлось ASCII-кодированными" ? Чем бинарник хуже ? Ведь вроде как нет совершенно никаких сложностей получить по GET бинарник ?


Проблема была в ключевых словах возвращаемых от модема (NO CARRIER и ERROR) которые могли попасться в передаваемой прошивке. Основня программа могла принять их за сбои в работе tcp/ip стека модема и решить что связь прервана. Не хотелось вводить дотошную обработку текста получаемого от http-запроса от того и возникла такая проблема. Сейчас всё уже исправил - зашифровал прошивку, получил бессмысленный набор байт в котором подобные ключевые слова не встречаются и не мешают работе основной программы.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mapic   Изменение прошивки мк по GPRS-каналу...?   Aug 19 2010, 09:51
- - Slonofil   Планирую заняться тем же, поделюсь своими соображе...   Aug 19 2010, 09:56
- - Dmitrich   Привет Марис! Именно так я у себя и сделал: в...   Aug 19 2010, 10:14
|- - mapic   Цитата(Dmitrich @ Aug 19 2010, 13:14) При...   Aug 19 2010, 10:46
|- - Dmitrich   Цитата(mapic @ Aug 19 2010, 14:46) >Ис...   Aug 19 2010, 16:30
|- - SZ0   Цитата>Исходник не помешал бы выслал на e-mail...   Aug 20 2010, 03:28
|- - mapic   За исходник спасибо... >Файл забирается по про...   Aug 20 2010, 08:56
|- - Dmitrich   >Я просто думал немножко обрабатывать HEX файл ...   Aug 20 2010, 15:46
- - 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


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

 


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


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