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

 
 
 
Reply to this topicStart new topic
> удаленное программирование, wavecom & mega32
demon_lee
сообщение Mar 31 2009, 09:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 21-04-06
Из: спб
Пользователь №: 16 353



поиском пользовался, помогло мало.
я в тему бутлоадера ещё не въехал.
то есть как реализовать пока понятия не имею, и вопрос у меня пока ни в контретный строках кода,
а в алгоритме по которому это надо сделать.
в вэйвкоме памяти достаточно чтоб хранить прошивку для меги32, хотя можно и фрамку прикрутить.
сейчас они по и2с общаются но можно и на СПИ перевести.
вэйвком опрашивает мегу, та в свою очередь отдает массив 512 байт - это основная работа меги.
я думаю следить за валидностью прошивки и за целостностью мне нет необходимости,
хотя успешный результат программирования тоже интересен. (это проверить не сложно на вэйвкоме)
прошивать буду только по требованию (через СМС) и вот от сюда не знаю как делать дальше.
надо ли ресетить мегу, что куда подсовывать, куда писать, от куда читать.
гуглил на эту тему по делу мало sad.gif вот нашел загрузчик через UART может получиться переделать под себя.
помогите советом. Рад буду любой помощи.

а может вообще есть человек который поможет это сделать, за вознаграждение.

для справки вэйвком забирает прошивку по ФПТ через ГПРС и положит её куда надо будет.

здравый смысл подсказывает что в меге должен быть только будлоадер, и каждый раз после ребута приложение будет грузиться из внешней памяти, а если что не так то сказать модему что мол так и так проблема с загрузкой.
по требованию мы лишь перепишем содержимое памяти, а после ребута загрузиться новая прошивка.
(административное управление на вейвкоме будет, т.е. ресет меги, заливка прошивки в память и т.д.)
как такой подход?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 31 2009, 18:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Обычно алгоритм такой:
Прога в м32 состоит из 2 независимых частей: приложение и бут.
При запуске (ресете) запускается всегда бут. Он проверяет целостность приложения и если оно цело, то запускает его. Иначе ждёт загружаемого кода приложения.
При работе приложения нужно по какому-то алгоритму инициировать старт бута.
Бут работает по любому каналу (какой выбирете). Это может быть и I2C и SPI и RS485 и т.д. Есть понятие протокола, то есть как формируются пакеты, где команды указываются, как контрольная сумма считается, что делать если она неверна и т.д.

Я бы рекомендовал также предусмотреть команду выдачи текущей версии по запросу.

Возможно также прошивку хранить во внешней EEPROM. Например в I2C EEPROMе. То есть грузить туда, а при перестарте перезаливать во флэш. (Обычно это делается "на лету").
Go to the top of the page
 
+Quote Post
demon_lee
сообщение Mar 31 2009, 19:20
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 21-04-06
Из: спб
Пользователь №: 16 353



Цитата(SasaVitebsk @ Mar 31 2009, 22:24) *
При запуске (ресете) запускается всегда бут. Он проверяет целостность приложения и если оно цело, то запускает его.

то есть проверяет целостность прямо у себя во флеши?
Цитата(SasaVitebsk @ Mar 31 2009, 22:24) *
При работе приложения нужно по какому-то алгоритму инициировать старт бута.

этим будет рулить модем, я демаю он будет ресетить мегу, а та при старте начнет искать прошивку.
Цитата(SasaVitebsk @ Mar 31 2009, 22:24) *
Есть понятие протокола, то есть как формируются пакеты, где команды указываются, как контрольная сумма считается, что делать если она неверна и т.д.

ну тут наверно стоит начинать изучать
http://www.gaw.ru/html.cgi/txt/doc/micros/...arh128/19_2.htm
http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR109.htm
я прав?
Цитата(SasaVitebsk @ Mar 31 2009, 22:24) *
Я бы рекомендовал также предусмотреть команду выдачи текущей версии по запросу.

это будет
Цитата(SasaVitebsk @ Mar 31 2009, 22:24) *
Возможно также прошивку хранить во внешней EEPROM. Например в I2C EEPROMе. То есть грузить туда, а при перестарте перезаливать во флэш. (Обычно это делается "на лету").

чтобы упростить программу бута, картина вырисовывается такая:
ресет, старт бута, он по SPI из внешней еепромки качает приложение себе, проверяет, стартует, работает
при необходимости ребутим мегу, предварительно залив вовнешнюю еепром программу.
логично.
но тогда вопрос, а можно ли одним контроллером в еепром писать, а другим из неё читать на примере spi (просто у меня по и2с обмен с модемом сделан, а он слейвом на шине быть отказывается).
я это как бы сказать...чайник в этом деле
Go to the top of the page
 
+Quote Post
demon_lee
сообщение Apr 1 2009, 12:58
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 21-04-06
Из: спб
Пользователь №: 16 353



Спасибо модераторам, что убрали тему в самую задницу :>[
чайник в смысле создания микроконтроллерных систем с бутлоадером,
за плечами 4 серийных проекта, пусть небольшие но серийные, и сделаные мной!!!
аналоговая схемотехника, силовая преобразоват техника на ура.
вот с МК недавно, но не настолько чтоб задавать глупые вопросы.
ВЕРНИТЕ ВЕТКУ НА МЕСТО! судя по соседним темам,здесь мне уж точно не помогут sad.gif .

Сообщение отредактировал demon_lee - Apr 1 2009, 13:00
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 1 2009, 14:48
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(demon_lee @ Apr 1 2009, 15:58) *
вот с МК недавно, но не настолько чтоб задавать глупые вопросы.
ВЕРНИТЕ ВЕТКУ НА МЕСТО! судя по соседним темам,здесь мне уж точно не помогут sad.gif .

Не нервничайте, задавайте вопросы и сами думайте smile.gif
Перлам типа "модем сбросит контроллер" без указания, как именно, и "мега будет искать прошивку" именно тут место.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 1 2009, 18:52
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Начну с того, что разработчик (в данном случае вы) волен сам выбирать решения. Их много. Любую задачу можно решить десятками способов. Я буду, для начала приводить общепринятые решения под фишкой "обычно". smile.gif

Цитата(demon_lee @ Mar 31 2009, 22:20) *
то есть проверяет целостность прямо у себя во флеши?

Естественно. Этим он контролирует правильность программы, которую планирует выполнять. Кроме того, этим он проверяет была ли закончена операция обновления приложения. Представьте себе, что во время записи приложения у вас произошёл сбой питания. В этом случае ничего страшного не произойдёт, так как при перестарте бут проверит целостность приложения, увидит что не совпадает CRC и будет ждать повторной передачи приложения.
Цитата
этим будет рулить модем, я демаю он будет ресетить мегу, а та при старте начнет искать прошивку.

Обычно делают так:
1) бут записывает приложение сразу себе во флэш.
2) Например работа вашего устройства состоит в выдаче пакета на запрос. (как я понял). Соответственно вы вводите ещё один запрос на выдачу версии. И ещё один запрос на обновление приложения. Внешнего ресета - не требуется. Будет внутренний переход на бут. При этом при ресете обязательно запускается бут анализирует и переходит на прилож, как я писал выше.
Цитата
ну тут наверно стоит начинать изучать
http://www.gaw.ru/html.cgi/txt/doc/micros/...arh128/19_2.htm
http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR109.htm
я прав?

1-ая ссылка совершенно не из той оперы. Это метод программирования контроллера с помощью внешнего контроллера.
2-ая - да. Это по теме. Можно ещё порекомендовать AVR231. Очень многие его брали за основу.
Если же говорить о протоколах, то лучше почитайте что-нибудь типа WakeUp. Простой, но дающий общую картину.
Цитата
это будет

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

Можно и так.
Обычно так:
Передаём команду в приложение и по ней мега переходит на бут.
Передаём новый код приложения буту. Бут записывает.
по финишу бут контролирует и переходит назад на приложение. (новое)
Можно и так:
Передаём приложению новое приложение и мега складывает его в отдельную eeprom. Контролирует целостность.
По завершению передаём команду и переходим на бут. бут переносит приложение из eeprom во флэш. Перестартует.

Можно и как ваш случай, тогда надо организовывать совместное использование eeprom.
Цитата
но тогда вопрос, а можно ли одним контроллером в еепром писать, а другим из неё читать на примере spi (просто у меня по и2с обмен с модемом сделан, а он слейвом на шине быть отказывается).
я это как бы сказать...чайник в этом деле

Как раз по i2c это вполне возможно. Будет 2 мастера. Один записывает - второй читает. Только не одновременно, а попеременно.
С SPI придётся городить аппаратный мультиплексор выбора. В принципе не сложно. И ещё надо организовывать чтото типа признака занятости для каждого из процессоров. Тоже в принципе не сложно. Если это нужно конечно.
Go to the top of the page
 
+Quote Post
demon_lee
сообщение Apr 4 2009, 11:01
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 21-04-06
Из: спб
Пользователь №: 16 353



Спасибо!
я определился, с вашей помощью, как это будет работать.
мультиплекс на спи я уже делал. в курсе.
на счет и2ц подумаю. у вейвкома доступа к регистрам нету, только из АТ приложения через драйвер можно управлять шиной, сильно ограничены в функционале sad.gif

Цитата
Перлам типа "модем сбросит контроллер" без указания, как именно, и "мега будет искать прошивку" именно тут место.

а вы как то иначе подразумеваете сброс контроллера, нежели специально для этого отведенный вывод из корпуса м/сх, и кстати, модем умеет управлять свободными ногами GPIO как и все другие контроллеры, раз уж вы не знали. krapula.gif

а алгоритм выбора откуда брать более свежую прошивку из своей флеши или из внешней - не претендует на звание "алгоритм года!"
и на этой стадии вопроса не является принципиальным

с уважением.

я уже устал предыдущий пост править.
если кого обидел извините.

Сообщение отредактировал demon_lee - Apr 4 2009, 10:58
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 6 2009, 17:50
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(demon_lee @ Apr 4 2009, 14:01) *
а вы как то иначе подразумеваете сброс контроллера, нежели специально для этого отведенный вывод из корпуса м/сх, и кстати, модем умеет управлять свободными ногами GPIO как и все другие контроллеры, раз уж вы не знали. krapula.gif

Обычно никто не ресетит мегу. Это лишнее. По команде (совтовой) проц сам переходит куда нужно. Например "rjmp 0" или путём зацикливания, при включенном WDT. Есть и куча других способов.

Почитайте всёже AVR231. Там всё по полочкам + шифрование AES.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 6 2009, 18:19
Сообщение #9


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(SasaVitebsk @ Apr 6 2009, 21:50) *
Например "rjmp 0" или путём зацикливания, при включенном WDT.

Почему или? "rjmp 0" - это зацикливание :)
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 7 2009, 15:32
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Да хомутнул. Имел ввиду "rjmp boot". Зацикливание типа "rjmp $".
Go to the top of the page
 
+Quote Post

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

 


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


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