Quanto codice può contenere un Arduino Uno

Quanto codice può contenere un Arduino Uno

I dispositivi a base di microcontrollori Arduino e All-Other Utilizzano la memoria per archiviare i dati. La memoria è una parte essenziale di qualsiasi sistema di calcolo, specialmente quando si tratta di sistemi e progettazione incorporati. L'allocazione della memoria di Arduino in modo dinamico migliora l'efficienza delle schede Arduino. La memoria può archiviare input e output provenienti da sensori e altri dispositivi collegati ad Arduino. Qui discuteremo di quanto codice Arduino Uno può archiviare nella sua memoria.

Arduino Uno Memory Allocation

I microcontroller utilizzati nelle schede Arduino sono specifici per le applicazioni di sistema incorporate. A differenza di un computer convenzionale normalmente utilizzato nelle nostre case e uffici, i microcontroller hanno compiti ben definiti per quello per cui hanno progettato. I microcontroller mancano di memoria cache e memoria virtuale basata su disco multistrato come usato nella CPU di casa. Normalmente durante la programmazione Arduino Uno, la memoria non è considerata la maggior parte del tempo fino a quando il codice non è bloccato a causa di bassi problemi di memoria. Per ottenere una soluzione dobbiamo prima capire il problema.

Le schede Arduino sono costituite principalmente da tre tipi di memoria.

  • Sram è dove Arduino crea variabili usate negli schizzi e le manipola di conseguenza.
  • Veloce La memoria è uno spazio di programma in cui scriviamo gli schizzi Arduino e memorizza il codice Arduino.
  • Eeprom è uno spazio che di solito memorizza dati a lungo termine presenti nel nostro schizzo.

SRAM è una memoria volatile i cui dati andranno persi una volta che Arduino è spento mentre Flash e Eeprom non sono volatili; Le loro informazioni persistono anche se rimuoviamo Arduino Power.

Ecco un breve confronto tra diverse schede Arduino Microcontroller Allocazione della memoria:

Arduino Processore Veloce Sram Eeprom
UNO, UNO Ethernet, Pro Mini, Nano 3.0 ATMEGA328 32kb 2kb 1kb
Leonardo, micro ATMEGA32U4 32kb 2.5kb 1kb
Mega ATMEGA256 256kb 8kb 4kb

Quanto codice può contenere Arduino Uno

Quanto codice Arduino Uno può archiviare? Risposta a questa domanda è che tutto dipende come programmiamo Arduino Uno. Arduino Uno ha tre tipi di memoria come discusso in precedenza, se superamo uno di questi il ​​nostro codice non compilerà. Arduino Uno ha 32kb Di Memoria flash che è sufficiente per scrivere migliaia di righe di codice.

Normalmente durante la scrittura del codice Arduino Sram è la memoria più preziosa sulle schede Arduino. Arduino Uno ha solo 2KB di SRAM che equivale a 2048 byte. Non è troppo programmare Arduino Uno per una vasta interfaccia utente e applicazioni grafiche. Arduino è abbastanza potente da controllare motori, sensori e piloti, ma non abbastanza per gestire un intero robot umano in esecuzione.

Per verificare la quantità di spazio che utilizza lo schizzo di Arduino, esegui un programma e cerca l'utilizzo della memoria nel produzione finestra.

Ad esempio, dopo aver compilato un semplice Blink a LED programma, abbiamo ottenuto l'output come mostrato di seguito. Qui il 2% di Veloce La memoria pari a 924 byte su 32256 byte (32kb) è utilizzata dal programma Blink scritto in Arduino IDE. Mentre 9 byte di SRAM su 2048 byte totali (2KB) vengono utilizzati nella creazione di variabili utilizzate nello schizzo LED BLINK.

Quando compiliamo il programma Arduino, l'IDE dirà quanto è grande il problema. Utilizzando alcune tecniche di ottimizzazione, possiamo aumentare la capacità di mantenimento del programma Arduino. L'immagine di seguito mostra un esempio di SRAM e memoria flash che supera i limiti di dati del microcontrollore.

Come ottimizzare la memoria di Arduino

Si noti che non c'è molta memoria Arduino Uno disponibile lì come SRAM è solo 2KB. Può essere facilmente utilizzato usando alcune stringhe inutili in uno schizzo. Per esempio:

Char Message [] = "LinuxHint.com ";

Dichiarazione come questi possano consumare un sacco di SRAM. Qui “Linuxhint.com " Metti 14 byte in sram ciascuno di questi char prende 1 byte, più 1 per il terminator '\ 0'.

Come ottimizzare il codice Arduino per un migliore utilizzo della memoria

L'ottimizzazione del codice Arduino è essenziale per progetti complessi, quindi ecco pochi modi per ottimizzare lo schizzo di Arduino.

Rimuovere il codice morto

Se il codice Arduino chiama più librerie, allora potrebbe esserci una possibilità che una parte del codice non sia in uso. Rimuovi tutte le librerie, le funzioni e le variabili inutilizzate. Se uno non è sicuro di loro, commentalo. Se il programma è ancora compilato e funziona bene, quella parte del codice non viene utilizzata da Arduino.

Le biblioteche consumano molto SRAM, come l'uso di una libreria SD-CARD può richiedere fino a 1KB di SRAM. Evita l'utilizzo inutile della biblioteca durante la scrittura di schizzi.

Scorri la stringa costante nella memoria flash

Le stringhe statiche possono essere una delle principali cause dei rifiuti di memoria Arduino. Per esempio:

Seriale.println ("LinuxHint.com ");

Le stringhe statiche come queste vengono copiate automaticamente in SRAM dalla memoria flash. Per evitare questo, usa F () macro funzione. Ciò impedirà a SRAM di chiamarlo direttamente e salvare la memoria. F () La funzione può essere applicata come segue:

Seriale.println (f ("LinuxHint.com "));

Usando la macro f () nella stringa sopra abbiamo salvato 14 byte di SRAM.

Tipo di dati corretto

Durante l'utilizzo di array di grandi dimensioni e tabelle di ricerca, utilizzare il tipo di dati in base alla necessità. Utilizzare il tipo di dati più piccolo in grado di adattarsi facilmente ai dati. Per esempio, int prenderà due byte mentre byte Ne prenderò solo uno. Allo stesso modo evita di usare il galleggiante quando hai un numero intero Prova a usare int. Questo salverà byte extra nello schizzo di Arduino che darà uno spazio extra complessivo per scrivere schizzi. Diversi tipi di tipi di dati e memoria che occupano in Arduino sono mostrati nella tabella seguente:

Tipo di dati Dimensione (byte) Intervallo di valori
Vuoto 0 nullo
bool/booleano 1 Vero falso
CHAR 1 -128 a +127
Carma non firmato 1 Da 0 a 255
Byte 1 Da 0 a 255
Int 2 -32.768 a 32.767
Insigned Int 2 Da 0 a 65.535
Parola 2 Da 0 a 65.535
Lungo 4 -2.147.483.648 a 2.147.483.647
senza segno a lungo 4 Da 0 a 4.294.967.295
Galleggiante 4 -3.4028235E+38 a 3.4028235E+38
Doppio 4 3.4028235E+38 a 3.4028235E+38
Corda - Array di caratteri

Conclusione

In questa guida, abbiamo coperto quanto codice può contenere Arduino Uno, inoltre abbiamo discusso di diversi parametri che portano a bassi problemi di memoria. L'allocazione della memoria dinamica utilizzando le funzioni Arduino può essere molto utile nella costruzione di progetti. Usando le tecniche menzionate si possono ottimizzare l'utilizzo della memoria di Arduino.