Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Собрал послений GCC6.3.0 для AVR8. Win32 Win64 Linux64
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
sigmaN
Значиццо имеем кучу улучшений по оптимизации, поддержку 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
Владивольт
Попробовал на своём проекте, уменьшение размера есть. Буду использовать и наблюдать. Спасибо за подвижничество.
Код
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
link-time optimization
sigmaN
Lолжен заметить, что LTO уменьшяет размер только в сочетании с опцией оптимизации -Os
На -O2 и -O3 может наблюдаться даже увеличение размера из-за более агрессивного инлайна. Пользуюсь пару дней, пока косяков не замечено. Доволен )
_Diman_
А можно его использовать вместо WinAvr? Посмотрел как запускается WinAvr там в переменную PATH прописаны пути
C:\WinAVR-20100110\bin;C:\WinAVR-20100110\utils\bin;
У Вас в архиве нет папки \utils\bin; Подскажите, как его запускать и подойдет ли makefile от WinAVR-20100110?
sigmaN
WinAVR это и есть сборка этого тулчайна. Возможно там чуть изменили пути, но я сомневаюсь.
В архиве предназначенном для AtmelStudio есть папка bin - это оно самое. Но отделять ее от всего нельзя. Т.е. для работы нужно всё дерево папок.
В обещм вы увидите подобие структуры папок и разберетесь при желании.

Цитата
makefile от WinAVR-20100110

makefile обрабатывает утилита make и она универсальна. Так что да, конечно же всё заработает. Главное чтоб мэйк нашел компилятор и линкер(т.е. вопрос пути решайте).
sigmaN
Качнул 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.
Но это не точно. Лично проверять я конечно-же не стал ))))
Genadi Zawidowski
Работает...
Кстати, не все используют из-под AtmelStudio7, я например голые Makefle из-под Microsoft visual studio 6.0 запускаю - так что make.exe не помешал бы в дистрибутиве.
Цитата
Там и мэйк имется и еще много всего полезного

со старыми сборками бывают проблемы с современными виндами, лучше все обовить. Короче, я за включеие всего полезного и в этот дистр. size, make...
sigmaN
Ну я уже понял что не все используют AtmelStudio 7, хотя не очень понял почему)) Как по мне - очень толковая IDE с подсветкой синтаксиса и всем всем всем что может пригодиться....

А что за size? Там вроде avr-size имеется в bin, это не оно?
Давайте в общем список того что вам нужно. Ну с make ясно. Что еще?
_Diman_
Спасибо, получилось. По размеру выигрыш заметный. Но почему то теперь .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.
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Genadi Zawidowski
rm, mkdir точно нужны... остальное на Ваш вкус, но лучше по максимуму, как в атмеловском варианте.
Цитата
avr-size имеется в bin, это не оно?

оно, все в порядке.

Цитата
хотя не очень понял почему

шестая и седьмая студии ушли в лес например потому, что не получается сделать легкое переключение целевого процессора (например, переключиться между atmega644pa @10MHz и atmega32a @8 MHz без залезания руками в единственный конфиг, как было в студии 4.19). Понятно, что в результате разные makefile генерируются, но на уровне среды основывающиеся на Микрософте версии не устроили (хотя навигация по коду и прочее конечно прелесть).
sigmaN
Цитата
Спасибо, получилось. По размеру выигрыш заметный. Но почему то теперь .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 давно заглох получается, да? И его до сих пор никто не форкнул?
Просто не хочется изобретать велосипед заново. Точно нет форка со свежими билдами? Я пока не нешел, но мало ли.
Genadi Zawidowski
Есть тут еще бинарники
https://sourceforge.net/projects/mobileches...hots%20(Win32)/
_Diman_
Цитата
При использовании LTO даже родная студия 7 не может отлаживать код. Может быть дело в этом.... Протеусом давно не пользовался, ничего не могу сказать...
LTO не использовал, с ним ошибку выдает "[ELF]Required attribute 49 of entry 2E not found".
У меня такой вопрос, elf генерирует компилятор или какие то утилиты, есть ли возможность подменить эти файлы из WinAVR-20100110 или avr8-gnu-toolchain-3.5.1.1671?
sigmaN
Цитата
У меня такой вопрос, 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????
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.