[ARM7] Stack overflow

Gast #1637065
Lesenswert?

Hallo!

Ich verwende einen AT91SAM7X256 mit FreeRTOS und GCC.
Jetzt habe ich das Problem, dass er sich häufiger im laufenden Betrieb 
resettet, oder komplett abschmiert, sodass ich ihn neu flashen muss, 
damit er wieder läuft.

Die Stack Overflow Detection von FreeRTOS schlägt an, also vermute ich 
mal, dass das das Problem ist. Allerdings hängt sich das ganze System 
schon kurz nach dem booten auf, wenn ich dem entsprechenden Task mehr 
Stack zuteile.

Deswegen bin ich im Moment einwenig ratlos, was ich machen soll. Habe 
auch noch nicht wirklich viel Erfahrung auf dem Gebiet.
Für Tipps wäre ich dankbar...
Gast #1637167
Lesenswert?

Hi Chris,

und was verstehst du unter 'detailierte Angaben zur Hardwareumgebung' ?

Ich dachte eher, dass es vielleicht eine Stelle gibt, wo ich die gesamt 
Größe des Stacks ändern muss oder so? Also alles, was ich bisher 
versucht habe war beim Aufruf von xTaskCreate() den Parameter 
usStackDepth etwas zu vergrößern. Dies führt dann aber wie gesagt zu 
einem Absturz direkt zu Anfang.
Gast #1639716
Lesenswert?

Warum so unfreundlich?

Schaltplan habe ich keinen und der Code ist recht umfangreich.

In wie fern kann denn ein Stack Overflow mit der Schaltung zusammen 
hängen?
Und was könnten (!) die Gründe dafür sein, dass nach dem Vergrößern des 
Stacks für einen Task gar nichts mehr läuft.
Gast #1639866
Lesenswert?

Jupp schrieb:
> Und was könnten (!) die Gründe dafür sein, dass nach dem Vergrößern des
> Stacks für einen Task gar nichts mehr läuft.

Ein Programmierfehler, der irgendwo Speicher überschreibt.

Wenn dieses "irgendwo" zufällig die Stackverwaltung von FreeRTOS trifft, 
kann es sein, dass deshalb eine irreführende "Stack Overflow"-Warnung 
kommt.

Durch die Vergrößerung des Task-Stacks hat sich das Speicherabbild 
geändert, das "irgendwo" ist jetzt woanders (oder es ist derselbe Ort, 
aber der wird jetzt anders verwendet), und daher sind auch die 
Auswirkungen anders.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren