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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Изменение прошивки мк по 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
Slonofil
сообщение Aug 19 2010, 09:56
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Планирую заняться тем же, поделюсь своими соображениями.

Буферную память желательно иметь попроще интерфейсом, потому что баги могут быть в том числе и в управлении памятью, и чем проще управление, тем меньше вероятность неучтённых проблем. В то же время, обращение к памяти осуществляется из бутлоадера, а он, как известно, не обновляется, стало быть, его нужно очень тщательно отлаживать. И делать поменьше размером.

Удачи!
Go to the top of the page
 
+Quote Post
Dmitrich
сообщение Aug 19 2010, 10:14
Сообщение #3


Участник
*

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



Привет Марис!

Именно так я у себя и сделал: внешняя память AT45DB, файлик забирается с сервера записывается туда. По окончании записи проверяется СRC, если она в порядке - управление передаётся на загрузчик. Файлик передаётся и хранится зашифрованным (RC4). Также загрузчик получает управление при включении питания. Он проверяет - "а нет ли в памяти файла прошивки?" Если есть - перепрошивает процессор и стирает файл из памяти. Благодаря этому выключения питания в процессе перепрошивки не страшны. Процессор - MSP430F149, загрузчик меньше 2-х килобайт. Это работает уже на паре тысяч экземпляров, и спасало не раз.
Исходник , если что - мне не жалко

С уважением Ефанов Сергей.
Go to the top of the page
 
+Quote Post
mapic
сообщение Aug 19 2010, 10:46
Сообщение #4


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

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



Цитата(Dmitrich @ Aug 19 2010, 13:14) *
Привет Марис!

Именно так я у себя и сделал: внешняя память AT45DB, файлик забирается с сервера записывается туда. По окончании записи проверяется СRC, если она в порядке - управление передаётся на загрузчик. Файлик передаётся и хранится зашифрованным (RC4). Также загрузчик получает управление при включении питания. Он проверяет - "а нет ли в памяти файла прошивки?" Если есть - перепрошивает процессор и стирает файл из памяти. Благодаря этому выключения питания в процессе перепрошивки не страшны. Процессор - MSP430F149, загрузчик меньше 2-х килобайт. Это работает уже на паре тысяч экземпляров, и спасало не раз.
Исходник , если что - мне не жалко

С уважением Ефанов Сергей.


Здравствуйте Сергей! Очень рад Вас "слышать"... Сколько лет, сколько зим... biggrin.gif
У меня такая же идейка...
Исходник не помешал бы (особенно кодирование и если есть какое то пробное простое по сервера-обновления)...
Какое в среднем время занимает обновление? А последнюю прошивку на всякий случай в АТ45 сохраняете?

Цитата(Slonofil @ Aug 19 2010, 12:56) *
Планирую заняться тем же, поделюсь своими соображениями.

Буферную память желательно иметь попроще интерфейсом, потому что баги могут быть в том числе и в управлении памятью, и чем проще управление, тем меньше вероятность неучтённых проблем. В то же время, обращение к памяти осуществляется из бутлоадера, а он, как известно, не обновляется, стало быть, его нужно очень тщательно отлаживать. И делать поменьше размером.

Удачи!


С АТ45 все просто делается, SPI на аппаратном уровне поддерживается...
По буту все ясно - нужно сделать надежным и универсальным - на все случаи жизни... rolleyes.gif
Go to the top of the page
 
+Quote Post
Dmitrich
сообщение Aug 19 2010, 16:30
Сообщение #5


Участник
*

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



Цитата(mapic @ Aug 19 2010, 14:46) *
>Исходник не помешал бы

выслал на e-mail

>(особенно кодирование и если есть какое то пробное простое по сервера-обновления)...

Файл забирается по протоколу HTTP через 80 порт с обычного web - сервера

>Какое в среднем время занимает обновление?

Примерно минуту, основное время занимает получение файла. Собственно перепрошивка процессора - секунд 15-20.

>А последнюю прошивку на всякий случай в АТ45 сохраняете?

Нет, а зачем?

Go to the top of the page
 
+Quote Post
SZ0
сообщение Aug 20 2010, 03:28
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Цитата
>Исходник не помешал бы
выслал на e-mail


Вы не могли бы здесь их выложить?
Go to the top of the page
 
+Quote Post
mapic
сообщение Aug 20 2010, 08:56
Сообщение #7


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

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



За исходник спасибо...

>Файл забирается по протоколу HTTP через 80 порт с обычного web - сервера

Я просто думал немножко обрабатывать HEX файл на стороне сервера с тем чтобы уменьшить его размер для уменьшения трафика гпрс и объема памяти АТ45, а также для того что бы уменьшить размер и сложность бута?

>Примерно минуту, основное время занимает получение файла. Собственно перепрошивка процессора - секунд 15-20.

Меня именно и интересовало среднее время передачи прошивки по гпрс каналу и какой объем пзу процессора?

>А последнюю прошивку на всякий случай в АТ45 сохраняете?

>Нет, а зачем?

Ну так на всякий случай... что бы в любой момент по команде сервера перепрошить?
Go to the top of the page
 
+Quote Post
Dmitrich
сообщение Aug 20 2010, 15:46
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
mapic
сообщение Aug 20 2010, 16:32
Сообщение #9


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

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



Сергей что с Вашим емейлом? - не могу отправить письмо... приходят отчеты о ошибке...?
Go to the top of the page
 
+Quote Post
mapic
сообщение Aug 20 2010, 23:39
Сообщение #10


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

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



За исходник спасибо...
Посмотрел Ваш пример... все понятно кроме декодирования RC4....? Не подскажите где можно почитать что то толковое по этому вопросу? Может у Вас имеется какой то пример программный кодировка => декодирование... Из того что прочитал в инете понял что в RC4 есть ключ (массив) разной длины по которому идет кодирование и декодирование...? но какой алгоритм не очень представляю smile.gif ?

>Файл забирается по протоколу HTTP через 80 порт с обычного web - сервера

Тогда у меня вопрос как вы его выкладываете на сервер и как читаете на сим300 ? HTTP - не поддерживает ведь работу с файлами, нужен FTP а с ним на сим300 и с нашим доступом в инет от операторов практически нереально работать... Как я понимаю на сервере тоже должен быть какой то алгоритм работы по которому он по запросу с устройства выдавал частями файл...? - думал разработать для этого дела протокол обмена с сервером... как вижу а Вас система наверное проще?

...уже позже почитал про формат .uue - довольно интересный формат...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 21 2010, 00:24
Сообщение #11


Гуру
******

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



Цитата(mapic @ Aug 21 2010, 03:39) *
Тогда у меня вопрос как вы его выкладываете на сервер и как читаете на сим300 ? HTTP - не поддерживает ведь работу с файлами,

Как так "не поддерживает" ? Очень даже поддерживает... Тот же самый GET и поехали. А к тому же SIM300 с производства снимается, а у пришедшего на смену ему SIM900 есть даже встроенная поддержка механизма работы с файлами на http/ftp (правда, при чтении есть ограничение на длину).
Go to the top of the page
 
+Quote Post
Dmitrich
сообщение Aug 21 2010, 03:38
Сообщение #12


Участник
*

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



Цитата(mapic @ Aug 21 2010, 03:39) *
Не подскажите где можно почитать что то толковое по этому вопросу?

Если спросить у Google "RC4 описание" то он всё и расскажет
А ещё есть хорошая книжка :
"Брюс Шнайер "Прикладная криптография".
Цитата
Тогда у меня вопрос как вы его выкладываете на сервер и как читаете на сим300 ?

Как выкладывать - даже непонятно, в чём вопрос? Копирую туда файл (руками), как ещё?
А как забираю - вот кусок обмена между SIM300 и процессором:

AT+CDNSORIP=0

OK
AT+CGATT=1

OK
AT+CIPCSGP=1,"internet.beeline.ru","beeline","beeline"

OK
AT+CIPSTART="TCP","195.34.238.215","80"

OK

CONNECT OK
AT+CIPSEND

> GET /v100.uue HTTP/1.1
Host: 195.34.238.215


SEND OK
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Tue, 20 Nov 2007 18:02:28 GMT
Content-Type: application/octet-stream
Accept-Ranges: bytes
Last-Modified: Tue, 20 Nov 2007 17:30:42 GMT
ETag: "f09869139b2bc81:a04"
Content-Length: 82275

YoRcY

M,4``"CQ```(^0-($L!(JH[`2,):P$IR=LD"`6B`!PD,F`/)`WP`A`/)#(@#"
M0RX`PD,I`/)`[P`J`/+0\``;`.)#&0#RT%\`&@#20Q\`PD,=`/)`_``>`,)#
M,P#"0S$`\D,R`/)`&0`W`,)#-0#R0.8`-@#"0P``PD,!`,)#)0#"0RT`@D.F
M`<)#!`#"0P4`@D-@`8)#8@&"0V0!@D-F`8)#@`&"0X(!@D.$`8)#A@&"0X@!
....
....


Цитата
Может у Вас имеется какой то пример программный кодировка => декодирование.


вот исходник кодера/декодера, которым я шифрую прошивку. Алгоритм симметричный, если ему на вход подсунуть "простой" файл - на выходе получим зашифрованный, а если подсунуть зашифрованный - на выходе получим "простой".
Исходник этот не мой - я его в сети нашёл, так что спасибо неизвестному автору.

Цитата
Может у Вас имеется какой то пример программный кодировка => декодирование.


вот исходник кодера/декодера, которым я шифрую прошивку. Алгоритм симметричный, если ему на вход подсунуть "простой" файл - на выходе получим зашифрованный, а если подсунуть зашифрованный - на выходе получим "простой".
Исходник этот не мой - я его в сети нашёл, так что спасибо неизвестному автору.

Прикрепленный файл  RC42010_08_21_07_20.rar ( 991 байт ) Кол-во скачиваний: 215


PS: Советую сначала добиться, что бы перепрошивка у тебя без шифрования работала, а потом уже, если очень нужно - добавляй шифрование.

Сообщение отредактировал Dmitrich - Aug 21 2010, 03:42
Go to the top of the page
 
+Quote Post
mapic
сообщение Aug 21 2010, 13:09
Сообщение #13


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

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



Цитата(Dmitrich @ Aug 21 2010, 06:38) *
Если спросить у Google "RC4 описание" то он всё и расскажет
А ещё есть хорошая книжка :
"Брюс Шнайер "Прикладная криптография".


За наводку спасибо!

Цитата(Dmitrich @ Aug 21 2010, 06:38) *
Как выкладывать - даже непонятно, в чём вопрос? Копирую туда файл (руками), как ещё?
А как забираю - вот кусок обмена между SIM300 и процессором:

AT+CDNSORIP=0

OK
AT+CGATT=1

OK
AT+CIPCSGP=1,"internet.beeline.ru","beeline","beeline"

OK
AT+CIPSTART="TCP","195.34.238.215","80"

OK

CONNECT OK
AT+CIPSEND

> GET /v100.uue HTTP/1.1
Host: 195.34.238.215


SEND OK
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Tue, 20 Nov 2007 18:02:28 GMT
Content-Type: application/octet-stream
Accept-Ranges: bytes
Last-Modified: Tue, 20 Nov 2007 17:30:42 GMT
ETag: "f09869139b2bc81:a04"
Content-Length: 82275

YoRcY

M,4``"CQ```(^0-($L!(JH[`2,):P$IR=LD"`6B`!PD,F`/)`WP`A`/)#(@#"
M0RX`PD,I`/)`[P`J`/+0\``;`.)#&0#RT%\`&@#20Q\`PD,=`/)`_``>`,)#
M,P#"0S$`\D,R`/)`&0`W`,)#-0#R0.8`-@#"0P``PD,!`,)#)0#"0RT`@D.F
M`<)#!`#"0P4`@D-@`8)#8@&"0V0!@D-F`8)#@`&"0X(!@D.$`8)#A@&"0X@!
....
....


здесь тоже все ясно... а как файл с модуля забираете - просто все что льется с порта в память пишите? АТ45 успевает все записать? еще как я понимаю файл .uue нужно преобразовать в нормальный вид (хотя по спецификации вроде все несложно выглядит преобразование 4 байта в 3)...

Я думал немножко по другому передавать файл небольшими пакетами с подтверждением приема... но для этого пришлось бы писать особое по сервера работающие по этому протоколу передачи...

Цитата(Dmitrich @ Aug 21 2010, 06:38) *
PS: Советую сначала добиться, что бы перепрошивка у тебя без шифрования работала, а потом уже, если очень нужно - добавляй шифрование.


ну да так и планирую...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 21 2010, 13:36
Сообщение #14


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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


Как минимум еще одной "идеи" не хватает wink.gif
Неплохо еще сжимать образ. Бинарные коды программ неплохо сжимаются. Несложные алгоритмы могут сжать в 2-а раза и более.

Не все операторы хорошо пропускают активные FTP соединения. Надо побеспокоится о наличии пасcивного FTP.
Вообще могут возникнуть проблемы с FTP серверами. Неплохо было бы подумать забирать прошивку с mail-сервера. Это более гарантированный и надежный сервис и не требует особых усилий для прохода NAT-ов.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Aug 21 2010, 14:39
Сообщение #15


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
АТ45 успевает все записать?

С легкостью. Там собираешь страницу в буферной памяти (с любой максимальной скоростью SPI), а затем записываешь всю страницу.
Go to the top of the page
 
+Quote Post

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

 


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


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