Forum: Mikrocontroller und Digitale Elektronik was ist die "Data Stack size"


von Olli (Gast)


Lesenswert?

Hi Leute,

ich habe da mal ne Frage. Ich prorgammiere mit CodeVison und habe als µC 
einen atmega162
– 512 Bytes EEPROM
– 1K Bytes Internal SRAM

nun benötige ich einen großen char arry (char temp[400]). nun bekomme 
ich ein warning beim compilieren und zwar, dass mein Data Stack wohl 
voraussichtlich 435 bite(s) benötigt, was aber nicht so eingestellt ist. 
ich kann nun in den einstellungen meine Data Stack size beliebig 
einstellen, z.B. von 128(voreinstellung) auf 450 und die Warnmeldung 
kommt dann nicht mehr. Aber was verändere ich damit und was für vor bzw 
nachteile hat es die Data Stack size größer bzw kleiner zumachen.

Gruß
Olli

von Falk B. (falk)


Lesenswert?

@ Olli (Gast)

>ich habe da mal ne Frage. Ich prorgammiere mit CodeVison und habe als µC
>einen atmega162
>– 512 Bytes EEPROM
>– 1K Bytes Internal SRAM

>nun benötige ich einen großen char arry (char temp[400]). nun bekomme

Welcher wieviel Speicher benötigt?

>ich ein warning beim compilieren und zwar, dass mein Data Stack wohl
>voraussichtlich 435 bite(s) benötigt,

Kaum. Eher Bytes.

>einstellen, z.B. von 128(voreinstellung) auf 450 und die Warnmeldung
>kommt dann nicht mehr. Aber was verändere ich damit und was für vor bzw
>nachteile hat es die Data Stack size größer bzw kleiner zumachen.

Weisst du was eine Stack ist? Dort werden lokale Variablen von 
Funktionen gespeichert.

MFG
Falk

von Olli (Gast)


Lesenswert?

> Welcher wieviel Speicher benötigt?

ich beötige den array um später eine sms im pdu formart auszulesen,
sprich es werden bis zu 400 einzelne charaters hineingeschrieben.

>Kaum. Eher Bytes.

mein fehler. du hast recht BYTES.

>Weisst du was eine Stack ist?

habe ich mir eben noch mal durchgelesen und wenn ich das richtig 
verstanden habe ist es so, dass wenn mein stack groß ist es länger 
dauert bis ich wieder auf meine variable zugreifen kann, als wenn mein 
stack klein ist.
richtig?!

gruß
olli

von Falk B. (falk)


Lesenswert?

@ Olli (Gast)

>> Welcher wieviel Speicher benötigt?

>ich beötige den array um später eine sms im pdu formart auszulesen,
>sprich es werden bis zu 400 einzelne charaters hineingeschrieben.

War das die Frage?

>>Weisst du was eine Stack ist?

>habe ich mir eben noch mal durchgelesen und wenn ich das richtig
>verstanden habe ist es so, dass wenn mein stack groß ist es länger
>dauert bis ich wieder auf meine variable zugreifen kann, als wenn mein
>stack klein ist.
>richtig?!

Vollkommen falsch! Der Stack ist dein Speicher für lokale Variablen und 
Rücksprungadressen bei Funktionsaufrufen, parallel auch für Interrupts. 
Wenn dein Array als lokale Variable im main() definiert ist landet sie 
auf den Stack. Ist sie aber als globale Variable definiert (ausserhalb 
von main ) landet sie auf dem Heap (der aber logischerweise auch im RAM 
liegt). Ist aber am Ende egal. Dreh einfach die Grösse des Stack hoch 
und gut ist. Das ist NICHT langsamer als ein kleiner Stack.

MFg
Falk

von Olli (Gast)


Lesenswert?

Ok danke,

fürs erste reicht mir die antwort erstmal aber ich verspreche mich da 
bei gelegentheit reinzulesen.

gruß
olli

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.