Перейти к содержанию
    

Изменение константы в памяти программы в AVR

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то я совсем туплю ну не как понять не могу как в CodeVisionAVR изменить ячейка в памяти программ. Знаю что есть AVR105/AVR109 и на amel.ru есть описание но там в основном говориться о бут загрузчиках и примеры на ассемблере. Может в качестве примера сишный код кто даст. Можно и со вставкой ассемблера. Заранее спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

LPM - загрузка в R0 из адреса Z.

LPM Rd,Z - загрузка в Rd из адреса Z.

LPM Rd,Z+ - загрузка в Rd из адреса Z с инкрементом адреса.

 

Напомню, что данные команды поддерживаются не всеми АVR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Лучше всетаки связаться с eeprom!!! в Eeprom еще можно гораздо больше раз писать чем во флеш

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

 

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

__DataToR0ByteToSPMCR_SPM

__AddrToZByteToSPMCR_SPM

__AddrToZWordToR1R0ByteToSPMCR_SPM

 

, но лучше встеки писать на асме, потому что текс на С принципиально отличатся не будет! но вот на АСМе он понятнее будет! тем более все примеры на нем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

проблем нет :)

вот текст:

#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

 

Может все-таки кто даст даст работающий пример…

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А не из-за комментария ли он ругается? ;)

Сишного комментария в ассемблерной строке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Может все-таки кто даст даст работающий пример…

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

 

Не все так просто! SPM можно делать только из области бутлоадера поэтому функию надо размещать там. А пример бутлоадера и как работать с spm есть на сайте атмела в AppNotes AVR109

http://www.atmel.com/dyn/resources/prod_do...nts/doc1644.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...