реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Ошибка при компиляции в IAR, Error[e133]: The output format intel-standard cannot handle multiple a
otrog
сообщение May 31 2006, 06:23
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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;
}

Получаю сообщение smile3046.gif :
Цитата
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, то все нормально.
Помогите кто можетhelp.gif.
ПС Файлы проекта прилагаю.Прикрепленный файл  testiar2.rar ( 10.05 килобайт ) Кол-во скачиваний: 173


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение May 31 2006, 06:50
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Дело в том, что стандартный интеловский формат не позволяет использовать два адресных пространства (в Вашем случае для FLASH и для EEPROM), сходите сюда, там рассказано, как решить проблему.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Sergio66
сообщение May 31 2006, 07:25
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



В опциях проекта Options-> Linker-> Extra Options поставьте галочку "Use command line options" и в поле укажите строку
-y(CODE)
И будет вам щщастя!
Go to the top of the page
 
+Quote Post
otrog
сообщение May 31 2006, 10:16
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(Sergio66 @ May 31 2006, 11:25) *
В опциях проекта Options-> Linker-> Extra Options поставьте галочку "Use command line options" и в поле укажите строку
-y(CODE)
Поставил. Работает biggrin.gif .

Также попробовал:
Цитата
-we133=i
-Ointel-extended,(CODE)=%PROJ_NAME%.hex
-Ointel-extended,(XDATA)=ee_%PROJ_NAME%.hex
Тоже работает biggrin.gif .

Правда непонятно почему если в программ еиспользовать
Код
__eeprom char x = 0x55;

и второй вариант, то где искать прошивку ЕЕПРОМ-а. Получается только один файл с прошивкой ФЛЕШ-а glare.gif .
Хелп ми.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
Igor26
сообщение May 31 2006, 10:27
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



-we133=i
-Ointel-extended,(CODE)=%PROJ_NAME%.hex
-Ointel-extended,(XDATA)=ee_%PROJ_NAME%.hex
и второй вариант, то где искать прошивку ЕЕПРОМ-а. Получается только один файл с прошивкой ФЛЕШ-а .
Хелп ми.

измените строку следующим образом:-Ointel-extended,(XDATA)=ee_%PROJ_NAME%.eep
Файл прошивки ЕЕПРОМ будет иметь расширение .eep
Go to the top of the page
 
+Quote Post
otrog
сообщение May 31 2006, 10:55
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



cranky.gif Чтото я торможу cranky.gif
Такое ощущение, что команды создать файлы прошивок для ФЛЕШ и ЕЕПРОМ линкер просто игнорирует wacko.gif .
Привожу скриншоты. Мож кто что еще посоветует.
Прикрепленное изображение
Прикрепленное изображение

Остальные закладки по дефолту.
После компиляции создается ОДин файл "testiar2.hex".
Если убрать сторчку "-we133=i" то выпадает таже ошибка.

Хелп help.gif

Сообщение отредактировал otrog - May 31 2006, 10:57


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 31 2006, 11:28
Сообщение #7


Шаман
******

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



В первом окне поставьте формат, иной нежели intel-extended (например, debug), во втором окне уберите строку подавления ошибки.
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 31 2006, 11:30
Сообщение #8


Гуру
******

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



Здравствуйте!



По поводу intel-standart и intel-extended. В последнем формате в выходном файле содержится и код для FLASH и код для EEPROM, т.е intel-extended формат поддерживает сегменты в файле для нескольких типов памяти, intel-standart формат поддерживает только один сегмент. Если Ваш программатор поддерживает файлы с несколкими сегментами, то можете пользоваться для компиляции выходного файла intel-extended форматом.



Для того чтобы получить два файла (один для кода , другой для EEPROM) в категории Linker на вкладке Extra Options установить флажок Use command line options
и вписать в мемо следующие строки
-y(CODE)
-Ointel-standard,(XDATA)=xxxxx.eep
где xxxxx.eep - файл прошивки для внешней SPI EEPROM



код будет скомпилирован в файл с форматом, который в укажете в категории Linker на вкладке Output или Extra Output. Файл xxxxx.eep будет скомпилирован в корневую папку проекта



Удачи!


--------------------
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 31 2006, 11:37
Сообщение #9


Шаман
******

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



Цитата(prottoss @ May 31 2006, 14:30) *
По поводу intel-standart и intel-extended. В последнем формате в выходном файле содержится и код для FLASH и код для EEPROM, т.е intel-extended формат поддерживает сегменты в файле для нескольких типов памяти, intel-standart формат поддерживает только один сегмент. Если Ваш программатор поддерживает файлы с несколкими сегментами, то можете пользоваться для компиляции выходного файла intel-extended форматом.

Это не так!
Чтобы в этом убедиться, прилагаю стандарт.
Прикрепленные файлы
Прикрепленный файл  intelhex.pdf ( 19.84 килобайт ) Кол-во скачиваний: 76
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 31 2006, 12:10
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(IgorKossak @ May 31 2006, 14:37) *
Чтобы в этом убедиться, прилагаю стандарт.

Ну стандарт на "полный" формат. А базовый Интеловский это действительно только
записи 00 и 01 - когда-то 64K хватало :-) Потом пошли навороты, сначала сегменты а потом и линейные.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
otrog
сообщение May 31 2006, 12:36
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(IgorKossak @ May 31 2006, 15:28) *
В первом окне поставьте формат, иной нежели intel-extended (например, debug), во втором окне уберите строку подавления ошибки.

Поставил "debug-intel-std", во втором окне убрал строку подавления ошибки.
Выдает ошибку sad.gif
Цитата
Для того чтобы получить два файла (один для кода , другой для EEPROM) в категории Linker на вкладке Extra Options установить флажок Use command line options
и вписать в мемо следующие строки
-y(CODE)
-Ointel-standard,(XDATA)=xxxxx.eep
где xxxxx.eep - файл прошивки для внешней SPI EEPROM

Немогу найти файл "xxxxx.eep" sad.gif

Вобщем засада wacko.gif


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 31 2006, 12:56
Сообщение #12


Шаман
******

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



Цитата(otrog @ May 31 2006, 15:36) *
Цитата(IgorKossak @ May 31 2006, 15:28) *

В первом окне поставьте формат, иной нежели intel-extended (например, debug), во втором окне уберите строку подавления ошибки.

Поставил "debug-intel-std", во втором окне убрал строку подавления ошибки.
Выдает ошибку sad.gif

Не думал, что будет так тяжко.
Обьясняю подробнее.
Линкер последовательно делает сначала задания из первого окна, затем из второго.
В первом окне (независимо от содержимого второго окна) Вы заставляете линкер сгенерировать выходной файл (файлы) формата intel-hex (в данном случае не важно, extended или standard). Но этот формат не поддерживает более одного пространства памяти и в этом же окне нет никаких опций для вариантов. Поэтому я Вам привёл пример с форматом debug, которому всё равно какие у Вас пространства.

Для того, чтобы изощряться с опциями и вариантами, существует второе окно, где Вы правильно указали и формат и пространства и расширения.

Подавлять диагностику (предупреждения и ошибки) это всё равно, что делать вид, что всё хорошо, когда всё плохо.

И напоследок.
Формат intel-standard - для пространств памяти не более 64 кБайт и без указания стартовой точки.
Формат intel-extended - для пространств, адресуемых 24- или 32-битной шиной адреса и с возможностью указать стартовую точку приложения.
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 31 2006, 14:31
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 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 не имеет заголовка для нескольких сегментов... используйте варианты формата, чтобы указать искомые адресные простраства...."


--------------------
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 31 2006, 14:47
Сообщение #14


Шаман
******

Группа: Модераторы
Сообщений: 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 формате?
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 31 2006, 14:58
Сообщение #15


Гуру
******

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



Цитата(IgorKossak @ May 31 2006, 22:47) *
Кстати, более точный перевод приведённого Вами текста: "Выходной формат intel-standard не может поддерживать множественные адресные пространства ...".
Тогда что Вы подразумевает е под термином "адресное пространство" и "множественные адресные пространства"


--------------------
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01701 секунд с 7
ELECTRONIX ©2004-2016