sigmaN 0 8 марта, 2017 Опубликовано 8 марта, 2017 · Жалоба Значиццо имеем кучу улучшений по оптимизации, поддержку C++14 и наконец то работающий LTO, который реально экономит байты. Сильно пока не тестировал, но на паре проектов при включении LTO байты реально экономились, что не может не радовать! Для включения LTO добавить -flto в опции компилятора И линкера! Состав сборки: GCC 6.3.0 https://gcc.gnu.org/gcc-6/changes.html OPTS_GCC=" --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --disable-libada --with-dwarf2 --disable-shared --enable-static " binutils 2.28 OPTS_BINUTILS=" --target=avr --disable-nls " avr-libc 2.0.0 built with default opts В архиве сборки Win32, Win64, Linux64(тестиорвалось в Ubuntu 16.10) и avr-libc отдельно! avr-toolchain6.3.tar.gz Вариант полностью готовый для внедрения в Atmel Studio 7, с порпатченным avr-size для корректного отображения размеров в процентах. README по установке внутри архива. Использована Win32 версия бинарников ибо не все сидят на Win64 avr8-gnu-toolchain(GCC6.3.0)_for_AtmelStudio7.zip P.S. Из коробки в последней Atmel Studio 7 используется GCC 4.9.2 датированный October 30, 2014 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vladivolt 0 9 марта, 2017 Опубликовано 9 марта, 2017 · Жалоба Попробовал на своём проекте, уменьшение размера есть. Буду использовать и наблюдать. Спасибо за подвижничество. avr-gcc.exe (AVR_8_bit_GNU_Toolchain_3.5.4_1709) 4.9.2 Program: 14876 bytes (11.3% Full) avr-gcc.exe (GCC) 6.3.0 Program: 14802 bytes (11.3% Full) -flto Program: 14176 bytes (10.8% Full) И поищу на досуге, что такое LTO (начиная с расшифровки). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 9 марта, 2017 Опубликовано 9 марта, 2017 · Жалоба link-time optimization Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 9 марта, 2017 Опубликовано 9 марта, 2017 · Жалоба Lолжен заметить, что LTO уменьшяет размер только в сочетании с опцией оптимизации -Os На -O2 и -O3 может наблюдаться даже увеличение размера из-за более агрессивного инлайна. Пользуюсь пару дней, пока косяков не замечено. Доволен ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Diman_ 0 10 марта, 2017 Опубликовано 10 марта, 2017 · Жалоба А можно его использовать вместо WinAvr? Посмотрел как запускается WinAvr там в переменную PATH прописаны пути C:\WinAVR-20100110\bin;C:\WinAVR-20100110\utils\bin; У Вас в архиве нет папки \utils\bin; Подскажите, как его запускать и подойдет ли makefile от WinAVR-20100110? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 10 марта, 2017 Опубликовано 10 марта, 2017 · Жалоба WinAVR это и есть сборка этого тулчайна. Возможно там чуть изменили пути, но я сомневаюсь. В архиве предназначенном для AtmelStudio есть папка bin - это оно самое. Но отделять ее от всего нельзя. Т.е. для работы нужно всё дерево папок. В обещм вы увидите подобие структуры папок и разберетесь при желании. makefile от WinAVR-20100110 makefile обрабатывает утилита make и она универсальна. Так что да, конечно же всё заработает. Главное чтоб мэйк нашел компилятор и линкер(т.е. вопрос пути решайте). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 11 марта, 2017 Опубликовано 11 марта, 2017 · Жалоба Качнул WinAVR-20100110. Там в папке util просто лежат разные утилиты, которые я не собирал за ненадобностю(make есть в AtmelStudio а остальное не надо) В общем распаковываете архив avr8-gnu-toolchain(GCC6.3.0)_for_AtmelStudio7.zip и подкладываете папку util из WinAVR ну и соответственно прописываете пути аналогичные C:\WinAVR-20100110\bin;C:\WinAVR-20100110\utils\bin; где первый bin это тот bin где лежит avr-gcc.exe а второй bin это ваши utils целиком скопированные из WinAVR. Там и мэйк имется и еще много всего полезного. После этого всё должно прекрасно работать! P.S. Но это не точно. Лично проверять я конечно-же не стал )))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 11 марта, 2017 Опубликовано 11 марта, 2017 (изменено) · Жалоба Работает... Кстати, не все используют из-под AtmelStudio7, я например голые Makefle из-под Microsoft visual studio 6.0 запускаю - так что make.exe не помешал бы в дистрибутиве. Там и мэйк имется и еще много всего полезного со старыми сборками бывают проблемы с современными виндами, лучше все обовить. Короче, я за включеие всего полезного и в этот дистр. size, make... Изменено 11 марта, 2017 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 11 марта, 2017 Опубликовано 11 марта, 2017 · Жалоба Ну я уже понял что не все используют AtmelStudio 7, хотя не очень понял почему)) Как по мне - очень толковая IDE с подсветкой синтаксиса и всем всем всем что может пригодиться.... А что за size? Там вроде avr-size имеется в bin, это не оно? Давайте в общем список того что вам нужно. Ну с make ясно. Что еще? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Diman_ 0 11 марта, 2017 Опубликовано 11 марта, 2017 · Жалоба Спасибо, получилось. По размеру выигрыш заметный. Но почему то теперь .elf перестал правильно видеться в 7ом протеусе. Пробовал через эту утилиту C:\WinAVR-20100110\bin\wish84.exe mfile.tcl ставить разные форматы отладки, но не помогло. Кстати с avr8-gnu-toolchain-3.5.1.1671 все нормально, скачал последний Atmel AVR 8-bit Toolchain 3.5.4 там также как на вашей сборке. Запускал их скопировав недостающее из WinAVR-20100110. lcd1602.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 11 марта, 2017 Опубликовано 11 марта, 2017 (изменено) · Жалоба rm, mkdir точно нужны... остальное на Ваш вкус, но лучше по максимуму, как в атмеловском варианте. avr-size имеется в bin, это не оно? оно, все в порядке. хотя не очень понял почему шестая и седьмая студии ушли в лес например потому, что не получается сделать легкое переключение целевого процессора (например, переключиться между atmega644pa @10MHz и atmega32a @8 MHz без залезания руками в единственный конфиг, как было в студии 4.19). Понятно, что в результате разные makefile генерируются, но на уровне среды основывающиеся на Микрософте версии не устроили (хотя навигация по коду и прочее конечно прелесть). Изменено 11 марта, 2017 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 12 марта, 2017 Опубликовано 12 марта, 2017 · Жалоба Спасибо, получилось. По размеру выигрыш заметный. Но почему то теперь .elf перестал правильно видеться в 7ом протеусе. При использовании LTO даже родная студия 7 не может отлаживать код. Может быть дело в этом.... Протеусом давно не пользовался, ничего не могу сказать... rm, mkdir точно нужны... остальное на Ваш вкус, но лучше по максимуму, как в атмеловском варианте. Посмотрю что предлагает скачать Atmel. Там оказывается есть отдельный вариант скачать toolchain для Windows. например, переключиться между atmega644pa @10MHz и atmega32a @8 MHz без залезания руками в единственный конфиг, как было в студии 4.19) Не знаю как там было раньше, но сейчас Project->Options->Device (или как-то так). Выбираете любой девайс. Далее редактируете дефайн F_CPU и вуаля. Т.е. руками править ничего не нужно для смены девайса. Буквально недавно менял девайс с XMega128A1 на Mega8A. А чтоб вручную не править F_CPU можете сделать #ifdef и переключать нужный F_CPU в зависимости от девайса. Как отловить выбранный девайс смотрите в avr/io.h Так а проект WinAVR давно заглох получается, да? И его до сих пор никто не форкнул? Просто не хочется изобретать велосипед заново. Точно нет форка со свежими билдами? Я пока не нешел, но мало ли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 12 марта, 2017 Опубликовано 12 марта, 2017 (изменено) · Жалоба Есть тут еще бинарники https://sourceforge.net/projects/mobileches...hots%20(Win32)/ Изменено 12 марта, 2017 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Diman_ 0 12 марта, 2017 Опубликовано 12 марта, 2017 · Жалоба При использовании LTO даже родная студия 7 не может отлаживать код. Может быть дело в этом.... Протеусом давно не пользовался, ничего не могу сказать... LTO не использовал, с ним ошибку выдает "[ELF]Required attribute 49 of entry 2E not found". У меня такой вопрос, elf генерирует компилятор или какие то утилиты, есть ли возможность подменить эти файлы из WinAVR-20100110 или avr8-gnu-toolchain-3.5.1.1671? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 12 марта, 2017 Опубликовано 12 марта, 2017 · Жалоба У меня такой вопрос, elf генерирует компилятор или какие то утилиты Компилятор конечно. Немного по парившись со сборкой coreutils я пришел к выводу, что для начала можно подложить в папку utils не старье из WinAVR-20100110 а более новые версии из C:\Program Files (x86)\Atmel\Studio\7.0\shellutils Дело в том, что собрать coreutils полностю можно только с CygWin... И я подумал, что для нас это будет слишком... со старыми сборками бывают проблемы с современными виндами, лучше все обовить. этих проблем у Atmel нет. У меня на Win10 x64 всё работает и версии там не на столько старые. В общем любители ручных мэйкфайлов могут качать сборочку winAVR-sigmaN1.zip Туда всходит всё то что в топике + utils из AtmelStudio7 Правда, там нет GDB, но кто им реально пользуется для AVR???? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться