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

 
 
> IAR. Непонятное для меня поведение линкера., Как можно на выходе одновременно получить 3 файла - HEX, BIN, EEP ?
kv_addr
сообщение May 21 2006, 21:12
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Ситуация такова - создал проект, начал отрабатывать модули. В установках для Release на выходе установил для основного файла - "intel-standard". Кроме того указал создавать еще и дополнительный - "row-binary". Все вроде бы работало нормально, создавало HEX-файл с расширением a90 и двоичный файл с расширением bin. Так все было нормально до того момента, когда стало нужным задействовать в программе обращения к EEPROM и выводить файл его содержимого.

Короче, согласно мануалу для линкера создал xcl-файл. В хвосте дописал:
-y(CODE)
-Ointel-standard,(XDATA)=Test.eep

Запустил компиляцию, жду. После полуминуты ожидания принудительно обрубаю компиляцию и смотрю на результат: Test.a90 - как ему и положено, Test.eep - тоже нормальный создало, а вот Test.bin - родился размером за 3 Гб и намеревался расти дальше. В начале его - действительный бинарный код, а далее - толпа нулей, стремящаяся до бесконечности. ohmy.gif

Хорошо, в меню для линкера выключаю создание дополнительного файла. Все идет как по маслу, создаются два правильных Test.a90 иTest.eep.

Ладно, экспериментирую дальше, снова включаю создание дополнительного bin-файла, но в программе "глушу" все обращения к EEPROM. После компиляции получаются 3 правильных файла - a90, bin и eep. Естественно в EEPROM - 0 байт.

Вот и чешу репу, откуда берутся дрожжи, заставляющие непонятным образом линкер содавать дополнительный bin-файл с бесконечным шлейфом нулей.

Кто может что-либо подсказать на сей счет?

IAR AVR 4.12A
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kv_addr
сообщение May 22 2006, 09:42
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Может я не совсем верно был понят, но для того, чтобы убедиться в, скажем так, не совсем корректном поведении линкера, могу предложить любому попробовать произвести нижеописанную операцию.

Взять любой проект, где в программе есть обращения к EEPROM, указать линкеру, что ему нужно работать с конфигурационным файлом, в Output указать хотя бы ubrof, а в конфигурационный файл вставить следующие строки:

-Ointel-standard,(CODE)=$PROJ_DIR$\Release\Exe\Test.a90
-Ointel-standard,(XDATA)=$PROJ_DIR$\Release\Exe\Test.eep

Все пройдет нормально и сгенерируются 3 файла - .dbg, .a90 и .eep.

Потом добавить строку:

-Oraw-binary,(CODE)=$PROJ_DIR$\Release\Exe\Test.bin

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

Аналогичное произойдет, если указать в Output intel-standard а в конфигурационный файл сначала вставить строки:

-y(CODE)
-Ointel-standard,(XDATA)=$PROJ_DIR$\Release\Exe\Test.eep

Cгенерируются 2 файла - .a90 и .eep.

Добавить строку:

-Oraw-binary,(CODE)=$PROJ_DIR$\Release\Exe\Test.bin

и снова убедиться в вышеописанном.

Мало того, даже если не пользоваться дополнительным конфигурационным файлом, а использовать дефолтный, а в окне Linker/Extra Options поставит птицу на Use command line options и вставит в окно вышеуказанные строки, то произойдет все то же.

И только если заглушить в исходной программе обращения к EEPROM, тогда можно получить правильный бинарник, естественно, с пустым .eep файлом.

Советую все же самим убедиться в таком поведении линкера. IMHO, это есть глюк линкера.
IAR AVR v.4.12A.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kv_addr   IAR. Непонятное для меня поведение линкера.   May 21 2006, 21:12
- - kv_addr   Дальнейшие разборки поведения линкера привели к сл...   May 22 2006, 03:13
- - IgorKossak   Не заставляйте линкер делать то, что он не должен ...   May 22 2006, 07:16
|- - zltigo   Цитата(IgorKossak @ May 22 2006, 10:16) -...   May 22 2006, 08:07
|- - IgorKossak   Цитата(zltigo @ May 22 2006, 11:07) Цитат...   May 22 2006, 08:47
|- - zltigo   Цитата(IgorKossak @ May 22 2006, 11:47) Ч...   May 22 2006, 09:14
- - IgorKossak   Действительно глюк. Тогда воспользуйтесь обходным ...   May 22 2006, 10:06
- - kv_addr   Ну, вот, это как раз то, на что я хотел обратить в...   May 22 2006, 10:25
|- - IgorKossak   Цитата(kv_addr @ May 22 2006, 13:25) С mp...   May 22 2006, 11:04
- - kv_addr   Бинарник, размер которого меньше килобайта, досыпа...   May 22 2006, 11:26
- - Alechin   Что-то не получилось задать относительные пути (че...   Aug 21 2006, 14:42
|- - IgorKossak   Цитата(Alechin @ Aug 21 2006, 17:42) Что-...   Aug 21 2006, 14:56
- - Alechin   Понятно. Просто в одном из предыдущих постов увиде...   Aug 22 2006, 15:54
- - IgorKossak   Возвращаясь к теме формирования выходного файла в ...   Sep 11 2006, 08:44


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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 10:23
Рейтинг@Mail.ru


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