HowTo Stack Measurement?

Gast #4671866
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

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