Forum: Mikrocontroller und Digitale Elektronik Yagarte Toolchain und Segger J-Link GDB


von Florian F. (e-lore)


Lesenswert?

Hallo zusammen!

Mittlerweile hänge ich schon Tage an diesem Problem und es beginnt doch 
arg an meinen Nerven zu zehren.

Ich habe hier ein AT91SAM7SE-EK Board der Firma Atmel, welches mit einem 
SAM-ICE JTAG Adapter der Firma Segger angebunden ist.

Die ersten Tests habe ich mit einer eingeschränkten Verion der IAR 
Embedded Workbench gemacht. Das lief einwandfrei, soll jedoch nicht 
verwendet werden.

Zu der Yagarto Toolchain habe ich das Dokument "Using Open Source Tools 
for AT91SAM7S Cross Development revision C" durchgearbeitet.

Mein Problem ist nun folgendes: Eclipse stürzt mir beim Versuch zu 
debuggen ab. Ich habe, da SAM7SE und SAM7S in weiten Zügen identisch 
sind, die Befehle aus dem eben erwähnten Dokument übernommen und nach 
Anleitung eingefügt:

monitor reset
monitor speed 30
monitor speed auto
monitor long 0xffffff60 0x00320100
monitor long 0xfffffd44 0xa0008000
monitor long 0xfffffc20 0xa0000601
monitor sleep 100
monitor long 0xfffffc2c 0x00480a0e
monitor sleep 200
monitor long 0xfffffc30 0x7
monitor sleep 100
monitor long 0xfffffd08 0xa5000401
set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 1024
set remote memory-read-packet-size fixed
symbol-file main.out
continue

Wobei ich die Kommandos einzeln über arm-elf-gdb eingegeben habe.

Bei dem Kommando "set remote memory-read/write-packet-size fixed" fragt 
er nach, ob er das wirklich so setzen soll, deswegen habe ich die Zeilen 
mal testweise rausgeworfen, was mich aber auch nicht weitergebracht hat. 
Die main.out existiert in meinem Projekt nicht. Allenfalls vielleicht 
eine main.o bzw PROJEKT.elf, welche übertragen wird und auch die 
Symbolinformationen beinhaltet (habe ich extra überprüft).

Vorher, als ich verkehrte Kommandos drin hatte (waren eigentlich für 
OpenOCD) konnte er das Programm zwar abfahren im Debug Modus, jedoch 
nicht Schritt für Schritt durcharbeiten. Mittlerweile stürzt Eclipse 
einfach nur noch kommentarlos ab.

Für jeden Tip bin ich dankbar, weil mir echt langsam die Zeit davon 
läuft. Es handelt sich um eine Diplomarbeit und ich habe nur noch 4 
Monate...

Grüße

Elorian

von Florian F. (e-lore)


Lesenswert?

Fehler gefunden..waren (wie immer) gleich mehrere auf 
einmal....bestehend aus dummheit (an der falschen Stelle gelesen) und 
einem etwas unglücklich gebauten Beispielprogramm der Firma Atmel...mit 
einem andere gehts jetzt!

Wenn es von Interesse ist, kann ich bei Gelegenheit nochmal ne 
Minianleitung posten, wo ich reinschreiben kann, womit ich besonders 
Schwierigkeiten hatte...

Grüsse

e-lore

von PeterK (Gast)


Lesenswert?

hallo Florian,

ich weiß nicht, ob das schon geschehen ist mit deiner Anleitung - aber 
ich hätte sehr starkes interesse daran... vor allem mit der 
programmiergeschichte über das JTAG Interface...

- welche Komponenten benutzt du? OpenOCD in Verbindung mit Eclipse? 
Funktioniert der Debug-Modus gut?

wäre für Tipps dieser Art sehr dankbar... Hast du z.B. auch schon 
versucht ein externes Flash zu programmieren über den µC?


PeterK

von Florian F. (e-lore)


Lesenswert?

Hallo!

Aaalso. Ich nutze zur Zeit das AT91SAM7SE-EK Board. Als JTAG hab ich 
hier von der Firma Segger ein SAM-ICE. Das funktioniert NICHT mit dem 
OpenOCD, wohl aber mit dem Eclipse. Dazu braucht man das 
Serverprogrämmelchen von der Firma Segger, welches man kostenlos von 
deren Seite bekommt.

Wenn du dir ein JTAG von der Firma Olimex besorgst (sind recht günstig 
und es gibt da eins mit einem zusätzlichen RS232 Port UND einer 
Stromversorgung für die Platine, dann kannst du auch OpenOCD verwenden. 
Ich habe beides ausprobiert, bin aber momentan auf das SAM-ICE 
angewiesen.
Der ist zwar ein wenig langsam, wenn man in Schritten das Programm 
Traced, aber generell bin ich ganz zufrieden.

Was sehr gut funktioniert hat ist das Tutorial "Using Open Source Tools 
for AT91SAM7S Cross Development" von James P. Lynch, welches in der 
Revision C vorliegt. Das kann man von der Atmel Seite herunterladen. Es 
umschreibt Schritt für Schritt, wie man vorgehen muss, wenn man entweder 
Olimex oder Segger einsetzt. Wichtig ist dabei, daß man genau 
liest...das war nämlich mein Fehler. Es gibt da jeweils einen 
Initialisierungsstring, der z.B. erstmal den Prozessor anhält und dann 
einige konfigurationen durchschickt. Dieser String ist UNTERSCHIEDLICH, 
wenn man ein debugging im RAM oder im Flash machen möchste. Ich hab 
leider erstmal den falschen erwischt....naja..kostet halt Zeit sowas.

Externen Flash habe ich noch nicht programmiert und den auf dem Board 
sitzenden SDRAM habe ich auch noch nicht genutzt. Dafür habe ich ein 
Tutorial gefunden, ich weiss nur nicht, ob ich im Verlaufe meiner 
Diplomarbeit noch dazu komme mein Programm dahingehend zu erweitern, daß 
das erforderlich wird.

Falls dein angestrebtes Projekt in ähnliche Richtungen geht, kann man 
sich auch gerne regelmässig austauschen.

Mehr kann ich im Augenblick nicht schreiben, da ich noch am arbeiten bin 
:)
ich schaue aber im verlaufe des Tages mehrfach hier rein!

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.