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

 
 
> Самопрограммирование mega640.
cpl
сообщение Jul 21 2008, 17:32
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Необходимо обновлять загрузчик, есть ли возможность прошить загрузчик(NRWW область) из памяти программ (NWW область) ?
Код взял из примеров Atmel, страница памяти программ остается не тронутой, не стирается ....
Если код располагается в NRWW областе то страница стирается, вне ее нечего не просиходит...
smile3046.gif
код:

ldi ZL,0x00
ldi ZH,0x70

ldi temp,(1 << PGERS | 1<< SPMEN) ; Page Erase
call Do_spmF

ldi temp,(1 << RWWSRE | 1<< SPMEN)
call Do_spmF

Do_spmF:
push temp1
Do_spmF1:
in temp1,SPMCSR
sbrc temp1,SPMEN
rjmp Do_spmF1
in temp1,SREG
cli
Wait_eeF:
sbic EECR,EEPE
rjmp Wait_eeF
out SPMCSR,temp
spm
out SREG,temp1

pop temp1

ret
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Александр Куличо...
сообщение Jul 23 2008, 12:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
Иными словами, во время записи происходит какая-то чехарда с фьюзами?

Никакой чехарды нет.
Из Application-секции команда SPM не работает ни при каких фьюзах(вернее, локах smile.gif). SPM может выполнятся только из секции бутлоадера. А может и не выполнятся:
1. если делается попытка записи в секцию Application при выставленом [SPM prohibit in Application section] (иными словами, запрет обновления секции приложения)
2. если делается попытка записи в секцию bootloader'а при выставленом [SPM prohibit in Bootloader section] (запрет обновления секции загрузчика)

То есть, сам загрузчик (реализация его алгоритма) может размещаться где угодно (Application или Bootloader, RWW или NRWW), но непосредственно функция записи или, если еще точнее, команда spm, должна размещаться в секции Bootloader'а. Там же должен размещаться код ожидания окончания записи, если мы вызвали ее из секции приложения и пишем в секцию приложения (сорри за тавтологию)

Цитата
обновлялка загрузчика должна быть в NRWW

Позвольте уточнить - должна быть в секции bootloader'а.
Граница между NRWW и RWW - фиксированная, а Application/Boolloader section - может изменятся фьюзами. Cекция Bootloder'a всегда находится в области NRWW. При определенных фьюзах (BOOTSZ != 0) в область NRWW попадает конец секции Application (в которой spm не работает)

Как писал IJAR, Вам нужно в секции бутлоадера зарезервировать одну страничку, которая никогда не будет обновлятся (в т.ч. и при обновлении кода загрузчика) и в ней разместить функцию непосредственной записи + ожидания окончания записи странички (при необходимости). Еще в ней можно сделать дополнительную проверку ZH:ZL, чтобы не стереть саму себя.
Go to the top of the page
 
+Quote Post
Боинг749
сообщение Aug 25 2008, 12:55
Сообщение #3


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

Группа: Новичок
Сообщений: 83
Регистрация: 25-08-08
Пользователь №: 39 801



Цитата(Александр Куличок @ Jul 23 2008, 15:36) *
Вам нужно в секции бутлоадера зарезервировать одну страничку, которая никогда не будет обновлятся (в т.ч. и при обновлении кода загрузчика) и в ней разместить функцию непосредственной записи + ожидания окончания записи странички (при необходимости).
Я делаю ни одну, а несколько, в которой размещаю обновлялку самого загрузчика и набор самых необходимых подпрограмм
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- cpl   Самопрограммирование mega640.   Jul 21 2008, 17:32
- - arttab   обновлялка загрузчика должна быть в NRWW. Хотя мо...   Jul 22 2008, 13:26
|- - cpl   Цитата(arttab @ Jul 22 2008, 17:26) обнов...   Jul 22 2008, 13:31
|- - oran-be   Совершенно непонятно - в чем проблема. Если зашар...   Jul 22 2008, 16:15
|- - cpl   Цитата(oran-be @ Jul 22 2008, 20:15)...   Jul 23 2008, 08:21
- - IJAR   Сталкивался с подобной проблемой - решил ее так: З...   Jul 23 2008, 07:43
|- - _Pasha   Цитата(IJAR @ Jul 23 2008, 10:43) функция...   Jul 23 2008, 07:51
|- - IJAR   Цитата(_Pasha @ Jul 23 2008, 11:51) Иными...   Jul 23 2008, 08:05
- - Syberian   Не знаю, как насчет 640-й, но некоторые Меги не по...   Aug 26 2008, 04:27
- - cpl   Цитата(Syberian @ Aug 26 2008, 08:27) Что...   Aug 26 2008, 08:47
- - Боинг749   Цитата(cpl @ Aug 26 2008, 12:47) ^^^^^^^^...   Aug 26 2008, 19:26
- - sKWO   Цитата(Боинг749 @ Aug 26 2008, 22:26) Ком...   Aug 26 2008, 20:01
- - Боинг749   Цитата(sKWO @ Aug 27 2008, 00:01) Ну, чег...   Aug 26 2008, 20:19


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

 


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


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