Forum: Compiler & IDEs Atmel Studio GDB offset ?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Marco H. (damarco)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.