Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: EWARM 5.20
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
IgorKossak
Highlights in version 5.20
Multi-file compilation for even better code optimization
VFP support
Improved Cortex-M3 optimization
Cortex-M3 SWV/SWO debugger support
Compiler speed optimizations
Faster flash loader
Support for unlimited breakpoint in flash via J-Link (optional license needed)
Linking with references to other link images
J-Link control panel

Feature: EWARM-EV Version: 15_WIN
Rst7
Цитата
Multi-file compilation for even better code optimization


Интересно, что именно он пытается оптимизировать? Ничего не пишут? Или своими наблюдениями не поделитесь?

Цитата
Improved Cortex-M3 optimization


Он начал использовать регистры 8-12? Или еще нет?

И еще вопрос - можно ли из него вменяемый релоцируемый эльф получить (как это было на 4.42)? Или все еще надо линкер от гнуся прикручивать?
zltigo
Цитата(Rst7 @ Jul 15 2008, 18:11) *
И еще вопрос - можно ли из него вменяемый релоцируемый эльф получить...

Полагаю, что нет - это искусственное ограничение для не pro версий 5.x - не думаю, что в eval 5.20 убрали.
Цитата
Или все еще надо линкер от гнуся прикручивать?

Соответственно гнусный линкер ничего не линкует в принципе, но IARовский псевдогнутый нормально линкует орпгинальные гнутые вещи.


Цитата(IgorKossak @ Jul 14 2008, 13:02) *
Feature: EWARM-EV Version: 15_WIN

Будем пробовать....
IgorKossak
Цитата(Rst7 @ Jul 15 2008, 19:11) *
Интересно, что именно он пытается оптимизировать? Ничего не пишут? Или своими наблюдениями не поделитесь?

Цитата
Multi-file compilation units
In addition to applying different optimizations to different source files or even functions,
you can also decide what a compilation unit consists of—one or several source code
files.
By default, a compilation unit consists of one source file, but it is also possible to make
several source files in a compilation unit by using multi-file compilation. The advantage
is that interprocedural optimizations such as inlining and cross jump have more source
code to work on. Ideally, the whole application should be compiled as one compilation
unit. However, for large applications this is not practical because of resource restrictions
on the host computer.

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

Наблюдения:
- в С работает, действительно результирующий код получается короче, приложение осталось работоспособно cool.gif ;
- в С++ НЕ РАБОТАЕТ если файл ioxxxxxxx.h включается прямо или косвенно более чем в одном исходнике.
Наблюдения беглые и поверхностные, так что прошу извенить.
zltigo
Цитата(IgorKossak @ Jul 15 2008, 22:06) *
Наблюдения:

Для последнего 51 они тоже такую фичу добавили - тоже немножко работает.
KRS
В Multi-file compilation они мелкие функции подставляют как inline ( и в итоге самостоятельная функция может быть вообще выкинута) и доступ к переменным по смещению от индексного регистра лучше получается т.к. видно сразу много файлов. Покрайней мере для АВР так было когда только появилась эта фича.
zltigo
Цитата(KRS @ Jul 16 2008, 08:10) *
В Multi-file compilation они мелкие функции подставляют как inline

Ну не все так прямолинейно, хотя в каких-то случаях и это явно используется.
Сейчас откомпилил 5.20 лабораторный проектик под LPC2148. При тупой максимальной оптимизации по размеру размер получившегося кода сопоставим с 5.11. Однако опимизация по производительнсти дала потрясающее увеличение обьема кода на 25%. При этом Multi-file compilation заметно уменьшила размер кода - превышение стало примерно на 15%. Сейчас нет времени экспериментировать - но поближе к субботе вдумчиво покопаюсь. Правда, на основной машине я 5.11 уже снес smile.gif посему сравнение будет с 4.42...
MALLOY2
Мои 5 копеек в тему, произвел тестирование своего проекта на версии 5.20.
Краткое описание проекта.

Проц STR912FA, к нему подключено через внешнюю шину 4 DSP TMS320VC5502. STR собирает данне с ДСП и передает в локалку, поток приемущественно с девайса в комп, от компа токо всякие команды. Устройство работает без ОС. Стек LWIP 1.2.0. К устройству также подключен GSM модем. Имеется WEB сервер, FTP Сервер и Telnet.
В DSP находится специальная программа для тестирования пропускной способности девайса.
Ее то я и измерял.

Данные тестирования.
IAR 5.11

Полная оптимизация по скорости.

90 809 bytes of readonly code memory
9 520 bytes of readwrite code memory
30 861 bytes of readonly data memory
87 247 bytes of readwrite data memory

Пропускная скорость девайса 2240 кБ/с

Полная оптимизация по размеру.

81 813 bytes of readonly code memory
9 176 bytes of readwrite code memory
30 519 bytes of readonly data memory
87 247 bytes of readwrite data memory

Пропускная скорость девайса 2020 кБ/с


Полная сбалансированная оптимизация

84 261 bytes of readonly code memory
9 476 bytes of readwrite code memory
30 819 bytes of readonly data memory
87 247 bytes of readwrite data memory

Пропускная скорость девайса 2170 кБ/с


Iar 5.20 (Обычная компиляция)

Полная оптимизация по скорости.

89 504 bytes of readonly code memory
9 564 bytes of readwrite code memory
30 980 bytes of readonly data memory
87 246 bytes of readwrite data memory

Пропускная скорость девайса 2490 кБ/с

Полная оптимизация по размеру.

81 121 bytes of readonly code memory
9 256 bytes of readwrite code memory
30 667 bytes of readonly data memory
87 246 bytes of readwrite data memory

Пропускная скорость девайса 2050 кБ/c

Полная сбалансированная оптимизация

83 409 bytes of readonly code memory
9 468 bytes of readwrite code memory
30 887 bytes of readonly data memory
87 246 bytes of readwrite data memory

Пропускная скорость девайса 2360 кБ/с



Iar 5.20 ( Multi-file compilation ) - ДЕВАЙС ГЛЮЧИТ НЕ ПОДЕТСКИ ...

Выбор типа компиляции (скорость, размер...), а также ихний уровень главную суть проблемы не решают.
При установленом флажке Discard Unused Publics драйвер UART перестает работать на консоль сыпится муссор, при этом обмен с DSP работает, скорость по сети примерно 500 кБ/с выше не подымается, при попытке зайти на FTP или HTTP срабатывает ватчдог smile.gif. Если снять флажек Discard Unused Publics драйвер UART начинает нормально рабюотать на FTP заходит через раз, HTTP вешеат проц, скорость обмена тоже не привышает 500 кБ/с.

Беглый просмотр листингов не выявил ничего криминального, хотя я сильно не вникал небыло времени.

У меня в проекте используются функции в RAM (__ramfunc) есть подозрение что от туда все глюки и тянутся. Также есть подозрения на обработчики преываний он там тоже чего то похоже наоптимизировал.

Это предварительная инфа, на выходных попробую поглубже покопать и розабраться в чем дело.
Rst7
Ну что, аллах воистину акбар wink.gif Для Cortex-M3 делает код по полной программе, с использованием всех регистров. Приятненько...
IgorKossak
Цитата(Rst7 @ Jul 16 2008, 16:06) *
Ну что, аллах воистину акбар wink.gif Для Cortex-M3 делает код по полной программе, с использованием всех регистров. Приятненько...

А прерывания может симулировать с сохранением\восстановлением контекста? Я уж не надеюсь на переход по нужному вектору. Или может скриптом можно как то обойтись?
KRS
Цитата(zltigo @ Jul 16 2008, 12:37) *
Однако опимизация по производительнсти дала потрясающее увеличение обьема кода на 25%.

А это было заметно еще и в 5.11 самое очевидное - раскрутка циклов по несколько итераций за раз, пока регистров хватит. В 4.xx такого не замечал. А balanced оптимизация очень похожа на ту что в 4.xx называлась speed.
Rst7
Цитата
раскрутка циклов по несколько итераций за раз


Если стремает, снимите галочку Loop Unrolling wink.gif



Кстати, я еще часто снимаю галку кластеризации. Часто ее проще выполнить в узких местах вручную, результат лучше, особенно когда компилятору мерещится частое использование статической переменной и он под указатель на это дело занимает целый регистр, который пригодился бы для совсем других целей с куда более лучшим результатом.
маша
Прерывая беседу о высоком, хочется спросить... Кто-нибудь отучал полный ИАР от усб-ключа? ИАРы (фул и евал) установливаю без сериалов и кейев, а затем патчю. Евал версия работает на 100%, а вот фул как-то непонятно...
zltigo
Цитата(маша @ Jul 18 2008, 06:17) *
Кто-нибудь отучал....

Если кто-нибудь сделает Full версию 5.20 доступной, то можно посмотреть smile.gif и полагаю получится, но без насилия...
Zeltrex
Обещались реализовать поддержку для SAM9XE, пока в разделе \ARM\PowerPac\BoardSupport\Atmel\ не нахожу такого, а все остальное было доступно и раньше.
zltigo
Цитата(Zeltrex @ Jul 18 2008, 11:53) *
..для SAM9XE

А причем здесь PowerPack-овские приблуды? Хидеры в новом появились - пользуйтесь, если вдруг сами еще не набросали.
Zeltrex
Я же говорю, супорт файлы у меня были и до. Вот хотел воспользоватся готовеньким - ОС на этом барахле разбирать. Но видать не судьба.
wangan
Раз вышел поделитесь в uploade наблюдаю тока 511
zhilik
Поставил себе IAR 5.20 ARM 30-дневную версию.
Контроллер - LM3S8962 на ядре Cortex-M3.
Пытаюсь отлаживать программу MT-Link'ом V5 с Jlink v3.90.
Через раз у меня зависает отладчик на окне "Programming Flash".
Работать не возможно, т.к. каждый второй запуск отладчика приводит к этому.
Пробовал несколько версий JLink'а, результат один и тот же.
Ни у кого такого нет, и что с этим делать?
zltigo
Цитата(zhilik @ Aug 20 2008, 15:44) *
Ни у кого такого нет, и что с этим делать?

Попробуйте оценить качество работы родного J-Flash и по нему сделать настройки уже в IARе
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.