Forum: Compiler & IDEs Bootloader AtMega


von Gast_021 (Gast)


Lesenswert?

Hallo Zusammen,

ich habe folgendes Problem.
Mein kleines Programm soll im im Bootloader Sector eines
Mega128 abgelegt und ausgeführt werden.

Mit der Linkeranweisung .text = 0xF000 wird das ganze in den richtigen 
Bereich geschrieben.

Das Programm funktionier auch soweit.

Wenn ich nun eine Globale Variable einfüge und diese gleich 
initialisiere
funktioniert das ganze nicht mehr.
Bsp. char myChar = 5;

Beim uplad des HEX Files geht dann irgendetwas schief...

Kennt jemand das Problem....

von Axel R. (axelroro)


Lesenswert?

Eine Vermutung - globale, initialisierte Variable gehen ins .data 
segment, d.h. Flash. Vermutlich muss das dann auch explizit mit einer 
Link Anweisung in den Bootloaderbereich verlagert werden.
Wenn die Variable nicht initialisiert ist, liegt sie vermutlich im SRAM.

Hier spricht gesundes Halbwissen - daher die Auskunft mit Vorsicht 
geniessen.

Grüsse
Axel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.