Forum: Compiler & IDEs Linker-Settings für ATXmega64A3 und Bootloader


von Chris (Gast)


Lesenswert?

Hallo,

ich habe für den ATXmega32A4 und den ATXmega128A3 bereits erfolgreich 
den Bootloader xboot* im AVR-Studio angepasst. Bislang war eigentlich 
immer nur eine Zeile notwendig, die  in den "Project Options" bei den 
"Linker Options" (über "Custom Options" zu erreichen) angepasst werden 
müsste.

ATXmega32A4:  -Wl,--section-start=.text=0x8000
ATXmega128A3: -Wl,--section-start=.text=0x20000

Für den ATXmega64A3 hätte ich jetzt folgende Einstellung erwartet:

ATXmega32A4: -Wl,--section-start=.text=0x10000

Damit reagieren die Interrupts aber nicht mehr, die im Bootloader-Code 
mit PMIC.CTRL = PMIC_IVSEL_bm in den Bootloader-Bereich gemappt werden. 
Lösche ich die Zeile, reagieren die Interrupts, aber das Schreiben der 
Applikation in den entsprechenden Bereich schlägt fehl (Controller 
reagiert nicht mehr nach Sprung in die Applikation).

Ich bin bislang noch nicht wirklich tief in die Materie eingetaucht und 
bei diesem Problem fehlt mir auch irgendwie der Ansatz. Für 
sachdienliche Hinweise wäre ich sehr dankbar.

*) http://code.google.com/p/avr-xboot/

von Chris (Gast)


Lesenswert?

Ok, ich beantworte mir die Frage einmal selber: Die Linker-Settings sind 
korrekt, das Problem lag woanders:

Vor dem Interrupt-Mapping wurde der Takt eingestellt und dabei ebenfalls 
auf das einsprechende CTRL-Register zugegriffen mit einem CCP = 
CCP_IOREG_gc; vorher. Wenn jetzt das CCP = CCP_IOREG_gc; für das 
Interrupt-Mapping direkt hinter dem Takt-Setzen kommt, wird es scheinbar 
nicht ausgeführt, mit einer Pause dazwischen geht es hingegen...

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.