Gast
#182213
Hallo,
Umgebung:
MCU = ATmega128, 4kB internes RAM, 60kB externes RAM
Problem:
ich versuche jetzt seit einiger zeit den task stack für ein
multitasking system in das mcu interne ram zu verlegen.
Lösungsansatz:
Dazu habe ich mir diese 4kB in einer neuen section ".faststack"
reserviert.
static unsigned char task_stack[4096] _attribute_ ((section
(".faststack")));
Im makefile habe ich jetzt den allgemeinen datenbereich ins externe RAM
ab 0x1100 verlegt (-Tdata=0x802000),
den heap_end nach 64kB und den avr-libc stack ans ende des RAM
(--defsym=__stack=0x80ffff) und den .faststack nach 0x800100
EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff,
--section-start=.faststack=0x800100,--defsym=__stack=0x80ffff
Phänomen:
Das ganze funktioniert hervorragend solange ich meinen task_stack[]
ohne das _attribute_... verwende, sobald ich mit dem .faststack
übersetzte, wird ein reset produziert sobald der stack umgeschaltet
wird.
Was mach ich noch falsch ?