Vi spiego a grandi linee come funziona il comando avr-size, che fa parte del pacchetto binutils-avr.
Esso serve a determinare, una volta prodotto lo sketch compilato che viene caricato nella memoria flash del micro, il consumo di memoria sia Flash che Ram. Ovviamente non potrà determinare mai la dimensione di un array creato dinamicamente perché non si può sapere a priori quanti elementi il codice andrà ad inserire (se ad esempio dipende da quante volte l'utente premerà un dato pulsantino, avr-size non può leggere nel pensiero dell'utente e sapere quanti click farà

).
Per usarlo, dovete compilare il vostro sketch premendo il pulsantino Compile, quello a forma di ">", contemporaneamente al tasto SHIFT, in modo che nella finestra di terminale dell'IDE in basso vediate la path di qual'è la cartella temporanea dove l'IDE sta lavorando.
Una volta che l'IDE vi dice "Done compiling", aprite un terminale in quella cartella e date avr-size nome_sketch.elf.
Vi verrà dato un riassunto della memoria usata dallo sketch. Per avere dati usabili dovete specificare il parametro -C, che serve a fornire un output già formattato con i dati in forma leggibile, ed il parametro --mcu=xxxx, che serve a specificare il micro target.
Facciamo un esempio. Usiamo il Blink.
Caricato nell'IDE, premo il tasto di compilazione col tasto shift ed ottengo nel terminale anche questo messaggio:
avr-objcopy -O ihex -R .eeprom /tmp/build8298356062385171079.tmp/Blink.cpp.elf /tmp/build8298356062385171079.tmp/Blink.cpp.hex
Ecco, quelle path indicano dove vengono creati i file temporanei. Adesso apriamo un terminale e spostiamoci in quella cartella:
cd /tmp/build8298356062385171079.tmp
Ora diamo il comando seguente (qui usiamo l'Atmega328):
avr-size -C --mcu=atmega328p Blink.cpp.elf
Ecco cosa risponde avr-size:
AVR Memory Usage
----------------
Device: atmega328p
Program: 990 bytes (3.0% Full)
(.text + .data + .bootloader)
Data: 9 bytes (0.4% Full)
(.data + .bss + .noinit)
Il programma occupa 990 byte (il 3% della Flash disponibile) mentre i dati occupano solo 9 byte.