|
Ошибка при компиляции в IAR, Error[e133]: The output format intel-standard cannot handle multiple a |
|
|
|
May 31 2006, 06:23
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Здравствуйте. При компиляции в Release в IAR 4.12A такого вот текста: Код #include <ioavr.h> #include <inavr.h>
char i; __eeprom char x;
int main( void ) { i = x; return 0; } Получаю сообщение  : Цитата Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted Если компилировать в Debug, то все нормально. Помогите кто может  . ПС Файлы проекта прилагаю.
testiar2.rar ( 10.05 килобайт )
Кол-во скачиваний: 173
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
May 31 2006, 10:16
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Цитата(Sergio66 @ May 31 2006, 11:25)  В опциях проекта Options-> Linker-> Extra Options поставьте галочку "Use command line options" и в поле укажите строку -y(CODE) Поставил. Работает  . Также попробовал: Цитата -we133=i -Ointel-extended,(CODE)=%PROJ_NAME%.hex -Ointel-extended,(XDATA)=ee_%PROJ_NAME%.hex Тоже работает  . Правда непонятно почему если в программ еиспользовать Код __eeprom char x = 0x55; и второй вариант, то где искать прошивку ЕЕПРОМ-а. Получается только один файл с прошивкой ФЛЕШ-а  . Хелп ми.
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
May 31 2006, 10:55
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
 Чтото я торможу Такое ощущение, что команды создать файлы прошивок для ФЛЕШ и ЕЕПРОМ линкер просто игнорирует  . Привожу скриншоты. Мож кто что еще посоветует.
Остальные закладки по дефолту. После компиляции создается ОДин файл "testiar2.hex". Если убрать сторчку "-we133=i" то выпадает таже ошибка. Хелп
Сообщение отредактировал otrog - May 31 2006, 10:57
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
May 31 2006, 12:36
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Цитата(IgorKossak @ May 31 2006, 15:28)  В первом окне поставьте формат, иной нежели intel-extended (например, debug), во втором окне уберите строку подавления ошибки. Поставил "debug-intel-std", во втором окне убрал строку подавления ошибки. Выдает ошибку Цитата Для того чтобы получить два файла (один для кода , другой для EEPROM) в категории Linker на вкладке Extra Options установить флажок Use command line options и вписать в мемо следующие строки -y(CODE) -Ointel-standard,(XDATA)=xxxxx.eep где xxxxx.eep - файл прошивки для внешней SPI EEPROM Немогу найти файл "xxxxx.eep" Вобщем засада
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
May 31 2006, 12:56
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(otrog @ May 31 2006, 15:36)  Цитата(IgorKossak @ May 31 2006, 15:28)  В первом окне поставьте формат, иной нежели intel-extended (например, debug), во втором окне уберите строку подавления ошибки.
Поставил "debug-intel-std", во втором окне убрал строку подавления ошибки. Выдает ошибку Не думал, что будет так тяжко. Обьясняю подробнее. Линкер последовательно делает сначала задания из первого окна, затем из второго. В первом окне (независимо от содержимого второго окна) Вы заставляете линкер сгенерировать выходной файл (файлы) формата intel-hex (в данном случае не важно, extended или standard). Но этот формат не поддерживает более одного пространства памяти и в этом же окне нет никаких опций для вариантов. Поэтому я Вам привёл пример с форматом debug, которому всё равно какие у Вас пространства. Для того, чтобы изощряться с опциями и вариантами, существует второе окно, где Вы правильно указали и формат и пространства и расширения. Подавлять диагностику (предупреждения и ошибки) это всё равно, что делать вид, что всё хорошо, когда всё плохо. И напоследок. Формат intel-standard - для пространств памяти не более 64 кБайт и без указания стартовой точки. Формат intel-extended - для пространств, адресуемых 24- или 32-битной шиной адреса и с возможностью указать стартовую точку приложения.
|
|
|
|
|
May 31 2006, 14:31
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(prottoss @ May 31 2006, 19:30)  Для того чтобы получить два файла (один для кода , другой для EEPROM) в категории Linker на вкладке Extra Options установить флажок Use command line options и вписать в мемо следующие строки -y(CODE) -Ointel-standard,(XDATA)=xxxxx.eep где xxxxx.eep - файл прошивки для внешней SPI EEPROM Извиняюсь дико за неточность - скопировал тект из своего же комментария к исходнику, и не поправил строку! : "... где xxxxx.eep - файл прошивки для внешней SPI EEPROM ..." надо читать как "... где xxxxx.eep - файл прошивки EEPROM ..." Цитата(IgorKossak @ May 31 2006, 20:56)  И напоследок. Формат intel-standard - для пространств памяти не более 64 кБайт и без указания стартовой точки. Формат intel-extended - для пространств, адресуемых 24- или 32-битной шиной адреса и с возможностью указать стартовую точку приложения. Согласен, я был не точен, но ведь intel-extended так же включает несколько сегментов (допучим сегмент кода и сегмент данных), не так ли? И, кстати, как Вы переведеты эту строку на русский? "Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted" Я читаю примерно следующие: "Выходной формат intel-standard не имеет заголовка для нескольких сегментов... используйте варианты формата, чтобы указать искомые адресные простраства...."
--------------------
|
|
|
|
|
May 31 2006, 14:47
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(prottoss @ May 31 2006, 17:31)  ... но ведь intel-extended так же включает несколько сегментов (допучим сегмент кода и сегмент данных), не так ли? И, кстати, как Вы переведеты эту строку на русский? "Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted" Я читаю примерно следующие: "Выходной формат intel-standard не имеет заголовка для нескольких сегментов... используйте варианты формата, чтобы указать искомые адресные простраства...." Сегмент(ы) кода и\или сегмент(ы) данных, но ОДНОГО пространства! Это ЛИБО флэш, ЛИБО ЕЕПРОМ, ЛИБО ОЗУ, но никогда не смесь всего этого в одном выходном файле. В стандарте на формат описываются все команды, но среди них нет команды, идентифицирующей адресное пространство, как впрочем и сегмент. Кстати, более точный перевод приведённого Вами текста: "Выходной формат intel-standard не может поддерживать множественные адресные пространства ...". Ну и посудите сами. Флэш память начинается с 0, ЕЕПРОМ начинается с 0, ОЗУ по большому счёту тоже с 0. Ну и как это всё описать в intel-hex формате?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|