Hallo zusammen, wäre sehr nett wenn man mir erklären würde, welche Methoden es für die Stackmessung von Mikrocontrollern gibt und wie sie sich in ihrer Funktionalität unterscheiden?
Gast
#4671822
http://rtos.com/images/uploads/Stack_Analysis_White_paper.1_.pdf Vielleicht steht da was interessantes mit drin
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.
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.
Gast
#4671880
Vielleicht ist https://mcuoneclipse.com/2015/08/21/gnu-static-stack-usage-analysis/ auch noch von Interesse zum Thema "static stack analysis". Aus praktischer Sicht.
Hallo zusammen, vielen Dank für die Infos. Die Links die ihr mir geschickt habt sind sehr gute Quellen...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.