ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
840498
klen (14.05.2018 00:20 - 00:23, просмотров: 5548)
Свежак!на этот раз 9 версия GCC для cortex-m* arm-kgp-eabi-gcc хост linux64 http://www.klen.or …_64-...0513_PETUNIA.7z 0. как бы 9 версия GCC из транка... ктобы что не говорил но LTO работает надежнее. компиллер на моих проектах ни разу не упал, что раньше на 7 и 8 версии часто случалось чего новго я тут накрутил... 1. все тулсы собраны с оптимизацией LTO, и под CPU sandy bridge, вроде бы стало быстрее компилять линковать. 2. отдельные заведенные через mulilib arm-таргеты libc,libstdc++, итд (лежат arm-kgp-eabi/arm-kgp-eabi/lib/thumb/... arm-kgp-eabi/lib/gcc/arm-kgp-eabi/9.0.0/thumb... ) cortex-m3 ( линкуются ) cortex-m3 + Ofast cortex-m3 + Os cortex-m4 + hard_float cortex-m4 + hard_float + Ofast cortex-m4 + hard_float + Os cortex-m7 + hard_float_sp cortex-m7 + hard_float_sp + Ofast cortex-m7 + hard_float_sp + Os cortex-m7 + hard_float_dp cortex-m7 + hard_float_dp + Ofast cortex-m7 + hard_float_dp + Os 3. Все таргеты собраны с LTO секциями и готовы к этой оптимизации при линковке 3. для таргетов cortex-m4 + hard_float + *, cortex-m7 + hard_float_sp + *, cortex-m7 + hard_float_dp + * добавлена отмодифицированная до "базовый операнд - float" библиотека математических вычислений GSL ( почитать https://ru.wikiped …GNU_Scientific_Library ), базовый тип всех функций - float! 4. binutils собран с поддержкой плагинов, утилитки ar, nm, ranlib автоматом поднимают liblto-plugin.so ( arm-kgp-eabi/lib/bfd-plugins/liblto-plugin.so -> arm-kgp-eabi/libexec/gcc/arm-kgp-eabi/9.0.0/liblto-plugin.so ), это функционал необходим ar, nm, ranlib изготовилть "правильную" статическую либу с поддержкой LTO секций, а линкеру ее правильно прилинковать с LTO оптимизацией. советую начать эксперименты с компиляцие с ключами для компиляции (пример для cortex-m4): выжимаем скорость: -gdwarf-4 -g3 -gno-strict-dwarf -fvar-tracking-assignments -fverbose-asm -mfloat-abi=hard -mcpu=cortex-m4 -mtune=cortex-m4 -mfpu=fpv4-sp-d16 -Ofast -ffunction-sections -fdata-sections -fgraphite -funroll-loops -f -funroll-all-loops -fvariable-expansion-in-unroller выжимаем размер: -gdwarf-4 -g3 -gno-strict-dwarf -fvar-tracking-assignments -fverbose-asm -mfloat-abi=hard -mcpu=cortex-m4 -mtune=cortex-m4 -mfpu=fpv4-sp-d16 -Os -ffunction-sections -fdata-sections -fgraphite и для линковы то что выше плюс -fuse-linker-plugin -Wl,-gc-sections если все проканает, то можно попробовать добавить к ключам компиляции и линковки -flto или -flto -ffat-lto-objects - и пробывать LTO оптимизацию. у меня надежно линкуются все проекты и работают в железе. прошивка уменьшается в среднем на 30% и работает быстрее. если будут проблемы - телеграфируйте, поможем.