Arduino ide увеличивает размер flash и sram.

Тема в разделе "Флудилка", создана пользователем Un_ka, 5 дек 2020.

Метки:
?

?

  1. Баг

    0 голосов
    0,0%
  2. Фича

    2 голосов
    100,0%
  1. Un_ka

    Un_ka Гуру

    Итак, что имеется:
    • Arduino IDE.
    • Папка с .ino файлом.
    • После компиляции код занимает энное количество flash и ОЗУ.
    • Если добавить в эту папку заголовочный .h и .cpp файл в котором подключена библиотека Arduino.h, то после компиляции hex-код будет занимать больше flash и ОЗУ, хотя заголовочный файл не подключается в ino файле.
    Вопрос чем это вызвано?
    Если надо могу предоставить архив с двумя папками.
     
  2. Asper Daffy

    Asper Daffy Иксперд

    Это никого не волнует. Компилируется ВСЁ, что лежит в папке. Если в С файле есть какие-то глобальные переменные и/или функции, которые lto побоится выбросить, то они раздуют код.
     
  3. parovoZZ

    parovoZZ Гуру

    Я на сях такого не замечал. Правда у меня оптимизация всегда на всю катушку. Только в дебаге даю продышаться компилятору, чтобы дебажить было проще. Сколько чего в дебаге занимает вообще пофигу, лишь бы в МК влезло)))
     
  4. AlexU

    AlexU Гуру

    Когда я был меленьким и использовал Arduino IDE, то в итоговый бинарник включалось только то, что нужно для работы прошивки -- все лишние функции (лишний код) выкидывался из прошивки. Поэтому надо смотреть с какими опциями компилятор собирает прошивку.
    Но скорее всего проблема связана с тем, что в новых файлах есть обработчики прерываний, которые добавляются в итоговую прошивку. Или реализации 'weak'-функций (например, serialEvent() или yield() ).
     
    parovoZZ нравится это.
  5. a1000

    a1000 Гуру

    Ну так возьмите полученный при компиляции HEX, дизассемблируйте и посмотрите, что там дибавляется.
     
  6. Un_ka

    Un_ka Гуру

    Спасибо за ответы! То есть хранить библиотеку в папке проекта это плохо?
     
    Последнее редактирование: 6 дек 2020
  7. AlexU

    AlexU Гуру

    Нельзя сказать, что плохо. Иногда так проще, поэтому библиотеки хранятся в каталоге проекта.

    UPD: неиспользуемые библиотеки всё-равно не влияют на размер итоговой прошивки (но только, если правильные ключики компилятору говорить).
     
  8. parovoZZ

    parovoZZ Гуру

    А что вы подразумеваете под словом библиотека? Мне казалось, что это некий набор файлов, который лежит в недрах IDE в виде объектных и заголовочных файлов. А то, что лежит в папке с проектом - это вовсе не библиотека, а набор с и н файлов для совместной компиляции с проектом.
     
  9. Igor68

    Igor68 Гуру

    Я так же мусорю код частенько(вынужден для отладки), но борюсь с этим ВОТ ЭТИМ:
    Код (C++):
    #if(_deb > 0)
    ...
    какой-то код
    ...
    #endif
    А потом в каком-нибудь например cohfig.h
    Код (C++):
    #ifndef _config_h_
    #define  _config_h_

    #define _deb    1     //условие для компиляции в режиме отладки

    #endif
    если надо компиляция с отладкой (#define _deb 1) или без (#define _deb 0)... соответственно и размер будет разный для разного.
    Вот если бы в библиотеках было что-то подобное, то и функции в них можно было бы выбирать исходя из потребностей. Ну это как вариант.