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

 
 
> Изменение константы в памяти программы в AVR
DimonD
сообщение Mar 16 2005, 12:56
Сообщение #1


Участник
*

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



Меня интересует… возможно ли изменить константу в памяти программы то есть перепрограммировать участок кода в ходе выполнения основной программы. С EEPROM не хочу связываться.

Если есть такая возможность подскажите как…. На Си…
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
IgorKossak
сообщение Mar 16 2005, 13:56
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Application Note AVR105
Всё очень подробно описано.
Go to the top of the page
 
+Quote Post
SPS
сообщение Mar 16 2005, 14:16
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 8-02-05
Из: Ukraine
Пользователь №: 2 501



LPM - загрузка из памяти программы.
SPM - запись в память программы.

Смотри также команды LD, ST.
Go to the top of the page
 
+Quote Post
DimonD
сообщение Mar 17 2005, 07:33
Сообщение #4


Участник
*

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



Что-то я совсем туплю ну не как понять не могу как в CodeVisionAVR изменить ячейка в памяти программ. Знаю что есть AVR105/AVR109 и на amel.ru есть описание но там в основном говориться о бут загрузчиках и примеры на ассемблере. Может в качестве примера сишный код кто даст. Можно и со вставкой ассемблера. Заранее спасибо
Go to the top of the page
 
+Quote Post
SPS
сообщение Mar 17 2005, 07:49
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 8-02-05
Из: Ukraine
Пользователь №: 2 501



Цитата(SPS @ Mar 16 2005, 16:16)
LPM - загрузка из памяти программы.
SPM - запись в память программы.

Смотри также команды LD, ST.
*


Какая проблема поместить данные команды в СИ в виде ассемблерных вставок?
LPM - загрузка в R0 из адреса Z.
LPM Rd,Z - загрузка в Rd из адреса Z.
LPM Rd,Z+ - загрузка в Rd из адреса Z с инкрементом адреса.

Напомню, что данные команды поддерживаются не всеми АVR.
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 17 2005, 07:55
Сообщение #6


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(DimonD @ Mar 16 2005, 15:56)
Меня интересует… возможно ли изменить константу в памяти программы то есть перепрограммировать участок кода в ходе выполнения основной программы.  С EEPROM не хочу связываться. 

Если есть такая возможность подскажите как…. На Си…
*


Лучше всетаки связаться с eeprom!!! в Eeprom еще можно гораздо больше раз писать чем во флеш
Запись во флеш может быть только по страницам и только из области бутлоадера. Т.е. надо считать страницу LMP ами потом стереть записать SPM и потом записать всю страницу.

На с можно написать у IAR есть функции
__DataToR0ByteToSPMCR_SPM
__AddrToZByteToSPMCR_SPM
__AddrToZWordToR1R0ByteToSPMCR_SPM

, но лучше встеки писать на асме, потому что текс на С принципиально отличатся не будет! но вот на АСМе он понятнее будет! тем более все примеры на нем.
Go to the top of the page
 
+Quote Post
DimonD
сообщение Mar 17 2005, 13:41
Сообщение #7


Участник
*

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



>>Какая проблема поместить данные команды в СИ в виде ассемблерных вставок?

проблем нет smile.gif
вот текст:
#asm
ldi r31,$F0
clr r30
ldi r16,$CF
mov r1,r16
ldi r16,$03
out SPMCR,r16
spm

ldi r16,$01
out SPMCR,r16 //тут CodeVisionAVR ругается
spm
#endasm

>>Напомню, что данные команды поддерживаются не всеми АVR
еще дело не дошло до AVR Studio, а так amega163 или 128

Может все-таки кто даст даст работающий пример…
Ассемблер я плохо знаю и не работал в нем может поэтому я что-то да не понимаю.
Go to the top of the page
 
+Quote Post
vet
сообщение Mar 17 2005, 16:59
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата
out SPMCR,r16 //тут CodeVisionAVR ругается

А не из-за комментария ли он ругается? wink.gif
Сишного комментария в ассемблерной строке?


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 17 2005, 18:18
Сообщение #9


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(DimonD @ Mar 17 2005, 16:41)
>>Какая проблема поместить данные команды в СИ в виде ассемблерных вставок?

Может все-таки кто даст даст работающий пример…
Ассемблер я плохо знаю и не работал в нем может поэтому я что-то да не понимаю.
*


Не все так просто! SPM можно делать только из области бутлоадера поэтому функию надо размещать там. А пример бутлоадера и как работать с spm есть на сайте атмела в AppNotes AVR109
http://www.atmel.com/dyn/resources/prod_do...nts/doc1644.pdf
Go to the top of the page
 
+Quote Post

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

 


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


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