Arduino- und All-andere Mikrocontroller-basierte Geräte verwenden Speicher, um Daten zu speichern. Speicher ist ein wesentlicher Bestandteil eines Computersystems, insbesondere wenn es um eingebettete Systeme und Designs geht. Das Zuweisen von Arduino -Speicher auf dynamische Weise verbessert die Effizienz von Arduino -Boards. Speicher kann Eingänge und Ausgänge speichern, die von Sensoren und anderen an Arduino angeschlossenen Geräten kommen. Hier werden wir diskutieren, wie viel Code Arduino Uno in seinem Speicher speichern kann.
Arduino Uno -Speicherzuweisung
In Arduino -Boards verwendete Mikrocontroller sind spezifisch für eingebettete Systemanwendungen. Im Gegensatz zu einem herkömmlichen Computer, der normalerweise in unseren Häusern und Büros verwendet wird, haben Mikrocontroller gut definierte Aufgaben für das, wofür sie entworfen wurden. Mikrocontroller fehlen mehrschichtiger Zwischenspeicher und diskonter virtueller Speicher, wie in der Home CPU verwendet. Normalerweise wird beim Programmieren von Arduino Uno das Gedächtnis die meiste Zeit nicht berücksichtigt, bis der Code aufgrund niedriger Speicherprobleme steckt. Um eine Lösung zu erhalten, müssen wir zuerst das Problem verstehen.
Arduino Boards bestehen hauptsächlich aus drei Arten von Speicher.
SRAM ist ein flüchtiger Speicher, dessen Daten verloren gehen, sobald Arduino abgeschaltet ist, während Flash und EEPROM nicht flüchtig sind. Ihre Informationen bleiben bestehen, selbst wenn wir Arduino -Strom entfernen.
Hier finden Sie einen kurzen Vergleich verschiedener Arduino Boards Microcontrollers -Speicherzuweisung:
Arduino | Prozessor | Blinken | Sram | Eeprom |
UNO, UNO Ethernet, Pro Mini, Nano 3.0 | Atmega328 | 32 KB | 2KB | 1KB |
Leonardo, Micro | ATMEGA32U4 | 32 KB | 2.5 KB | 1KB |
Mega | ATMEGA256 | 256 KB | 8KB | 4KB |
Wie viel Code Arduino Uno kann halten
Wie viel Code Arduino Uno kann speichern? Antwort auf diese Frage ist, dass alles darauf hängt, wie wir Arduino uno programmieren. Arduino Uno hat drei Arten von Speicher, wie zuvor erläutert. Wenn wir einen davon überschreiten, wird unser Code nicht kompilieren. Arduino uno hat 32 KB von Flash-Speicher Das reicht aus, um Tausende von Codezeilen zu schreiben.
Normalerweise beim Schreiben von Arduino -Code Sram ist die wertvollste Erinnerung an Arduino -Boards. Arduino Uno hat nur 2 KB SRAM, was 2048 Bytes entspricht. Das ist nicht zu viel, um Arduino Uno für umfangreiche Benutzeroberflächen und grafische Anwendungen zu programmieren. Arduino ist leistungsfähig genug, um Motoren, Sensoren und Treiber zu kontrollieren, aber nicht genug, um einen ganzen laufenden menschlichen Roboter zu bewältigen.
Um zu überprüfen, wie viel Platz Arduino Sketch mithilfe von Arduino -Skizze ist, führen Sie ein Programm aus und suchen Sie nach Speicherverbrauch in der Ausgang Fenster.
Zum Beispiel nach dem Zusammenstellen eines einfachen LED Blink Programm haben wir die Ausgabe wie unten gezeigt erhalten. Hier 2% von Blinken Speicher von 924 Bytes von 32256 Bytes (32 KB) wird vom Blink -Programm verwendet, das in Arduino IDE geschrieben wurde. Während 9 Bytes SRAM von insgesamt 2048 Bytes (2 KB) zum Erstellen von Variablen verwendet werden, die in der Blink -LED -Skizze verwendet werden.
Wenn wir das Arduino -Programm kompilieren, wird die IDE erkennen, wie groß das Problem ist. Mit einigen Optimierungstechniken können wir die Haltekapazität des Arduino -Programms erhöhen. Das folgende Bild zeigt ein Beispiel für SRAM und Flash -Speicher, das Mikrocontroller -Datengrenzen überschreitet.
So optimieren Sie das Arduino -Speicher
Beachten Sie, dass dort nicht viel Arduino uno -Speicher verfügbar ist, wie z. B. SRAM nur 2KB ist. Es kann problemlos mit einigen nutzlosen Zeichenfolgen in einer Skizze verbraucht werden. Zum Beispiel:
char message [] = "LinuxHint.com ";
Eine solche Erklärung kann viel SRAM auffressen. Hier „LinuxHint.com ” Steckt 14 Bytes in SRAM. Jedes dieser Zeichen nimmt 1 Byte und 1 für den Terminator ein '\ 0' '.
So optimieren Sie den Arduino -Code für eine bessere Verwendung des Speichers
Die Optimierung des Arduino -Code ist für komplexe Projekte von wesentlicher Bedeutung.
Dead Code entfernen
Wenn Arduino Code mehrere Bibliotheken aufruft, besteht möglicherweise eine Chance, dass ein Teil des Codes nicht verwendet wird. Entfernen Sie alle nicht verwendeten Bibliotheken, Funktionen und Variablen. Wenn man sich nicht sicher ist, kommentieren Sie es aus. Wenn das Programm immer noch kompiliert und gut funktioniert, wird dieser Teil des Codes nicht von Arduino verwendet.
Bibliotheken verbrauchen viel SRAM, z. B. die Verwendung einer SD-Card-Bibliothek kann bis zu 1 KB SRAM dauern. Vermeiden Sie unnötige Bibliotheksnutzung beim Schreiben von Skizzen.
Speichern Sie die konstante Zeichenfolge im Flash -Speicher
Statische Saiten können eine der Hauptursachen für Arduino -Gedächtnisabfälle sein. Zum Beispiel:
Serie.println ("LinuxHint.com ");
Statische Zeichenfolgen wie diese werden automatisch in SRAM aus dem Flash -Speicher kopiert. Um dies zu vermeiden, verwenden Sie F () Makro Funktion. Dies verhindert, dass SRAM es direkt aufruft und Speicher speichert. F () Funktion kann wie folgt angewendet werden:
Serie.println (f ("LinuxHint.com "));
Verwenden des F () -Makros in der obigen Zeichenfolge haben wir 14 Bytes SRAM gespeichert.
Datentyp korrekt
Verwenden Sie beim Verwenden großer Arrays und Suchtabellen den Datentyp entsprechend den Bedarf. Verwenden Sie den kleinsten Datentyp, der die Daten problemlos passen kann. Zum Beispiel, int wird zwei Bytes nehmen, während Byte wird nur einen nehmen. Vermeiden Sie die Verwendung von Float, wenn Sie eine ganze Zahl haben. Dies spart zusätzliche Bytes in der Arduino -Skizze, die insgesamt zusätzlichen Platz zum Schreiben von Skizzen bietet. In der folgenden Tabelle sind verschiedene Arten von Datentypen und Speicher, die sie in Arduino einnimmt, in der folgenden Tabelle angezeigt:
Datentyp | Größe (Bytes) | Wertebereich |
Leere | 0 | Null |
bool/boolean | 1 | Wahr falsch |
Verkohlen | 1 | -128 bis +127 |
nicht signiertes Zeichen | 1 | 0 bis 255 |
Byte | 1 | 0 bis 255 |
Int | 2 | -32.768 bis 32.767 |
Unsigned int | 2 | 0 bis 65.535 |
Wort | 2 | 0 bis 65.535 |
Lang | 4 | -2.147.483.648 bis 2.147.483.647 |
nicht signiert | 4 | 0 bis 4,294.967.295 |
Schweben | 4 | -3.4028235e+38 bis 3.4028235e+38 |
Doppelt | 4 | 3.4028235e+38 bis 3.4028235e+38 |
Saite | - | Charakter -Array |
Abschluss
In diesem Leitfaden haben wir behandelt, wie viel Code Arduino uno halten kann. Weiterhin haben wir verschiedene Parameter besprochen, die zu Problemen mit geringem Speicher führen. Die dynamische Speicherzuweisung unter Verwendung von Arduino -Funktionen kann im Projektgebäude sehr hilfreich sein. Wenn man genannte Techniken verwendet.