текст не мой (материалы прошлого времени)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено des00 13 января 2004 г. 13:22
В ответ на: Ответ: А как "сказать" компановщику чтобы он сделал файл и для flash, и для eeprom? отправлено Nik 13 января 2004 г. 13:06

Q: Как работать с EEPROM в IAR 2.X?

A: В отличии от v1.40, в 2.X работать с EEPROM значительно проще.
Достаточно использовать ключевое слово __eeprom для любой переменной,
чтобы она оказалась размещенной в EEPROМ. Доступ к таком переменным
компилятор организует автоматически. Правда стоит предостеречь, что
доступ к переменным в EEPROM происходит значительно медленнее, чем к
обычным, да и ограничения на количество перезаписей никто не отменял.

Если переменная имеет инициализатор, его значение заносится в EEPROM
при программировании и не перезаписывается при рестарте.

Q: Как получить HEX-файл для прошивки EEPROM?

Q: Что делать с Error[e133]?

Q: Завел переменную __eeprom, а данные для EEPROM в выходном файле
записались поверх векторов прерываний. Что делать?

A: К сожалению, стандарт на всеми любимый формат файлов прошивок
intel-hex, не предусматривает размещение данных для нескольких
адресных пространств с одинаковыми адресами. Линкер из v2.25
неправильно интерпретировал такую ситуацию, что приводило к записи
данных EEPROM поверх программы. Более новый линкер из v2.26 вместо
этого выдает ошибку e133. Тем не менее выход есть, и даже не один.

Некоторые программаторы требуют отдельного файла для прошивки EEPROM.
Для этого случая в v2.26 предусмотрена специальная утилита
postlink.exe. Как ей пользоваться описано в документации
(postlink.htm).

Другие программаторы (например, Sterh) ожидают увидеть данные для
EEPROM в том же файле, что и для программ, но по адресам,
расположенным сразу за концом памяти программ. Такой вариант IARом не
предусмотрен, однако IAR имеет все необходимое, чтобы сгенерить такой
файл.

Первым делом надо избавиться от ошибки e133 (для 2.26). К счастью, IAR
предусмотрел возможность замаскировать любую ошибку. Добавляем ключик

-we133=i

Теперь перемещаем EEPROM по нужному нам адресу:

-M(XDATA)0-_..X_EEPROM_END=(_..X_FLASH_END+1)

Упс! В отладочной версии появилась ошибка e123. Не беда!

-we123=i

Вот и все. Да, добавлять эти строчки можно в свой XCL файл, если вы
его используете, а можно в EW23\avr\src\template\cfgXX.xcl (XX зависит
от используемой модели памяти - сами разберетесь), если вы используете
конфигурацию через меню.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru