HowTo Stack Measurement?

Gast #4671866
Weil Hardware- und Software-Abteilungen sich für gewöhnlich hassen. 
Rennt der Controller dann mal wieder in einen Stackoverflow können die 
Hardwerkler sich über die Tippsen lustig machen, zu blöd für embedded 
software zu sein.
Gast #4671872
Falk B. schrieb:
> Mal ne dumme Frage. Warum baut man nicht eine Hardwarefunktion
> ein, um
> das Maximum des Stackpointers zu messen? Diese wäre sehr praktisch und
> kostet kaum Silizium.

Weil das erstens bei sowas wie einem RTOS nichts brächte - es geht da um 
den Stack JEDES Tasks. Weil es zweitens auch bei einer reinen 
bare-metal-Anwendung unzuverlässig wäre, solange man keine 100% coverage 
einbaut. Coverage-Analsyse bei bare metal ist aber ein nicht minder 
schwieriges Problem.

Und weil es drittens auch alles gar nicht nötig ist, solange man keine 
Rekursion verwendet. Der Compiler sieht ja, wie die call chain jeder 
Funktion aussieht, kann also den worst-case-Stackbedarf einer jeden 
Funktion inkl. child-functions einfach angeben. KEIL macht das, kann man 
zumindest konfigurieren.

Dann addiert man den Stackbedarf jeder Taskfunktion auf (bzw. nur der 
main() bei bare metal) und zählt dann noch für jeden Interrupthandler 
den Stackbedarf dazu. Problem gelöst.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.