Gast
#1420858
Hallo, ich entwickle momentan ein Programm auf einem Atmega 2560 mit 64 KB externem RAM. Das Speicherlayout entspricht Variante 2 von "Memory areas using malloc", d.h. das interne RAM ist nur für den Stack und .data, .bss und heap liegen vollständig im XRAM. Mein Problem ist nun, dass das Datasegment trotz Verwendung von PROGMEM/morepgmspace.h mittlerweile über die 8 KB Grenze hinausgeht. Ich erhalte dann ein out-of-range-warning (vgl. Anhang) und das Programm ist nicht mehr lauffähig. Mit Optimierung (-01, -0s) funktioniert es im Augenblick noch problemlos, das macht aber ziemliche Probleme beim Debuggen. Gibt es eine Möglichkeit, das .data-Segment auf mehr als 8Kb zu vergrößern? Die naheliegenden Variante (à la --defsym=__data_end=0x80XXXX in den LD-Flags) brachte leider nicht das gewünschte Ergebnis. Das von mir verwendete Linkerskript (vgl. Anhang) ist im Prinzip avr6.x mit weiteren Segementen und schon in avr6.x ist der Databereich defaultmäßig auf die theoretisch maximal mögliche Größe (0xffa0) gesetzt. Rein interessehalber: Liegen gcc/ld nicht schon zur Compile-/Linkzeit genügend Informationen vor, um .data entsprechend der tatsächlichen Größe anzupassen? Ich bin für jeden Hinweis dankbar. Johannes