Forum: Mikrocontroller und Digitale Elektronik [ARM7] Stack overflow


von Jupp (Gast)


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...

von Chris (Gast)


Lesenswert?

Ohne detailierte Angaben zur Hardwareumgebung kann hier glaub ich keiner 
was sinnvolles dazu sagen.

von Jupp (Gast)


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.

von Jupp (Gast)


Lesenswert?

Also das mit den detailierten Angaben zur Hardwareumgebung war durchaus 
eine ernst gemeinte Frage. Und auch sonst würde ich mich über 
Hilfestellungen freuen :)

von Guest (Gast)


Lesenswert?

Was ist daran nicht zu verstehen?
Schaltplan posten, Code posten, fertig.

von Jupp (Gast)


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.

von tuppes (Gast)


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.

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.