Сравнение компиляторов ARMCC, IAR и GCC

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
image

Я работаю над одним проектом, который с большим трудом вмещается в 64к памяти микроконтроллера. И подумалось мне, что возможно, пора взглянуть на разные компиляторы, чтобы выбрать какой более агрессивно может уменьшить размер программы.
Представляю вашему вниманию небольшое сравнение.


Для теста я сделал проект в Cube MX, который включает в себя USB_DEVICE и Mass Storage Class. Это довольно большие библиотеки для теста.
Получившийся main.c выглядит примерно так:

int main() 
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USB_DEVICE_Init();
}

Дефайн USBD_DEBUG_LEVEL установлен в 0, чтобы отладочные сообщения USB стека не требовали наличия printf

Подопытные компиляторы:
  • IAR EWARM 8.32.1
  • arm-none-eab-gcc 7-2018-q2-update (среда STM32 Cube IDE 1.3.0)
  • ARMCC v5.06 update 7 (среда Keil uVision 5.32)
  • ARMCC v6.14.1 (среда Keil uVision 5.32)


Настройки IAR:
  • Оптимизация по размеру
  • Run-time библиотека NORMAL
  • Без low level IO (отключен printf)
  • Включены оптимизации линкера: Inline small routines, merge duplicate sections


Настройки GCC:
  • Reduced runtime library --specs=nano.specs
  • Optimize for size -Os
  • Place functions in their own sections --ffunction-sections
  • Place data in their own sections --ffdata-sections
  • Discard unused sections -Wl, --gc-sections


Настройки armcc5
  • Use micro lib
  • Use cross module optimization
  • Optimization -O3
  • One ELF section per function --split_sections


Настройки armcc6
  • Use micro lib
  • Use cross module optimization
  • Optimization image size -Oz
  • One ELF section per function --split_sections


GCC armcc5 IAR armcc6
Размер прошивки 14036 13548 12997 12984


Как видно, armcc6 на самую малость лучше IAR. За ним идет armcc5 с отставанием на 4%, а gcc отстает от лидера на 8%.

Надо отметить, что опция KEIL «Use cross module optimization» Значительно увеличила время компиляции, но ни чуть не уменьшила размер кода.
Источник: https://habr.com/ru/post/527820/


Интересные статьи

Интересные статьи

Я давно знаком с Битрикс24, ещё дольше с 1С-Битрикс и, конечно же, неоднократно имел дела с интернет-магазинами которые работают на нём. Да, конечно это дорого, долго, местами неуклюже...
Я проработал в сфере IT около 25 лет, из которых 12 лет был в Японии, 5 лет в США и около 8 лет в Германии, где и тружусь на данный момент в качестве System Operations Engineer. Поскольку...
Существует огромное количество генераторов статических сайтов (Static Site Generator, SSG). Очень сложно принять решение о том, какой именно выбрать. Существует множество полезных статей,...
Но если для интернет-магазина, разработанного 3–4 года назад «современные» ошибки вполне простительны потому что перед разработчиками «в те далекие времена» не стояло таких задач, то в магазинах, сдел...
Как-то у нас исторически сложилось, что Менеджеры сидят в Битрикс КП, а Разработчики в Jira. Менеджеры привыкли ставить и решать задачи через КП, Разработчики — через Джиру.