Forum: Compiler & IDEs Atmel Studio GDB offset ?


von Marco H. (damarco)


Lesenswert?

Jemand eine Idee wie man im Atmel Studio ein Offset für den Debugger 
einstellt?

Das Problem ist das Atmel Studio den Code nicht zuordnen kann da die 
Adressen um den bootloader verschoben sind. So lassen sich keine 
breakpoints etc. setzen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Und wieso ist der Code "verschoben"?

Wenn das sauber im Linker-Script beschrieben ist, dann muss doch nix 
"verschoben" werden?

von Marco H. (damarco)


Lesenswert?

Das linker script macht was es soll leider weiß Atmel Studio davon 
nichts. Die Adressen sind Reverse zum Code nicht mehr festzustellen. So 
das ein debugging nur auf ASM Ebne möglich ist. Breakpoints kann man 
nicht setzen da die Adressen nicht mehr passen. Diese sind ja um den 
bootloader verschoben.

Das hochladen per Debug funktioniert ja ohne den bootloader zu 
überschreiben. der Code wird oberhalb des bootloaders in den flash 
geschrieben.

Ähnliches würde passieren wenn der gcc etwas wegoptimiert. Der Sinnlose 
Code ist zwar in der Quelle noch vorhanden aber nicht im Flash. Somit 
kann man an dieser stelle im Quelltext auch keinen breakpoint setzten.

von Dr. Sommer (Gast)


Lesenswert?

Marco H. schrieb:
> Das linker script macht was es soll leider weiß Atmel Studio davon
> nichts.
Wie kann das sein? Über das Linker-Script werden die Adressen im Code 
(d.h. in der ELf-Datei) überhaupt erst berechnet, bei korrektem Script 
mit Offset. Wo bekommt das Atmel Studio denn seine falschen Adressen 
her, wenn nicht aus dem Kompilat, wo aber die richtigen Adressen drin 
stehen?

von Root (Gast)


Lesenswert?

Ich denke auch das hier ein Effekt völlig falsch zugeordnet wird.
Das Applikation Immage um einen Bootloader zu verschieben ist gängige 
Praxis.
Bei den Cortexen und Co geht das meiner Meinung nicht anderst.

Bei den 32bittigen AVR32 hat Atmel extra ein Trampoline.S Assembler 
Datei dazugpackt, welche
1) als Platzhalter für das Bootloader Image dient.
2) diesen Bereich auch überspringt so dass die App gestartet wird

Ähliches mach ich bei meinen Cortex Projekten auch.

Wenn eine Release gebaut werden muss, wird das Bootloader Image mit 
SREC_CAT zusammengeklebt.

von Marco H. (damarco)


Lesenswert?

Also was zwischen packen im Code. Hmm und wie löst man das Problem?

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.