|
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