Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR 6.10 Запись в EEPROM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Wolfenstein
Всем привет! Недавно начал осваивать IAR и сейчас у меня проблемка - не могу разобраться, как в нём записывать данные в EEPROM. Пишу в коде на C++ всё как в примере из хелпа:
__eeprom char strHello[] = "Hello World";

Линкер тогда мне выдаёт ошибку - BE009, см. "1" во вложении. По ходу в настройках линкера надо что-то поменять. Или дать команду в его Extra Options. Подскажите, пожалуйста, с каким бубном плясать?
prottoss
Цитата(Wolfenstein @ Jul 6 2013, 18:03) *
Всем привет! Недавно начал осваивать IAR и сейчас у меня проблемка - не могу разобраться, как в нём записывать данные в EEPROM. Пишу в коде на C++ всё как в примере из хелпа:
__eeprom char strHello[] = "Hello World";

Линкер тогда мне выдаёт ошибку - BE009, см. "1" во вложении. По ходу в настройках линкера надо что-то поменять. Или дать команду в его Extra Options. Подскажите, пожалуйста, с каким бубном плясать?
Объявляйте массив как глобальную переменную - вынесете ее за тело функции.
Wolfenstein
Да, мог бы и сам догадаться) Спасибо! А вот такой ещё вопрос: я выбрал формат выходного файла intel standard. IAR в этом случае генерит один файлик .hex. Поскольку я использую EEPROM в AVRке, то мне надо знать - этот файл содержит информацию о том, где должны храниться данные - на флешке или в епромке? Я на одном сайте нашёл, что при использовании епромки в контроллере нужно генерить 2 отдельных hex-файла - для епромки и для флешки. Так ли это?
prottoss
Цитата(Wolfenstein @ Jul 6 2013, 19:27) *
Да, мог бы и сам догадаться) Спасибо! А вот такой ещё вопрос: я выбрал формат выходного файла intel standard. IAR в этом случае генерит один файлик .hex. Поскольку я использую EEPROM в AVRке, то мне надо знать - этот файл содержит информацию о том, где должны храниться данные - на флешке или в епромке? Я на одном сайте нашёл, что при использовании епромки в контроллере нужно генерить 2 отдельных hex-файла - для епромки и для флешки. Так ли это?

Да, так. Но я не вспомню, как это делать. Нужно в опциях линкера, в Extra Options задавать параметры для командной строки. Посмотрите в хелпе на компилятор - там это описано.
Wolfenstein
Я применил вот такое заклинание:

-Ointel-standard,(CODE)=.flash.hex
-Ointel-standard,(XDATA)=.eeprom.hex

Линкер выдал глобально-фатальную ошибку, несущую смуту и хаос...
Fatal Error[e62]: File name "D:\Projects\IAR EWB\Atmel\Try\Debug\Exe\try.hex" used for multiple files

Вам не известно, что бы это могло означать?
bbill
Примените вот такое "заклинание":
-we133=i
-Ointel-extended,(CODE)=$PROJ_DIR$\Имя.hex
-Ointel-extended,(XDATA)=$PROJ_DIR$\ee_Имя.hex

Использую для Си(без плюсов)
Wolfenstein
И при этом во вкладке Output поменять расширение на hex и выбрать Format->Other->Intel-Extended ? Хотя я там уже по-разному все варианты перепробовал. Генерится всё равно только один общий hex, раздельными для епромки и для флешки там даже и не пахнет...
ut1wpr
Цитата(Wolfenstein @ Jul 6 2013, 22:05) *
И при этом во вкладке Output поменять расширение на hex и выбрать Format->Other->Intel-Extended ? Хотя я там уже по-разному все варианты перепробовал. Генерится всё равно только один общий hex, раздельными для епромки и для флешки там даже и не пахнет...

Я пользуюсь батниками. Вызов батника делаю прямо их ИАРа.
Вот один из примеров:
Код
@echo off
c:\postlink.exe -intel-extended -code  fox48.raw fox48.hex > nul
c:\postlink.exe -intel-extended -xdata fox48.raw fox48.eep > nul
avreal32 +mega48 -aft2232:enable=~adbus4,~acbus2 -az -e -w -n fox48.hex fox48.eep -v
exit 0

Утилита postlink к ИАРу прилагается.
В закладке Linker->Output ставлю переключатель на other, Output format выбираю simple.
Генерируется файл с расширением .raw С ним и расправляется postlink.
Если в программе я не работаю с eeprom, выбираю intel-standart. Тогда нужен иной батник.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.