Embedded Systems und Firmware

Was ist bei einem kleinen Mikrocontroller ohne MMU im Hinblick auf übermäßige Stack-Nutzung zu beachten?

  1. ADer Stack wächst automatisch beliebig, daher muss man sich nicht darum kümmern
  2. BLäuft der Stack über, wird stets ein Fehlerbildschirm angezeigt
  3. CEin Stack-Überlauf wird nicht sofort erkannt und kann benachbarte Daten stillschweigend zerstören; daher sind tiefe Rekursion und große lokale Arrays zu vermeiden und der Verbrauch abzuschätzen
Antwort und Erläuterung anzeigen

Antwort: C. Ein Stack-Überlauf wird nicht sofort erkannt und kann benachbarte Daten stillschweigend zerstören; daher sind tiefe Rekursion und große lokale Arrays zu vermeiden und der Verbrauch abzuschätzen

Bei PC-Betriebssystemen lässt sich ein Überlauf erkennen, indem hinter dem Stack eine Seite mit Zugriffsverbot liegt; Mikrocontrollern ohne MMU fehlt dieser Mechanismus meist, und bei einem Stack-Überlauf werden dahinter liegende Variablen stillschweigend überschrieben. Die Symptome treten an anderer Stelle auf, was die Ursachensuche erschwert. Man vermeidet tiefe Rekursion und große lokale Arrays, schätzt die maximale Nutzung mit Werkzeugen ab oder markiert das Stack-Ende und prüft, ob die Markierung unversehrt ist.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Embedded Systems und Firmware

  1. Ein 12-Bit-ADC mit 3.3 V Referenzspannung liefert den Wert 2048. Welcher Wert kommt der Eingangsspannung am nächsten?
  2. Welchen Vorteil hat der Einsatz von DMA, wenn Wandlungsergebnisse eines ADC in gleichmäßigen Abständen in großer Zahl erfasst werden?
  3. Worauf ist zu achten, wenn Peripherieregister in C mit einer Struktur aus Bitfeldern dargestellt werden?
  4. Welchen Vorteil hat es bei vielen Mikrocontrollern, große unveränderliche Tabellen (z. B. Schriftdaten) mit const zu deklarieren?
  5. Was lässt sich mit Debug-Schnittstellen wie JTAG und SWD tun?

Vergleiche zu diesem Thema