Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: GNU Tools for ARM Embedded Processors 4.8 - 2013q4-20131204
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
demiurg_spb
Вышел релиз.
https://launchpad.net/gcc-arm-embedded/+download
IgorKossak
Стахановцы!!! На неделю раньше графика выпустили.
demiurg_spb
Потестил на железе. Работает. В среднем оптимизирует на 4-8% лучше чем предыдущий релиз (если судить по размеру прошивки).
Есть косяк непонятного рода: keil крешится при попытке запустить отладку эльфа, сгенеренного gcc.
С прошлой версией этого не наблюдал.
federal
уж 4.8.2 месяц как использую
demiurg_spb
Цитата(federal @ Dec 23 2013, 19:38) *
уж 4.8.2 месяц как использую
А тут 4.8.3 с кучей багофиксов.
На ланчпаде представлены самые широкораспространённые тулчейны с целой армией юзеров-тестеров.
Поэтому они самые стабильные... ИМХО.
Harbour
Для cortex-m3/m4 4.8.1 были баги с -flto и довольно жестокие, интересно пофиксили их или нет ...
demiurg_spb
Цитата(Harbour @ Dec 24 2013, 12:14) *
Цитата
Features:
* All GCC 4.8 features, plus latest mainline features
- Cortex-R7 support
* Additional code size optimizations
- Don't expand multiply instruction for Thumb-1.
- Avoid unnecessary lr save instruction for Thumb-1.
* Newlib-nano: newlib branch optimized for code size
* Cortex-A profile multilib
* Link Time Optimization (LTO)
* A new compiler option -mslow-flash-data to minimize the literal load to
boost performance for some armv7-m targets.
* A new compiler option -mpic-data-is-text-relative to enable/disable
addressing data with PC relative.
* Avoid missing _sbrk issue when .specs is used.
* Support multiple RAM sessions in startup code.
* A GCC plugin to optimize Finite State Machine program.

Tests:
* Tested on a variety of Cortex-M0/M0+/M3/M4/A9 boards
* Tested on Qemu

Important bugs fixed in 4.8 2013q4 major release:
* Branch to symbol defined in linker script
http://sourceware.org/bugzilla/show_bug.cgi?id=15302
* GDB is upgraded to 7.6 to better support dwarf-3 and later standard
https://answers.launchpad.net/gcc-arm-embed...question/234131
https://bugs.launchpad.net/gcc-arm-embedded/+bug/1248981
* ICE when use high register as PIC base register for thumb-1 target

Known Changes and Issues:
* Unlike the previous releases, this release O2 optimization level doesn't
unroll loop. To tune the strategy to get better performance for your
case, please refer to unrolling related parameters in associated gcc manual.
* The gcc regression test case pr42575.c now fails due to suboptimal code
on 64-bit integer multiply caused by gcc new rtx cost model.
* This version of GCC still cannot handle volatile packed structure correctly.
Please avoid such usage in source code.
Harbour
Цитата
* This version of GCC still cannot handle volatile packed structure correctly.
Please avoid such usage in source code.


На эти грабли лично наступил в очередной раз пару недель назад. Уж лучше подождать 4.9 ... по ходу у них там какой-то кризис производственного жанра wink.gif
fatlortroll
Ещё с утра смотрел -- не было, а тут вот какая радость! Будем пробовать.
demiurg_spb
Rlease GCC ARM Embedded 4.8 update 1
+
http://sourceforge.net/projects/bleeding-edge/files/140405/
У bleeding-edge сборка немного кривоватая, spec файлы с ошибками (дважды записано в них одно и то же и, если пофиксить, то вроде нормально собирает).
scifi
Цитата(demiurg_spb @ Dec 23 2013, 13:41) *
Есть косяк непонятного рода: keil крешится при попытке запустить отладку эльфа, сгенеренного gcc.
С прошлой версией этого не наблюдал.

У меня та же история. Нет ли новостей на эту тему?
demiurg_spb
Цитата(scifi @ Apr 9 2014, 12:07) *
У меня та же история. Нет ли новостей на эту тему?

arm-none-eabi-gcc.EXE (GNU Tools for ARM Embedded Processors) 4.8.3 20140228 (release) [ARM/embedded-4_8-branch revision 208322]
Поведение то же самое.

Кстати, вы свежий кейл пробовали (у меня всё руки не доходят)?
scifi
Цитата(demiurg_spb @ Apr 9 2014, 12:57) *
Кстати, вы свежий кейл пробовали (у меня всё руки не доходят)?

Нет, не пробовал.
scifi
Update: если речь шла о кейл 5.0, то именно с ним и пробовал. Я думал, появилось что-то посвежее, посмотрел, но нет - он по-прежнему 5.0.
demiurg_spb
Совсем свеженький (сегодняшний gcc-arm-embedded-4.9.3):
https://launchpad.net/gcc-arm-embedded/4.9/4.9-2014-q4-major
Протестил:
cобирает шустренько и весьма оптимально: минус 500 байт на проекте в 30 килобайт.


Не совсем свеженький:
https://launchpad.net/gcc-arm-embedded/4.8/...-2014-q3-update
Aner
1) На чем, на каком коду, на каком проце сравнивалось? Чтобы понять откуда это 500 получилось.
2) Сравнивали с кейлом, иаром? На сколько больший код с gcc?
demiurg_spb
Цитата(Aner @ Dec 10 2014, 22:45) *
1) На чем, на каком коду, на каком проце сравнивалось? Чтобы понять откуда это 500 получилось.
2) Сравнивали с кейлом, иаром? На сколько больший код с gcc?

Причём тут кейл и иар?
Ветка о GNU'тых средствах разработки...

Cравнивал на одном из своих проектов под stm32f103.

Для особо любопытных детали:
arm-gcc-none-eabi-4.7.4 размер секции text 28340
arm-gcc-none-eabi-4.8.4 размер секции text 26444
arm-gcc-none-eabi-4.9.3 размер секции text 25932

Сравнивать с keil и iar не вижу смысла, т.к. уже давным давно с ними завязал ввиду отсутствия желания порить себе карму крякнутым софтом.
Да и на тот момент по моим замерам gcc был как минимум не хуже keil...
demiurg_spb
5 марта вышел очередной релиз arm-gcc-none-eabi-4.9.3: https://launchpad.net/gcc-arm-embedded/4.9/...-2015-q1-update
Либы и компилятор стали ещё более оптималены: минус 0,5КБ на проекте в 32КБ.
AHTOXA
Отлично, затестируем...
А что такое "small multiply support"? Это те кортексы M0/1, где нет умножения за 1 такт?
IgorKossak
Цитата(AHTOXA @ Apr 6 2015, 17:47) *
А что такое "small multiply support"? Это те кортексы M0/1, где нет умножения за 1 такт?

NXP это так объясняет.
AHTOXA
Ага, значит оно. Интересно, а ST тоже сэкономили на нормальном умножении?
... Посмотрел, по крайней мере у STM32L0xx, которыми я сейчас занимаюсь, есть "single-cycle multiplier".
alx2
Цитата(demiurg_spb @ Apr 6 2015, 19:16) *
5 марта вышел очередной релиз arm-gcc-none-eabi-4.9.3

На launchpad.net по приведенной ссылке смотрю ReleaseNotes. Там указано, что собрано из ветки http://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch/.
Открываю эту ветку и смотрю ChangeLog:
Код
2014-12-04  Tobias Burnus  <burnus@net-b.de>

    * configure.ac: Permit also ISL 0.14 with CLooG.
    * Makefile.def: Make more dependent on mpfr, mpc, isl, and cloog.
    * Makefile.in: Regenerate.
    * configure: Regenerate.

2014-10-30  Release Manager

    * GCC 4.9.2 released.

То есть это gcc-4.9.2 с косметическими изменениями от декабря прошлого года. Поправьте меня если я ошибаюсь...
На gcc.gnu.org до сих пор последним релизом числится 2.9.2, на официальном ftp и нескольких зеркалах, на которые я зашел, никакого 4.9.3 нет, только 4.9.2...
Откуда Вы вообще взяли, что был релиз 4.9.3?
demiurg_spb
Цитата(alx2 @ Apr 7 2015, 15:54) *
Откуда Вы вообще взяли, что был релиз 4.9.3?

arm-none-eabi-gcc -v
Код
Using built-in specs.
COLLECT_GCC=Z:\gcc\arm-gcc-none-eabi\bin\arm-none-eabi-gcc.exe
COLLECT_LTO_WRAPPER=z:/gcc/arm-gcc-none-eabi/bin/../lib/gcc/arm-none-eabi/4.9.3/lto-wrapper.exe
Target: arm-none-eabi
Configured with: /home/build/work/GCC-4-9-build/src/gcc/configure --build=i686-linux-gnu --host=i686-w64-mingw32 --target=arm-none-eabi --prefix=/home/build/work/GCC-4-9-build/install-mingw --libexecdir=/home/build/work/GCC-4-9-build/install-mingw/lib --infodir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-headers=yes --with-newlib --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-4-9-build/install-mingw/arm-none-eabi --with-libiconv-prefix=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-gmp=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpfr=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpc=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-isl=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-cloog=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-libelf=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,cortex-m7,armv7-r
Thread model: single
gcc version 4.9.3 20150303 (release) [ARM/embedded-4_9-branch revision 221220] (GNU Tools for ARM Embedded Processors)
scifi
Цитата(alx2 @ Apr 7 2015, 15:54) *
То есть это gcc-4.9.2 с косметическими изменениями от декабря прошлого года. Поправьте меня если я ошибаюсь...

Поправляю: см. историю ветки ARM/embedded-4_9-branch
Там много чего есть, причём подозреваю, что большая часть изменений кроется за "Sync with upstream 4.9 branch".
alx2
Цитата(scifi @ Apr 7 2015, 20:20) *
Поправляю: см. историю ветки ARM/embedded-4_9-branch
Там много чего есть, причём подозреваю, что большая часть изменений кроется за "Sync with upstream 4.9 branch".

Хм... Действительно. Спасибо за подсказку. Да, изменения не косметические.
Решил посмотреть содержимое ветки более детально.
Смотрю, что написано в gcc/BASE-VER: действительно, там стоит 4.9.3, аж с ноября прошлого года.
Смотрю, что написано в gcc/DEV-PHASE: prerelease.
Опять же, поправьте меня если я ошибаюсь, но из написанного выше следует, что релиза 4.9.3 еще не было. Почему у уважаемого demiurg_spb gcc пишет, что он release, я не знаю...
Ну и до кучи, здесь: https://gcc.gnu.org/gcc-4.9/index.html о релизе 4.9.3 тоже ничего нет. ..
scifi
Цитата(alx2 @ Apr 8 2015, 08:46) *
Смотрю, что написано в gcc/BASE-VER: действительно, там стоит 4.9.3, аж с ноября прошлого года.
Смотрю, что написано в gcc/DEV-PHASE: prerelease.
Опять же, поправьте меня если я ошибаюсь, но из написанного выше следует, что релиза 4.9.3 еще не было. Почему у уважаемого demiurg_spb gcc пишет, что он release, я не знаю...

Вы смотрите на объявления о релизах для основной ветки (trunk). Там релизы происходят шумно под звуки фанфар и аплодисменты.
Ветка ARM/embedded-4_9-branch живёт несколько отдельной жизнью, поэтому сабантуй по поводу изменения номера версии никто не устраивает.
Это моё ИМХО, если что.
AHTOXA
Цитата(demiurg_spb @ Apr 6 2015, 18:16) *
Либы и компилятор стали ещё более оптималены: минус 0,5КБ на проекте в 32КБ.

У меня на текущем проекте размер подрос почти на 2К: было 48860, стало 50660. Оптимизация -O2.
demiurg_spb
Цитата(AHTOXA @ Apr 8 2015, 11:22) *

Я -O3 использую и такие ключи для оптимизации:
Код
    CFLAGS += -flto
    CFLAGS += -fomit-frame-pointer
    CFLAGS += -falign-functions=16
    CFLAGS += -fgraphite
    CFLAGS += -funroll-loops
    CFLAGS += -fno-math-errno
    CFLAGS += -ffunction-sections
    CFLAGS += -fdata-sections

И такие ключи для линкера:
Код
    LDFLAGS += -nostartfiles
    LDFLAGS += -nodefaultlibs
    LDFLAGS += --specs=nano.specs

    ifeq ($(DEBUG_BUILD),1)
        LDFLAGS += -u _printf_float
    endif

    LDFLAGS += -Wl,--relax
    LDFLAGS += -Wl,--gc-section
    LDFLAGS += -Wl,--static
    LDFLAGS += -Wl,--start-group
    LDFLAGS += -lm -lc -lgcc -lnosys
    LDFLAGS += -Wl,--end-group
AHTOXA
C -O3 разница ещё больше:
было 55948, стало 59884.
Мои флаги:
Код
    CXXFLAGS    += -std=c++11
    CXXFLAGS    += -fno-exceptions -fno-rtti
    CXXFLAGS    += -ffunction-sections -fdata-sections
    CXXFLAGS    += -funsigned-bitfields -fshort-enums

(LTO у меня не работает, не видит вызовов функций из инлайн-ассемблера).

--
Посмотрел с -Os:
43388/43524.
Видимо, убрали какую-то проблемную оптимизацию. Вероятно, в плюсах.
scifi
Цитата(AHTOXA @ Apr 8 2015, 11:22) *
У меня на текущем проекте размер подрос почти на 2К: было 48860, стало 50660. Оптимизация -O2.

Так не честно. Размером надо мериться с оптимизацией -Os.
А если оптимизация на скорость, то надо скоростью мериться. Скажем, станет он в новой версии циклы сильнее разматывать, вот размер и подрастёт.
AHTOXA
Цитата(scifi @ Apr 8 2015, 13:36) *
Так не честно. Размером надо мериться с оптимизацией -Os.

Так я и не против того, что вырос размер. Наверняка стало быстрее. Или надёжнее. Или и то и тоsm.gif
(Для полноты картины добавил в предыдущий пост тест с -Os).
scifi
Вот мои результаты (-Os -flto):
4_7-2013q3-20130916: 171948
4_8-2014q3-20140805: 171844
4_9-2015q1-20150306: 171676
При этом половина размера - это .rodata (в основном содержимое веб-страниц).
swisst
подскажите, update (4.9-2015-q1) надо поверх major (4.9-2014-q4-major) ?

добавлю еще вопросик - где утилиту make брать под это дело под Win ? раньше вместе с mingw устанавливал, сейчас спрашиваю за альтернативу... - в принципе нашел свежий билд под Win здесь
mdmitry
Цитата(swisst @ May 6 2015, 15:19) *
подскажите, update (4.9-2015-q1) надо поверх major (4.9-2014-q4-major) ?

добавлю еще вопросик - где утилиту make брать под это дело под Win ? раньше вместе с mingw устанавливал, сейчас спрашиваю за альтернативу... - в принципе нашел свежий билд под Win здесь

Версии полные и независимые, можно ставить в разные каталоги.
В старых версиях для Win вместе с компиляторами от CodeSourcery шел и make (csmake)
swisst
Цитата(mdmitry @ May 6 2015, 16:07) *
Версии полные и независимые, можно ставить в разные каталоги.


не получилось у меня собрать со скачанным q1-update, а с мажор версией получается...буду разбираться

Цитата(mdmitry @ May 6 2015, 16:07) *
В старых версиях для Win вместе с компиляторами от CodeSourcery шел и make (csmake)


было дело. в принципе с make разобрался - скачал по ссылке выше
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.