как запрограммировать EEPROM

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 17
Зарегистрирован: Вт мар 15, 2011 00:49:47

Сообщение v4567 »

Помогите пожалуйста разобраться. У меня программа состоит из одного файла который содержит 3 сегмента: сегмент кода .CSEG, сегмент данных .DSEG и сегмент памяти EEPROM .ESEG . Как мне записать эти три сегмента в микроконтроллер при помощи программы UniProf.
При компилировании получается один hex файл. Если я не ошибаюсь он содержит три сегмента .CSEG, DSEG и ESEG.
На сколько я понял для программирования микроконтроллера необходимо этот файл открыть в программе UniProf и выставив соответствующую галочку - flash, sram или EEPROM запрограммировать соответствующую область. Правильно я понимаю? Можно ли запрограммировать за один раз сразу три области памяти?
За помощь заранее благодарен!
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Насколько я понял, речь идет про AVR?
Если да, то обычно для сегмента данных EEPROM компилятор или ассемблер создают отдельный файл с расширением EEP. Его надо явно загрузить в программатор. Если конечно данные для еепром имеются.
Сегмент данных DSEG отдельно программировать не надо т.к. он уже является частью программы flash.
И запихнуть в SRAM(т.е. фактически вручную инициализировать ОЗУ) обычным программатором его никак не удастся. Это смогут сделать только отладчики-эмуляторы когда запускается отладочная сессия.
v4567 писал(а):Можно ли запрограммировать за один раз сразу три области памяти?
Если я не ошибаюсь, то файлы ELF как раз содержат данные всех сегментов.
Реклама
Родился
Сообщения: 17
Зарегистрирован: Вт мар 15, 2011 00:49:47

Сообщение v4567 »

uk8amk огромное спасибо! С этим разобрался. Ещё вот какой вопрос.
По поводу ОЗУ, я сразу не сообразил, да его не надо записывать так как оно всё равно сотрётся после выключения питания. Если надо что то туда записать это надо делать из программы программными средствами.
Только я не пойму для чего тогда нужна директива .DSEG и куда при записи запишутся данные содержащиеся в этой директиве?
Получается так что компилятор резервирует ячейки ОЗУ из секции .DSEG, а как тогда эти данные туда запихнуть и что значит резервирует, а если я принудительно по этим адресам что то запишу?
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

http://dfe.petrsu.ru/koi/posob/avrlab/a ... 20variable

Т.е. иными словами просто позволяет получить адрес метки в ОЗУ, а далее уже работайте через LD/ST.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 17
Зарегистрирован: Вт мар 15, 2011 00:49:47

Сообщение v4567 »

Всё понял. Спасибо!
Реклама
Ответить

Вернуться в «AVR»