IgorKossak 0 14 июля, 2008 Опубликовано 14 июля, 2008 · Жалоба 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 5 15 июля, 2008 Опубликовано 15 июля, 2008 · Жалоба Multi-file compilation for even better code optimization Интересно, что именно он пытается оптимизировать? Ничего не пишут? Или своими наблюдениями не поделитесь? Improved Cortex-M3 optimization Он начал использовать регистры 8-12? Или еще нет? И еще вопрос - можно ли из него вменяемый релоцируемый эльф получить (как это было на 4.42)? Или все еще надо линкер от гнуся прикручивать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 15 июля, 2008 Опубликовано 15 июля, 2008 · Жалоба И еще вопрос - можно ли из него вменяемый релоцируемый эльф получить... Полагаю, что нет - это искусственное ограничение для не pro версий 5.x - не думаю, что в eval 5.20 убрали. Или все еще надо линкер от гнуся прикручивать? Соответственно гнусный линкер ничего не линкует в принципе, но IARовский псевдогнутый нормально линкует орпгинальные гнутые вещи. Feature: EWARM-EV Version: 15_WIN Будем пробовать.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 15 июля, 2008 Опубликовано 15 июля, 2008 · Жалоба Интересно, что именно он пытается оптимизировать? Ничего не пишут? Или своими наблюдениями не поделитесь? 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. Проще говоря, при компиляции каждого исходного файла в проекте получаются столько же обьектных файлов, в которых есть похожие куски, прологи\эпилоги, выделенные в подпрограммы фрагменты и т. д. и т. п. Мультифайловая компиляция позволяет получить такие куски в единственном экземпляре. Наблюдения: - в С работает, действительно результирующий код получается короче, приложение осталось работоспособно B) ; - в С++ НЕ РАБОТАЕТ если файл ioxxxxxxx.h включается прямо или косвенно более чем в одном исходнике. Наблюдения беглые и поверхностные, так что прошу извенить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 15 июля, 2008 Опубликовано 15 июля, 2008 · Жалоба Наблюдения: Для последнего 51 они тоже такую фичу добавили - тоже немножко работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 16 июля, 2008 Опубликовано 16 июля, 2008 · Жалоба В Multi-file compilation они мелкие функции подставляют как inline ( и в итоге самостоятельная функция может быть вообще выкинута) и доступ к переменным по смещению от индексного регистра лучше получается т.к. видно сразу много файлов. Покрайней мере для АВР так было когда только появилась эта фича. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 16 июля, 2008 Опубликовано 16 июля, 2008 · Жалоба В Multi-file compilation они мелкие функции подставляют как inline Ну не все так прямолинейно, хотя в каких-то случаях и это явно используется. Сейчас откомпилил 5.20 лабораторный проектик под LPC2148. При тупой максимальной оптимизации по размеру размер получившегося кода сопоставим с 5.11. Однако опимизация по производительнсти дала потрясающее увеличение обьема кода на 25%. При этом Multi-file compilation заметно уменьшила размер кода - превышение стало примерно на 15%. Сейчас нет времени экспериментировать - но поближе к субботе вдумчиво покопаюсь. Правда, на основной машине я 5.11 уже снес :) посему сравнение будет с 4.42... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 16 июля, 2008 Опубликовано 16 июля, 2008 · Жалоба Мои 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 срабатывает ватчдог :). Если снять флажек Discard Unused Publics драйвер UART начинает нормально рабюотать на FTP заходит через раз, HTTP вешеат проц, скорость обмена тоже не привышает 500 кБ/с. Беглый просмотр листингов не выявил ничего криминального, хотя я сильно не вникал небыло времени. У меня в проекте используются функции в RAM (__ramfunc) есть подозрение что от туда все глюки и тянутся. Также есть подозрения на обработчики преываний он там тоже чего то похоже наоптимизировал. Это предварительная инфа, на выходных попробую поглубже покопать и розабраться в чем дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 16 июля, 2008 Опубликовано 16 июля, 2008 · Жалоба Ну что, аллах воистину акбар ;) Для Cortex-M3 делает код по полной программе, с использованием всех регистров. Приятненько... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 16 июля, 2008 Опубликовано 16 июля, 2008 · Жалоба Ну что, аллах воистину акбар ;) Для Cortex-M3 делает код по полной программе, с использованием всех регистров. Приятненько... А прерывания может симулировать с сохранением\восстановлением контекста? Я уж не надеюсь на переход по нужному вектору. Или может скриптом можно как то обойтись? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 17 июля, 2008 Опубликовано 17 июля, 2008 · Жалоба Однако опимизация по производительнсти дала потрясающее увеличение обьема кода на 25%. А это было заметно еще и в 5.11 самое очевидное - раскрутка циклов по несколько итераций за раз, пока регистров хватит. В 4.xx такого не замечал. А balanced оптимизация очень похожа на ту что в 4.xx называлась speed. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 17 июля, 2008 Опубликовано 17 июля, 2008 · Жалоба раскрутка циклов по несколько итераций за раз Если стремает, снимите галочку Loop Unrolling ;) Кстати, я еще часто снимаю галку кластеризации. Часто ее проще выполнить в узких местах вручную, результат лучше, особенно когда компилятору мерещится частое использование статической переменной и он под указатель на это дело занимает целый регистр, который пригодился бы для совсем других целей с куда более лучшим результатом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krestnick 0 18 июля, 2008 Опубликовано 18 июля, 2008 · Жалоба Прерывая беседу о высоком, хочется спросить... Кто-нибудь отучал полный ИАР от усб-ключа? ИАРы (фул и евал) установливаю без сериалов и кейев, а затем патчю. Евал версия работает на 100%, а вот фул как-то непонятно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 18 июля, 2008 Опубликовано 18 июля, 2008 · Жалоба Кто-нибудь отучал.... Если кто-нибудь сделает Full версию 5.20 доступной, то можно посмотреть :) и полагаю получится, но без насилия... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeltrex 0 18 июля, 2008 Опубликовано 18 июля, 2008 · Жалоба Обещались реализовать поддержку для SAM9XE, пока в разделе \ARM\PowerPac\BoardSupport\Atmel\ не нахожу такого, а все остальное было доступно и раньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться