michael schrieb:
> Wenn ich es richtig verstehe dann ist
> Programm: --> Flash
> .data der Maschinencode des Programms.
> .bootloader der Maschinencode des Bootloaders
> .text --> Sind das const deklarierte Variabeln?
kommt auf den Compiler an.
Beim GCC nein, zb beim IAR ja
>
> Data:--> RAM
> .data temporäre Variabeln die als zB. als auto deklariert wurden.
> statische Variabeln die als static deklariert wurden Sie bleiben aber
> dauerhaft im RAM
> .bss --> ?
> .noint --> ?
>
> Den Bedarf des Stack sehe ich nicht da er zur Laufzeit belegt wird. -->
> richtig?
Alles richtig.
> Wie kann ein Überlaufen des RAM zur Laufzeit erkannt werden bzw. geloggt
> :-)
Gar nicht.
Mit viel Glück merkst du es, weil dein Programm seltsame Sachen macht.
Es gibt Strategien, mit denen am Programmanfang das SRAM mit einem
Muster gefüllt wird und wenn nach einer gewissen Zeit vom Muster nichts
mehr im SRAM erkennbar ist, dann ist wohl der Stack in den Bereich der
Variablen hineingewachsen.
> Wenn das richtig ist könnte ich const definierte Variabeln ins EEPROM
> auslagern?
könntest du.
Aber erst mal sollte man zusehen, vom Flash ein paar Bytes
freizubekommen. Meistens geht am Anfang noch ziemlich viel, was man
vereinfachen und optimieren kann.
> Ebenso könnte ich mehrfach vorkommende Ausdrücke in Funtionen packen.
> Die Variabelngrösse überdenken.
> Was habe ich noch vergessen?
Das sind schon 2 sehr gute und wichtige Punkte.