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

 
 
> cамопрограммирование, AVR Mega32 cамопрограммирование, кто плавал подскажите...
QuickWitted
сообщение Mar 31 2008, 04:29
Сообщение #1


Местный
***

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



Решил прикрутить к своему девайсу самопрограммирование через RS232...
(RS232 уже реализован rx, tx, dsr)

Кто плавал подскажите как со стороны МК это более грамотно реализовать...
(Доки Атмела читал, но по данному вопросу другой информации не нашёл)

Какие грабли ждать?

Какой протокол (если есть готовый) использовать?
(или самому насочинять...)

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

По мимо всего прочего интересует вопрос сброса... ну предположим
по определённой команде программа перейдёт в бут область...
Как вариант - прерывания у меня отключены на время прогрева,
настройки бортовой (на МК) периферии и тестирования ОЗУ...
После этого проверить пришел какой либо заданный символ за это
время по рс 232? Если да - самопрограммирование... но вопрос
как реализовать после всего этого Софтовый резет?

Немного истории:

Когда я разрабатывал Book reader на AVR ATMega16
http://www.swordgreenline.narod.ru/BookReader.html
столкнулся с проблемой занятости SPI порта программатором.

Залил прошивку, вытащил программатор, воткнул в этот разъём ММС флэш,
перезапустил устройство, подтвердил вход (иначе был риск управлять
вместо флэши программатором), проверил нашёл ошибки (скорректировал
исходник), выключил устройство, вынул флэшку, воткнул программатор
и т.д. муторно и долго...

Теперь хочу сделать девайс на Mega32 с периферией:
SPI MMC флэш
RS232
LPT(мастер) на основной плате для подключения "стандартной" комповой периферии.
и 4х битная шина дисплея с МК опроса АТ клавиатуры на
вспомогательной...

и что бы
1) ускорить прошивку девайса (через LPT очень медленно)
2) не заниматься передёргиванием то флэши, то программатора в один SPI
хотелось бы прикрутить самопрограммирование...


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Дон Амброзио
сообщение Mar 31 2008, 05:03
Сообщение #2


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Делаю так.
После сброса попадаем в область загрузчика (для чего программирую соответствующий FUSE).
Затем перемещаю таблицу векторов в область загрузчика.
Затем делаю тест целостности программы.
Если она повреждена записываю это в последнюю страницу FLASH и жду загрузочных пакетов. При этом отвечая на "вопросы" внешних устройств о моём состоянии "Мой софт разрушен. Жду загрузки софта. Софт загружен до ... -ого блока".
Внешнее устройство, которое будет передавать мне прошивку получив мой пакет начинает передавать мне прошивку блоками начиная с того пакета, который я указал.
В самом первом блоке FLASH храню номер версии прошивки.
А при передаче пакетов с программой я всегда указываю в пакете к какой версии софта относиться данная прошивка (поскольку в сети одновременно могут обновляться прошивки нескольких разных устройств)

Уф.. Пока хватит.. Хотя я не перечислил и 10-й части всех нюансов и тонкостей организации работы загрузчика...Итак много букв написал.. Если есть неясные моменты и более конкретные вопросы - задавайте

Сообщение отредактировал Дон Амброзио - Mar 31 2008, 05:09


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Mar 31 2008, 05:21
Сообщение #3


Местный
***

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



Цитата(Дон Амброзио @ Mar 31 2008, 10:03) *
После сброса попадаем в область загрузчика (для чего программирую соответствующий FUSE).
Затем перемещаю таблицу векторов в область загрузчика.


если можно немного подробнее с этого места....
я ещё не совсем понял как разрулить прерывания...
ну предположим (хотя не обязательно) загрузчик будет пользоваться прерыванием рс232
но относительные адреса прерываний от версии прошивки к версии будут плавать?
(т.к. указывают на изменяемые во время перепрошивки блоки)

как реализовать выход из прошивки (без внешнего сброса)
если использовать внешний вход в эту область - это может быть не надёжным,
т.е. надо как то определиться при старте с перепрошивкой...

изобретать систему команд званого, или есть готовые или хотябы описание их набора?
(я про CRC16 и проверки)
Планирую использовать алгоритм CRC16 от флэшки MMC раз он у меня уже написан...

Сообщение отредактировал QuickWitted - Mar 31 2008, 05:23


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 31 2008, 05:35
Сообщение #4


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(QuickWitted @ Mar 31 2008, 08:21) *
я ещё не совсем понял как разрулить прерывания...
ну предположим (хотя не обязательно) загрузчик будет пользоваться прерыванием рс232
но относительные адреса прерываний от версии прошивки к версии будут плавать?

Вектора прерываний в загрузчике должны указывать на обработчики, находящиеся в загрузчике. А под загрузчик я всегда использую всю секцию NRWW флэши.

А эти обработчики могут либо всегда сами обрабатывать прерывания(т.е. они не будут меняться от прошивки к прошивке). Либо можно грузить адрес перехода из ОЗУ. Либо в загружаемой программе можно сделать свою таблицу векторов которая будет использована после окончания загрузки и переключения на таблицу, расположенную в RWW.

Цитата(QuickWitted @ Mar 31 2008, 08:21) *
т.е. надо как то определиться при старте с перепрошивкой...

Я сначала проверяю целостность прошивки. Затем смотрю содержимое служебной области FLASH или EEPROM(не поступали ли команды извне на перезаливку софта). И по результатам перехожу либо на сброс в RWW(т.е. передаю управление приложению) либо перехожу в режим загрузчика.

Сообщение отредактировал Дон Амброзио - Mar 31 2008, 05:38


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- QuickWitted   cамопрограммирование   Mar 31 2008, 04:29
|- - QuickWitted   Цитата(Дон Амброзио @ Mar 31 2008, 10:35)...   Mar 31 2008, 05:59
|- - Дон Амброзио   Цитата(QuickWitted @ Mar 31 2008, 08:59) ...   Mar 31 2008, 08:52
|- - Dog Pawlowa   Цитата(QuickWitted @ Mar 31 2008, 08:59) ...   Mar 31 2008, 09:20
|- - Дон Амброзио   Цитата(Dog Pawlowa @ Mar 31 2008, 12:20) ...   Mar 31 2008, 09:36
|- - Dog Pawlowa   Цитата(Дон Амброзио @ Mar 31 2008, 12:36)...   Mar 31 2008, 09:46
|- - Дон Амброзио   Цитата(Dog Pawlowa @ Mar 31 2008, 12:46) ...   Mar 31 2008, 09:56
|- - Dog Pawlowa   Цитата(Дон Амброзио @ Mar 31 2008, 12:56)...   Mar 31 2008, 10:04
||- - Дон Амброзио   Цитата(Dog Pawlowa @ Mar 31 2008, 13:04) ...   Mar 31 2008, 10:28
|- - QuickWitted   Цитата(Дон Амброзио @ Mar 31 2008, 14:56)...   Mar 31 2008, 10:35
|- - defunct   Цитата(QuickWitted @ Mar 31 2008, 12:35) ...   Mar 31 2008, 10:43
- - _Sam_   Цитатаесли можно немного подробнее с этого места.....   Mar 31 2008, 06:41
- - GDI   Для начала посмотрите AVR-109.pdf и AVR-109.zip, в...   Mar 31 2008, 07:09
|- - QuickWitted   Цитата(GDI @ Mar 31 2008, 12:09) Для нача...   Mar 31 2008, 07:56
- - IJAR   Посмотрите по этой ссылке. http://www.fractal.com...   Mar 31 2008, 13:29
|- - QuickWitted   Цитата(IJAR @ Mar 31 2008, 18:29) это сде...   Apr 1 2008, 09:49
|- - Дон Амброзио   Цитата(QuickWitted @ Apr 1 2008, 12:49) с...   Apr 1 2008, 10:03
||- - QuickWitted   Цитата(Дон Амброзио @ Apr 1 2008, 15:03) ...   Apr 1 2008, 10:26
||- - Дон Амброзио   Цитата(QuickWitted @ Apr 1 2008, 13:26) Д...   Apr 1 2008, 10:39
|- - Dog Pawlowa   Цитата(QuickWitted @ Apr 1 2008, 12:49) Д...   Apr 1 2008, 11:13
|- - QuickWitted   Цитата(Dog Pawlowa @ Apr 1 2008, 16:13) Е...   Apr 2 2008, 11:29
|- - defunct   Цитата(QuickWitted @ Apr 2 2008, 13:29) Н...   Apr 2 2008, 11:39
|- - QuickWitted   Цитата(defunct @ Apr 2 2008, 16:39) На AS...   Apr 3 2008, 04:53
- - sergeeff Jr.   Почитайте тут http://avrubd.googlepages.com/avrub...   Apr 1 2008, 23:13


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

 


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


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