Forum: Mikrocontroller und Digitale Elektronik Speicher sparen


von Petra S. (Firma: Studentin) (peddes)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Michael D. (Gast)


Lesenswert?

ggf. kann man helfen wenn du den Code hochlädst ...

von P. M. (o-o)


Lesenswert?

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!

von Falk B. (falk)


Lesenswert?

@  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

von Willi (Gast)


Lesenswert?

Wieviel Kernspeicher hast Du denn zur Verfügung?

von Uwe (Gast)


Lesenswert?

Konstante strings ins flash packen ?!

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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

von Willi (Gast)


Lesenswert?

Markus W. schrieb:
> Atmel-uC

Hat Dir Deine Glaskugel verraten, dass es hier um AVR32 geht, oder habe 
ich etwas übersehen?

von gaast (Gast)


Lesenswert?

Auch andere Controller werden keinen Kernspeicher besitzen. Zwecks Größe 
und so.

von Willi (Gast)


Lesenswert?

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.

von P. M. (o-o)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von P. M. (o-o)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von Peter D. (peda)


Lesenswert?

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

von Udo S. (urschmitt)


Lesenswert?

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
Noch kein Account? Hier anmelden.