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 è 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.