mikrocontroller.net

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


Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke,

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

gruß
olli

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.