Verificare SRAM utilizzata

In allegato trovate un piccolo sketch che stampa alcune info sull'allocazione della SRAM del microcontrollore.

La memoria SRAM viene suddivisa in 5 pezzi:

  1. all'inizio della SRAM viene messa l'area .data, che contiene le variabili dichiarate nel programma
  2. dopo c'è l'area .bss/.init: essa contiene le variabili non inizializzate
  3. a seguire c'è l'HEAP, che contiene i dati per l'allocazione dinamica della memoria. L'HEAP cresce verso l'alto.
  4. dopo l'HEAP c'è un'area vuota che funge da "materasso"
  5. infine c'è lo STACK, collocato a partire dall'ultima locazione di memoria a crescere verso il basso, verso l'HEAP. Nello STACK ci vanno a finire non solo i punti di ritorno per i salti alle subroutine ma anche i registri di sistema durante le ISR nonché le variabili create localmente.

Sia lo STACK che l'HEAP si espandono nell'area materasso. Se queste 2 aree vengono a collidere sovrapponendosi, il micro crasha.
La memoria libera che lo sketch calcola è data dall'area compresa fra l'inizio dell'HEAP e l'inizio dello STACK.

Ovviamente potete inserire questo sketch in un vostro programma, ma anche infarcirlo di altre funzioni per vedere come i vari puntatori variano.

La funzione più importante è freeRam, pubblicata da JeeLabs, che può essere estrapolata per essere utilizzata in un proprio sketch.

Buonanotte :wink:

know_your_sram.ino (1.87 KB)