Hi! Ich bin gerade auf folgendes Problem gestoßen: Wie erkenne ich (wenn ich in C programmiere) das der SRAM meines Controllers voll ist? Überprüft das der Compiler? Oder kommt es zu Abstürzen des Controllers? Bislang ist es nur eine theoretische Überlegung! Danke für eure Antworten :) LG Alex
Hi! Vielleicht hilft Dir dieser Link weiter: http://www.rn-wissen.de/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc#Dynamischer_RAM-Verbrauch Gruss, Micha
da das RAM auch dynamisch vom Stack benutzt wird kann es der Compiler nicht wissen, den statischen RAM-Verbrauch siehst du an der Linkerausgabe
Die AVR-GCC Toolchain überprüft mit avr-size den SRAM Bedarf der initialisierten Variablen (.data) und der nicht initialisierten globalen Variablen (.bss). Es fehlt aber die Größe des Stackbedarfs zu Laufzeit (Rücksprungadressen, lokale Variablen) und des eventuellen Heapbedarfs Es gibt Ansätze, um diese dynamischen Bereiche abzuschätzen. Entweder zur Kompilezeit oder zur Laufzeit: Beitrag "StackViewer (RAM Rechner) für WinAVR"
Krapao schrieb: > Es fehlt aber die Größe des Stackbedarfs zu Laufzeit > (Rücksprungadressen, lokale Variablen) und des eventuellen Heapbedarfs Man kann durchaus Stack und Heap auf Überlauf prüfen, wenns der Compiler nicht anbietet, muss man notfalls selbst entsprechende Unterprogrammaufrufe und Speicherreservierungen in Assembler schreiben, die die Speichergrenzen überprüfen. Allerdings nützt das nur was zur Fehlerbeseitigung durch den Programmierer, eine fertig ausgelieferte Software kann bei Fehlererkennung höchstens gestoppt werden, denn bei Speicherüberlauf ist das System so oder so ruiniert, ob man den Funktionsaufruf nun abbricht oder falsche Adressen überschreiben lässt. Immerhin kann man so ein definiertes Anhalten erreichen anstatt eines zufälligen "Aufhängens". Ist übrigens ein seltsamer Ausdruck für einen Prozessor, aufhängen sollte sich eher der Programmierer. Gruss Reinhard
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.