LeoLabs 0 12 июля, 2005 Опубликовано 12 июля, 2005 · Жалоба пишу следующее: __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 0 12 июля, 2005 Опубликовано 12 июля, 2005 · Жалоба Все делаешь так. Просто надо настроить выходной формат линкера. Например поставь Debug, а остальное почитай в этом топике Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 15 июля, 2005 Опубликовано 15 июля, 2005 · Жалоба можно гараздо проще не меняя формата __eeprom __no_init volatile unsigned char CPU_status; если так обьявиш не будет ни каких вопросов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maxim 0 15 июля, 2005 Опубликовано 15 июля, 2005 · Жалоба можно гараздо проще не меняя формата __eeprom __no_init volatile unsigned char CPU_status; если так обьявиш не будет ни каких вопросов. <{POST_SNAPBACK}> В Error[e133] говорится, что пересекаются адресные пространства EEPROM и FLASH, а формат intel-standard не может упаковать различные виды памяти в один выходной файл. По этому __no_init здесь не поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 15 июля, 2005 Опубликовано 15 июля, 2005 · Жалоба А ты попробуй. Ведь если не использовать __eeprom не возникает e133. При __no_init в сегмент XDATA тоже ничего не попадает и ошибки не будет. Единственное, это будет работать, если вы не шьете программатором начальные значение EEPROM. Я, например, всегда в код программы включаю проверку содержимого EEPROM и его инициализацию в случае первого старта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 15 июля, 2005 Опубликовано 15 июля, 2005 · Жалоба если не указать __no_init программа при старте запишет туда 0, тоесть твоя переменная попадает в сегмент для данных он NEAR_Z (для еепром не помню), но суть в следующем если указать тип переменной __no_init в сегменте NEAR_N который не входит в *.hex, и не будет ошибки. Но ты в программе должен придусмотреть то что при первом запуске у тебя в переменной будет "мусор". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 15 июля, 2005 Опубликовано 15 июля, 2005 · Жалоба У меня так работает, и будет работать даже если внешним программатором прошьеш EEPROM, точнее им и надо прошивать, я так делал. Эта команда заставляет компилятор разместить в сегменте который не инициализируется при загрузке следовательно и не попадает в Hex и не вызывает ошибок Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться