Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос к IARу
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
LeoLabs
пишу следующее:
Код
__eeprom volatile unsigned char   CPU_status;
__C_task void main (void)
{
 CPU_status = 1;
  ....

компилятор ругается:

Цитата
Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted

может чего не так делаю?
Maxim
Все делаешь так. Просто надо настроить выходной формат линкера. Например поставь Debug, а остальное почитай в этом топике
MALLOY2
можно гараздо проще не меняя формата

__eeprom __no_init volatile unsigned char CPU_status;

если так обьявиш не будет ни каких вопросов.
Maxim
Цитата(MALLOY2 @ Jul 15 2005, 15:03)
можно гараздо проще не меняя формата

__eeprom __no_init volatile unsigned char  CPU_status;

если так обьявиш не будет ни каких вопросов.
*

В Error[e133] говорится, что пересекаются адресные пространства EEPROM и FLASH, а формат intel-standard не может упаковать различные виды памяти в один выходной файл. По этому __no_init здесь не поможет.
VladislavS
А ты попробуй. Ведь если не использовать __eeprom не возникает e133. При __no_init в сегмент XDATA тоже ничего не попадает и ошибки не будет.

Единственное, это будет работать, если вы не шьете программатором начальные значение EEPROM. Я, например, всегда в код программы включаю проверку содержимого EEPROM и его инициализацию в случае первого старта.
MALLOY2
если не указать __no_init программа при старте запишет туда 0, тоесть твоя переменная попадает в сегмент для данных он NEAR_Z (для еепром не помню), но суть в следующем если указать тип переменной __no_init в сегменте NEAR_N который не входит в *.hex, и не будет ошибки. Но ты в программе должен придусмотреть то что при первом запуске у тебя в переменной будет "мусор".
MALLOY2
У меня так работает, и будет работать даже если внешним программатором прошьеш EEPROM, точнее им и надо прошивать, я так делал. Эта команда заставляет компилятор разместить в сегменте который не инициализируется при загрузке следовательно и не попадает в Hex и не вызывает ошибок
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.