Hallo Forum!
Die klassische RAM-Speicheraufteilung (mit C auf dem Mikrocontroller) ist ja .data, .bss, Heap und Stack (Bild links).
Das Ganze hat den Nachteil, das der Stack in den Heap oder gar bis in die Daten reinlaufen kann. Das passiert auf kleineren Architekturen (AVR8) schnell, falls man denkt, man legt mal eben im Unterprogramm ein größeres Array an und benutzt dieses. Die Folge sind korrumpierte Daten und/oder unerklärliches Programmverhalten bzw. Abstürze.
Nun bin ich (mal wieder) aktuell beim STM32 und bin letztens über eine andere Anordnung gestolpert: Stack, .data, .bss und Heap (Bild rechts). Nun können der Heap und der Stack zumindest nicht mehr die Daten zerstören. Außerdem gibt es i.d.R. einen Hardfault, wenn man versucht auf Speicher zuzugreifen, den es nicht gibt. Beim AVR hilft das wahrscheinlich nicht so viel, da man auf den niedrigen Adressen in den IO-Bereich reinläuft.
Einen (wirklich kleinen) Nachteil sehe ich: Man muß vorher schon wissen, wieviel Platz man dem Stack einräumen möchte.
Nun meine Frage: Hat das schon mal jemand längerfristig ausprobiert und kann über seine Erfahrungen berichten? Oder gibt es (echte) Nachteile auf dem ersten Blick, die ich übersehen habe?
