Da muss man selbst drauf achten, weil der Compiler nicht die nötigen Informationen dazu hat.Zitat von vklaffehn
avr-gcc (gcc generell) hat keine Ahnung davon, wie der µC, für den er übersetzt, so ausgestattet ist (RAM, Flash, SFR-Adressen, ...).
Über den Gesamtspeicherverbrauch kann er auch nichts wissen, das könnte bestenfalls der Locator (also avr-ld), der die SRAM-Adressen der Objects festlegt. Aber der meckert auch nicht, auch nicht mit --check-sections
Die Ausgabe von uwegw kommt übrigens von avr-size -C ..., was wohl einige Makefile-Gneratoren automatisch ins Makefile klöppeln.
Eine IRQ, die bei StacK Under- oder Oveflow getriggert wird, felt dem AVR-Core leider. Zur Laufzeit ist es also schwierig, das zu erkennen bzw. sich einen Überblick über den dynamischen RAM-Verbrauch zu machen um planen zu können.
Evtl erreicht man das Meckern des Linkers, indem man im Linker Script File eine Section unmittelbar nach .data (evtl auch .bss oder .noinit) definiert, die sich bei Überschreiten der SRAM-Kapazität dann mit der lezten SRAM-Section überlappen würde.
Aber selbst wenn er meckert, dann er immer noch nicht wissen, was zu Laufzeut auf dem Stack und dem Heap abgeht.
https://www.roboternetz.de/wissen/in...en_mit_avr-gcc
Bild hier
Lesezeichen