Compilatore e librerie

Salve,
sto utilizzando Arduino Uno + RTC DS3231 (I2C) + OLED SH1106 (I2C) + pulsanti vari.

Con il seguente codice, praticamente solo per inizializzare gli oggetti

#include <U8x8lib.h>   // https://github.com/olikraus/u8g2
#include <DS3232RTC.h> // https://github.com/JChristensen/DS3232RTC

U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE);

void setup() {
  RTC.setAlarm(ALM1_MATCH_DATE, 0, 0, 0, 1);
  RTC.setAlarm(ALM2_MATCH_DATE, 0, 0, 0, 1);
  RTC.alarm(ALARM_1);
  RTC.alarm(ALARM_2);
  RTC.alarmInterrupt(ALARM_1, false);
  RTC.alarmInterrupt(ALARM_2, false);
  RTC.squareWave(SQWAVE_NONE);

  u8x8.begin();
  u8x8.clear();
}

void loop() {}

ottengo in compilazione che:

Lo sketch usa 5518 byte (17%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.

Prevedibile, visto che la U8x8lib, pur essendo () tra le più leggere in termini di memoria dinamica, è comunque un mattone.

Ora la questione è che compilando il mio codice, ottengo:

Lo sketch usa 32018 byte (99%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.

Sto cercando di ottimizzare, eliminando il superfluo, utilizzando font meno pesanti, etc, ma mi chiedevo se è possibile sapere quali librerie vengono effettivamente caricate in fase di compilazione.
La mia è solo una ipotesi, ma magari eliminando una qualche chiamata, mi risparmio qualcosa.
Non so bene come funziona il compilatore, ma immagino che se dichiaro qualcosa String, mi caricherà la relativa libreria, quindi controllando cosa carica, potrei cercare di escluderla.

Se ho detto ca***te frustatemi pure :frowning:

TIA
Federico

Nelle impostazioni dell'IDE hai messo il segno di spunta alle due voci che ti danno i dettagli sia della compilazione che dell'upload?

Se si, guardando i dettagli di compilazione hai già una buona indicazione di cosa ti compila ... ::slight_smile:

Guglielmo

gpb01:
Nelle impostazioni dell'IDE hai messo il segno di spunta alle due voci che ti danno i dettagli sia della compilazione che dell'upload?

oops, stasera verifico ::slight_smile:

Grazie
Federico

gpb01:
Se si, guardando i dettagli di compilazione hai già una buona indicazione di cosa ti compila ... ::slight_smile:

trovato, grazie :slight_smile:

infatti nella cartella temporanea ci sono le librerie precompilate :confused:

Federico

Un altra voce assolutamente da disattivare è quella che in inglese è chiamata "Aggressively cached compiled core" ...
... non so nella versione Italiana come l'abbiano tradotta :wink:

L'idea era buona, ma, all'atto pratico, spesso crea più problemi di quanti ne risolve ...

Guglielmo

gpb01:
Un altra voce assolutamente da disattivare è quella che in inglese è chiamata "Aggressively cached compiled core" ...

Trovato, "Core compilato con cache aggressiva"... uguale :slight_smile:

Federico

Per la cronaca, sono molto soddisfatto, sono riuscito ad ottenere questo:

Lo sketch usa 29292 byte (90%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.

Appena terminato, condivido il progetto, orologio con timer (da cucina), data/ora e timer configurabili

Federico