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

 
 
> Самопрограммирование 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
Ответов
arttab
сообщение Jul 22 2008, 13:26
Сообщение #2


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

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



обновлялка загрузчика должна быть в NRWW.
Хотя может для новых камней чего поменялось


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
cpl
сообщение Jul 22 2008, 13:31
Сообщение #3


Местный
***

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



Цитата(arttab @ Jul 22 2008, 17:26) *
обновлялка загрузчика должна быть в NRWW.
Хотя может для новых камней чего поменялось

Все также осталось, специально смотрел....
у меня так и реализовано,
хотел обновлять загрузчик целиком, но значит увы нельзя ....
Go to the top of the page
 
+Quote Post
oran-be
сообщение Jul 22 2008, 16:15
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



Совершенно непонятно - в чем проблема. Если зашарить битами защиты область NRWW то все будет читаться и писаться, только при организации потока записи необходимо учитывать, что при записи области NRWW проц будет подвисать на момент записи.
Go to the top of the page
 
+Quote Post
cpl
сообщение Jul 23 2008, 08:21
Сообщение #5


Местный
***

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



Цитата(oran-be @ Jul 22 2008, 20:15) *
Совершенно непонятно - в чем проблема. Если зашарить битами защиты область NRWW то все будет читаться и писаться, только при организации потока записи необходимо учитывать, что при записи области NRWW проц будет подвисать на момент записи.


все расшарино, на 128L номер не прошел....
только из области загрузчика работает.

Цитата(IJAR @ Jul 23 2008, 11:43) *
Сталкивался с подобной проблемой - решил ее так:
Загрузчик размещен в области BootLoader, при этом функция непосредственной
записи во Flash занимает строго 1 страницу в 256 байт (хотя сама она короче)
Перед заменой загрузчика, во Flash для Application, пишется промежуточный загрузчик,
но он использует функцию записи страницы Flash из основного загрузчика.
Далее - управление передается на промежуточный загрузчик, который производит
обновление основного, при этом страница с функцией записи Flash пропускается.
Все отлично работает.


Нечто подобное и сделано, только все сразу прошито, в последнем секторе содержиться подпрограмма перепрошивки всего.
Вообще моглибы сделать и пропроще единую область для перепрошивки, с логическим разделением на боот и все остальное(надо посмотреть как там у арм7 с этим делом), лучше подождать во время перепрощивки с подвисанием, чем так изголяться с загрузчиком...

Цитата(IJAR @ Jul 23 2008, 12:05) *
Затрудняюсь ответить что реально происходит, но при отладке в симуляторе AVR STUDIO -
все пишется, а реально в контроллере запись не происходит а сам контроллер
куда то "улетает". Приведенной выше способ надежно работает.


Одним словом симулятор не больше и не меньше.....
в нем поначалу пробовал все ок в реальном железе область закрывается на чтение все 0xff и проц неподвисая выполняет эти 0xff .... да еще при последующем считывании flash оказывается что страница так и не стерта ! все как было так и осталось 07.gif
На мой взгляд перемудрил атмел.... maniac.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- cpl   Самопрограммирование mega640.   Jul 21 2008, 17:32
- - 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
- - Александр Куличок   ЦитатаИными словами, во время записи происходит ка...   Jul 23 2008, 12:36
|- - Боинг749   Цитата(Александр Куличок @ Jul 23 2008, 15...   Aug 25 2008, 12:55
- - 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 Текстовая версия Сейчас: 21st July 2025 - 01:21
Рейтинг@Mail.ru


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