Hi Leute, Ich habe ein Programm in Energia für mein MSP430G2553 erstellt und kann es nicht flashen weil angeblich der RAM überläuft. Es liegt wohl an dem zweidimensionalen array "muster [60] [8]". Wenn ich das array nur mit [5] [8] als Beispiel zu flashen probiere funktioniert es. Dann hat das Programm 1323Byte größe. Aber wieso soll es dann mit [60] [8] nicht mehr gehen. Ich verstehe das nicht. Kann mir jemand weiterhelfen?
Markus G. schrieb: > Aber wieso soll > es dann mit [60] [8] nicht mehr gehen. Weil der RAM überläuft. Sonst noch Fragen?
Markus G. schrieb: > Es liegt wohl an dem zweidimensionalen array "muster [60] [8]". Ach übrigens: Das ist keine sinnvolle Codezeile. Das ist kein Minimalbeispiel. Nimm dir ne Stunde Zeit, die Frage RICHTIG zu formulieren oder lass es einfach und löse dein Problem selber.
geil bei TI steht Zizaz 0.5 kB RAM also wohl 512B, mehr hast du nicht, jetzt kannst du anfangen zu überlegen was du it jedem einzelnen BYte so anstellen willst , weil mehr hast du nicht zur Verfügung.
Guest schrieb: > Ach übrigens: Das ist keine sinnvolle Codezeile. Das ist kein > Minimalbeispiel. Nimm dir ne Stunde Zeit, die Frage RICHTIG zu > formulieren oder lass es einfach und löse dein Problem selber. Ich frage mich langsam ob man hier im Forum noch fragen stellen kann ohne gleich angeschnauzt zu werden.... Falls ich diese Antwort aber einfach nur falsch interpretiere tuts mir leid. Ram überlauf bedeutet dass dein Programm mehr Speicher benötigt als der Controler Ram zur verfügung hat. Ein 60x8 Array belegt nunmal alleine schon 480*sizeof(Datentyp) Byte. Wenn dieses Array dann auch noch als globales Array definiert ist bleiben dem Compiler auch keine großen Optimierungen mehr. Womöglich brauchst du dieses Array nur in einer Funktion und nicht global dadurch kann der Compiler schon mal den Speicherverbrauch optimieren. Da musst du aber wohl oder übel versuchen dein Programm so umzuschreiben dass möglichst wenig Speicher in Globalen Variablen steckt.
Peter K. schrieb: > Ich frage mich langsam ob man hier im Forum noch fragen stellen kann > ohne gleich angeschnauzt zu werden.... > Falls ich diese Antwort aber einfach nur falsch interpretiere tuts mir > leid. > > Ram überlauf bedeutet dass dein Programm mehr Speicher benötigt als der > Controler Ram zur verfügung hat. > > Ein 60x8 Array belegt nunmal alleine schon 480*sizeof(Datentyp) Byte. > Wenn dieses Array dann auch noch als globales Array definiert ist > bleiben dem Compiler auch keine großen Optimierungen mehr. > > Womöglich brauchst du dieses Array nur in einer Funktion und nicht > global dadurch kann der Compiler schon mal den Speicherverbrauch > optimieren. > > Da musst du aber wohl oder übel versuchen dein Programm so umzuschreiben > dass möglichst wenig Speicher in Globalen Variablen steckt. Vielen Dank Peter, ich hab noch nicht so viel Erfahrung damit. Aber damit erklärt sich das Problem. Und an alle anderen mit Ihren unnötigen Komentaren, das hättet ihr euch auch sparen können.
Peter K. schrieb: > Ich frage mich langsam ob man hier im Forum noch fragen stellen kann > ohne gleich angeschnauzt zu werden.... Ja kann man. Allerdings nur sinnvolle und überlegte. Wenn man Scheiße fragt, kommt auch Scheiße zurück. Peter K. schrieb: > 480*sizeof(Datentyp) Genau DAS ist das Problem. Der OP hat es nicht nur versäumt, ein funktionierendes Codebeispiel bereitzustellen. Er hat es nicht einmal geschafft, zu schreiben welchen Datentyp er nutzt. Wie lächerlich ist das denn bitte? Peter K. schrieb: > Womöglich brauchst du dieses Array nur in einer Funktion und nicht > global dadurch kann der Compiler schon mal den Speicherverbrauch > optimieren. Das führt aber tendenziell eher dazu, dass das Programm crasht, weil einfach der Stack überläuft. Peter K. schrieb: > Da musst du aber wohl oder übel versuchen dein Programm so umzuschreiben > dass möglichst wenig Speicher in Globalen Variablen steckt. Er muss wohl oder übel sein Programm so umschreiben, dass es überhaupt nur vorhandene und nicht herbeigewünschte Ressourcen benötigt. Außerdem muss er mal nachschauen was der Unterschied zwischen Flash und RAM ist, das hat er offenbar auch noch nicht begriffen.
Guest schrieb: > Ja kann man. Allerdings nur sinnvolle und überlegte. Wenn man Scheiße > fragt, kommt auch Scheiße zurück. Wenn jemand auf einem Gebiet hald noch keine Erfahrung hat dann kann er auch nicht Detailiert fragen, das wäre so als wenn man einem Schüler der nach dem Ohmschen Gesetz fragt, sagt die Frage ist Scheiße, frag lieber warum die die Stromdichte über die Leitfähigkeit mit der lokalen elektrischen Feldstärke zusammenhängt. Guest schrieb: > Genau DAS ist das Problem. Der OP hat es nicht nur versäumt, ein > funktionierendes Codebeispiel bereitzustellen. Er hat es nicht einmal > geschafft, zu schreiben welchen Datentyp er nutzt. Wie lächerlich ist > das denn bitte? Wie lächerlich ist es bitte dass du hier offensichtlich Unerfahrene Nutzer als Idioten beschimpfst? Er hat es hald versäumt, wenn er die nächste Frage stellt wird es wahrscheinlich schreiben welchen Datentyp er verwendet. Guest schrieb: > Das führt aber tendenziell eher dazu, dass das Programm crasht, weil > einfach der Stack überläuft. Irgendwo müssen die Variablen gespeichert werden und das Memorylayout von lokalen Variablen ist im Endeffekt kleiner als das globaler. Guest schrieb: > Er muss wohl oder übel sein Programm so umschreiben, dass es überhaupt > nur vorhandene und nicht herbeigewünschte Ressourcen benötigt. Genau das habe ich auch gemeint, er muss das Programm optimieren damit es passt. Guest schrieb: > Außerdem muss er mal nachschauen was der Unterschied zwischen Flash und > RAM ist, das hat er offenbar auch noch nicht begriffen. Woran erkennst du das?
Was genau steht in dem Array? Konstanten oder Variablen? Bei Konstanten hast Du die Möglichkeit, es ins Flash zu legen, dann belastest Du nicht Dein RAM. Gruß, Stefan
Peter K. schrieb: > Guest schrieb: >> Außerdem muss er mal nachschauen was der Unterschied zwischen Flash und >> RAM ist, das hat er offenbar auch noch nicht begriffen. Wenn hier nur Leute posten, die bereits alles begriffen haben, dann ist dieses Forum überflüssig. Stefan
Peter K. schrieb: > Woran erkennst du das? Daran dass er ja offenbar die Groesse des Binaries, welches im Flash liegt angegeben hat. Peter K. schrieb: > Er hat es hald versäumt, wenn er die nächste Frage stellt wird es > wahrscheinlich schreiben welchen Datentyp er verwendet. Wenn er das tut (zusammen mit allen anderen nuetzlichen Informationen), habe ich mein Ziel erreicht. Wenns ihm keiner sagt, wird ers auch nie machen. Peter K. schrieb: > Irgendwo müssen die Variablen gespeichert werden und das Memorylayout > von lokalen Variablen ist im Endeffekt kleiner als das globaler. Selbst wenn er ein array aus Bytes anlegen will passt das kaum in seinen RAM. 480 von 512 Bytes belegt, nur durch das Array. Da muss der Rest von Programm achon arg wenig Speicher brauchen, damit das ueberhaupt funktionieren kann.
Guest schrieb: > Wenn er das tut (zusammen mit allen anderen nuetzlichen Informationen), > habe ich mein Ziel erreicht. Wenns ihm keiner sagt, wird ers auch nie > machen. Da stimme ich dir zu, kann man aber hald etwas netter auch sagen ;)
Markus G. schrieb: > zweidimensionalen array "muster [60] [8] Damit das Raten aufhört und der Ton netter wird: Stell bitte die echte Definition ein.
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.