Перейти к содержанию
    

Собрал послений GCC6.3.0 для AVR8. Win32 Win64 Linux64

Значиццо имеем кучу улучшений по оптимизации, поддержку 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 (начиная с расшифровки).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Lолжен заметить, что LTO уменьшяет размер только в сочетании с опцией оптимизации -Os

На -O2 и -O3 может наблюдаться даже увеличение размера из-за более агрессивного инлайна. Пользуюсь пару дней, пока косяков не замечено. Доволен )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно его использовать вместо WinAvr? Посмотрел как запускается WinAvr там в переменную PATH прописаны пути

C:\WinAVR-20100110\bin;C:\WinAVR-20100110\utils\bin;

У Вас в архиве нет папки \utils\bin; Подскажите, как его запускать и подойдет ли makefile от WinAVR-20100110?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

WinAVR это и есть сборка этого тулчайна. Возможно там чуть изменили пути, но я сомневаюсь.

В архиве предназначенном для AtmelStudio есть папка bin - это оно самое. Но отделять ее от всего нельзя. Т.е. для работы нужно всё дерево папок.

В обещм вы увидите подобие структуры папок и разберетесь при желании.

 

makefile от WinAVR-20100110

makefile обрабатывает утилита make и она универсальна. Так что да, конечно же всё заработает. Главное чтоб мэйк нашел компилятор и линкер(т.е. вопрос пути решайте).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Качнул 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.

Но это не точно. Лично проверять я конечно-же не стал ))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работает...

Кстати, не все используют из-под AtmelStudio7, я например голые Makefle из-под Microsoft visual studio 6.0 запускаю - так что make.exe не помешал бы в дистрибутиве.

Там и мэйк имется и еще много всего полезного

со старыми сборками бывают проблемы с современными виндами, лучше все обовить. Короче, я за включеие всего полезного и в этот дистр. size, make...

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

А что за size? Там вроде avr-size имеется в bin, это не оно?

Давайте в общем список того что вам нужно. Ну с make ясно. Что еще?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, получилось. По размеру выигрыш заметный. Но почему то теперь .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.

post-3160-1489266560_thumb.png

lcd1602.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

rm, mkdir точно нужны... остальное на Ваш вкус, но лучше по максимуму, как в атмеловском варианте.

avr-size имеется в bin, это не оно?

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

 

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

шестая и седьмая студии ушли в лес например потому, что не получается сделать легкое переключение целевого процессора (например, переключиться между atmega644pa @10MHz и atmega32a @8 MHz без залезания руками в единственный конфиг, как было в студии 4.19). Понятно, что в результате разные makefile генерируются, но на уровне среды основывающиеся на Микрософте версии не устроили (хотя навигация по коду и прочее конечно прелесть).

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, получилось. По размеру выигрыш заметный. Но почему то теперь .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 давно заглох получается, да? И его до сих пор никто не форкнул?

Просто не хочется изобретать велосипед заново. Точно нет форка со свежими билдами? Я пока не нешел, но мало ли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть тут еще бинарники

https://sourceforge.net/projects/mobileches...hots%20(Win32)/

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При использовании LTO даже родная студия 7 не может отлаживать код. Может быть дело в этом.... Протеусом давно не пользовался, ничего не могу сказать...
LTO не использовал, с ним ошибку выдает "[ELF]Required attribute 49 of entry 2E not found".

У меня такой вопрос, elf генерирует компилятор или какие то утилиты, есть ли возможность подменить эти файлы из WinAVR-20100110 или avr8-gnu-toolchain-3.5.1.1671?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня такой вопрос, 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????

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...