Hallo alle miteinander, ich mach gerade ein kleines Mikrocontroller projekt bei dem ich mein eigenes protokoll zwischen zwei mikrocontroller definier. Jetzt hab ich allerdings ein speicherproblem. Ich muss jetzt meinen code effizienter programmieren, damit er nicht soviel speicher verbraucht. Habt ihr mir tipps wie ich speicher sparen kann? (so in richtung "wo variablen definieren?" "möglichst wenig funktionen?" "switch case anstatt if" usw.) wäre nett wenn mir jemand von euch helfen könnte, Viele grüße pedde
Das fällt unter 'Optimierung'. Und bei Optimierung sind generelle Tips genauso schwierig zu geben wie sie dann doch nicht greifen. Optimierung muss man sich fast immer im Einzelfall ansehen. So auch hier: Es kann gut sein, globale Variablen zu lokalen zu machen, es kann aber auch umgekehrt besser sein. Es kann gut sein, wiederkehrende Funktionalität in eigene Funktionen auszulagern, es kann aber auch das genaue Gegenteil eintreten. Jeder Fall ist anders gelagert und ob man mit kochrezeptartigen Änderungen das angestrebte Ziel erreicht, steht in den Sternen.
Bevor du optimierst: Wenn irgendwie möglich, nimm einen grösseren Controller! Wirkliche "Tricks" gibt es keine. Und irgendwelche Optimierungen können sich seltsam verhalten und ziemlich zufällig kontraproduktiv werden etc. Weiter gilt: Irgendwann ist der Speicher voll. Viell Spass, wenn du tagelang optimiert hast, der Controller bis aufs letzte Byte voll ist und du dann trotzdem noch ein Zusatzfeature einbauen willst. Langer Rede kurzer Sinn: Wenn du nicht haargenau weisst, was du tust und was du willst, dann nimm einen grösseren Controller!
@ P. M. (o-o) >Bevor du optimierst: Wenn irgendwie möglich, nimm einen grösseren >Controller! Die DAU Methode. > Wirkliche "Tricks" gibt es keine. Aber sicher. Und noch viel mehr sinnvoller Grundlagen zum Thema. >Langer Rede kurzer Sinn: Wenn du nicht haargenau weisst, was du tust und >was du willst, dann nimm einen grösseren Controller! Käse. Einfach erstmal die grundlegenden Dinge prüfen, DANN ggf. einen größeren Controller wählen. http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung MFG Falk
Willi schrieb: > Wieviel Kernspeicher hast Du denn zur Verfügung? Na, mach mal halblang, sooo antiquiert sind die Atmel-uC auch wieder nicht. ;-) http://de.wikipedia.org/wiki/Kernspeicher
Markus W. schrieb: > Atmel-uC Hat Dir Deine Glaskugel verraten, dass es hier um AVR32 geht, oder habe ich etwas übersehen?
Auch andere Controller werden keinen Kernspeicher besitzen. Zwecks Größe und so.
gaast schrieb: > Auch andere Controller werden keinen Kernspeicher besitzen. Das wissen wir doch alles nicht - wir wissen garnicht, worum es überhaupt geht! Geht es um RAM, Flash oder EEPROM - Magnetband oder Kernspeicher? Ich bin mir auch nicht sicher, ob man einer Person eine hilfreiche Antwort geben kann, die nicht einmal eine konkrete Fragen stellen kann.
Falk Brunner schrieb: >>Langer Rede kurzer Sinn: Wenn du nicht haargenau weisst, was du tust und >>was du willst, dann nimm einen grösseren Controller! > > Käse. Falk, du bist einfach armselig. Du bist zwar fachlich einigermassen kompetent. Aber du bist absolut unfähig, in einem normalen Ton zu diskutieren. Und du kennst nur deine Sicht der Dinge. Weder kannst du andere Meinungen vernünftig widerlegen, noch kannst du spezielle Anforderungen/andere Vorgehensweisen akzeptieren.
@ P. M. (o-o) >kompetent. Aber du bist absolut unfähig, in einem normalen Ton zu >diskutieren. Fähig schon , hab ich aber manchmal keine Lust. >Und du kennst nur deine Sicht der Dinge. Weder kannst du >andere Meinungen vernünftig widerlegen, Kann ich, aber auch hier hab ich meisten keinen Bock, Romane zu schreiben. Dein Posting war einfach Unsinn. Kernaussage, "egal was du verzapft hast, kann man eh nicht optimieren". Das ist schlicht Unsinn. Vor allem da du genausowenig über den Quelltext weißt wie ich. Zuerst kann und sollte man die grundlegenden, bekannten, alles anderes als aufwändigen Dinge prüfen. Datentypgröße, Konstanten in den Flash etc. Genau das hab ich geschrieben und mit dem Link dargestellt. > noch kannst du spezielle > Anforderungen/andere Vorgehensweisen akzeptieren. Warum sollte ich Unsinn akzeptieren? Ich kann ihn bestenfalls tolerieren, solange die Leute mir damit nicht auf den Keks gehen oder ich anderweitig darunter leiden muss. Aber auch dazu hab ich manchmal keine Lust. Bin halt eher Kontra als Blockflöte ;-) MfG Falk
Falk Brunner schrieb: >>kompetent. Aber du bist absolut unfähig, in einem normalen Ton zu >>diskutieren. > > Fähig schon , hab ich aber manchmal keine Lust. Dann lass es sein. Wenn du keine Lust hast, ein vernünftiges Posting zu verfassen, dann besser gar keines. Und hey, selbst wenn man "keine Lust" hat, kann man es immer noch so ("Unsinn", "Käse") oder anders ("Bin nicht einverstanden", "Sehe ich anders") formulieren. Falk Brunner schrieb: > Dein Posting war einfach Unsinn. Kernaussage, "egal was du > verzapft hast, kann man eh nicht optimieren". Das ist jetzt deine sehr persönliche Interpretation. Ich wollte darauf hinaus, dass man besser einen grösseren Controller nimmt, als auf Teufel komm raus zu optimieren. Im allgemeinen finde ich es auch schade, dass gerade du (und andere Vielschreiber) sich kein bisschen um den Umgangston kümmern.
P. M. schrieb: > Ich wollte darauf hinaus, dass man besser einen grösseren Controller > nimmt, als auf Teufel komm raus zu optimieren. Und diese Aussage, ohne vorher eine einzige Zeile vom Programm gesehen zu haben? Was tun, wenn "das Programm zu langsam" ist? Gleich mal einen schnelleren uC nehmen? @ Petra S. Zeig doch mal deinen Code. Da gibt es sicher was zu verbessern.
@ P. M. (o-o) >> Dein Posting war einfach Unsinn. Kernaussage, "egal was du >> verzapft hast, kann man eh nicht optimieren". >Das ist jetzt deine sehr persönliche Interpretation. Nö. > Ich wollte darauf >hinaus, dass man besser einen grösseren Controller nimmt, als auf Teufel >komm raus zu optimieren. Was heißt hier "auf Teufel komm raus"? Es ist bisher VOLLKOMMEN unklar, welchen Code der OP verzapft hat! Also kann man nicht sagen, ob massenhaft Anfängerfehler drin sind, die man leicht ausbügeln kann, oder ob wirklich nur noch "auf Teufel komm raus" optimiert werden kann. >Im allgemeinen finde ich es auch schade, dass gerade du (und andere >Vielschreiber) sich kein bisschen um den Umgangston kümmern. Ich kümmere mich schon drum, keine Bange. Was aber nicht heißt, dass ich es jedem Recht mache und jeden mit Samthandschuhen anfasse. MfG Falk
Petra S. schrieb: > Habt ihr mir tipps wie ich speicher sparen kann? Ja. Lege dar, warum Du meinst, daß es wirklich ein Speicherproblem ist. Stelle fest, wo Du viel von welchem Speicher verwendet hast. Es könnte an Deinem Protokoll liegen, schlechtem Programmkonzept, schlechtem Programmierstil, falschen Compilereinstellungen, ... Eine gute Analyse des Problems ist schon 90% der Lösung. Da Du keinerlei Angaben machst, kann man nichts genaueres dazu sagen. Peter
Wird evt. durch bibliotheken viel Speicher verbraten? Floating point lib printf / sprintf ...
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.