Forum: Mikrocontroller und Digitale Elektronik LPC2468 Debuggen unter Eclipse mit OpenOCD und Amontec JTAGKey Tiny


von Eric Schrön (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

ich habe folgenden Aufbau mit daran anschliessendem Problem:

Ich habe Eclipse installiert und möchte mit OpenOCD und einem den 
JTAGKey Tiny von Amontec meinen LPC2468 auf einem Embedded Artists Board 
im Flash debuggen. Geflasht bekomme ich ihn mit einem externen Programm.

Ich habe das OpenOCD installiert und wollte es konfigurieren. Dabei 
erschienen diese Meldungen

c:\Programme\openocd-r657\bin> openocd-ftd2xx -f lpc2xxx_jtagkey.cfg
Open On-Chip Debugger (2008-05-16 20:15) svn: 657
URL: http://svn.berlios.de/svnroot/repos/openocd/trunk
Info:    options.c:50 configuration_output_handler(): jtag_speed: 3, 3
Info:    options.c:50 configuration_output_handler(): Open On-Chip 
Debugger (200
8-05-16 20:15) svn: 657
Info:    jtag.c:1376 jtag_examine_chain(): JTAG device found: 0x4f1f0f0f 
(Manufa
cturer: 0x787, Part: 0xf1f0, Version: 0x4)
Warning: embeddedice.c:185 embeddedice_build_reg_cache(): EmbeddedICE 
version 7
detected, EmbeddedICE handling might be broken
Info:    jtag.c:1376 jtag_examine_chain(): JTAG device found: 0x4f1f0f0f 
(Manufa
cturer: 0x787, Part: 0xf1f0, Version: 0x4)
Warning: jtag.c:1204 jtag_check_value(): value captured during scan 
didn't pass
the requested check: captured: 0x0f check_value: 0x01 check_mask: 0x0f
Warning: jtag.c:1164 jtag_read_buffer(): in_handler reported a failed 
check

Das Config-File dazu liegt im Anhang.

Was will mir das Programm damit sagen und was macht es??? Wie kann das 
behoben werden und wie erklären sich folgende Zeilen. Diese kommen, wenn 
ich unter Eclipse das OpenOCD aufrufe.

Open On-Chip Debugger (2008-05-16 20:15) svn: 657
URL: http://svn.berlios.de/svnroot/repos/openocd/trunk
Info:    options.c:50 configuration_output_handler(): couldn't open 
script file openocd.cfg
Error:   jtag.c:1498 jtag_interface_init(): JTAG interface has to be 
specified, see "interface" command

Vielen Dank schon mal im voraus für eure Antworten
Eric

von ich (Gast)


Lesenswert?

mal die Zeile auskommentieren:

gdb_memory_map enable

mit # vorne dran, vielleicht gehts dann richtig...

von Eric Schrön (Gast)


Lesenswert?

Hat nicht funktioniert. Mittlerweile bekomme ich jede Menge 
Fehlemeldungen, die alle so aussehen:

Error:   jtag.c:1431 jtag_validate_chain(): Error validating JTAG scan 
chain, IR
 mismatch, scan returned 0x00

Ungefähr so 40 Stück, wenn ich die openocd exe aufrufe.

Was ist das nun wieder???

Eric

von ich (Gast)


Lesenswert?

Versuch mal die OpenOCD Version r247.

Gibts in diesem Thread:
Beitrag "Probleme mit OpenOCD Phytec lpc2294"

von Eric Schrön (Gast)


Lesenswert?

Vielen Dank schon mal für eure Antworten! Leider hat das alles nix 
gebracht. Ich bin blutiger Anfänger diesbezüglich und kann euch auch 
keine weiteren Infos geben.

Trotzdem: Bitte helft mir!!!

Eric

von Eric Schrön (Gast)


Lesenswert?

Okay!

Neue Sachlage!

Ich habe das OCD im DOS-Fenster zum laufen bekommen. Er findet alle 
seine Files und alles is suppi!

Allerdings, wenn ich das unter Eclipse starten will, kommt immer wieder 
die Fehlermeldung:

Error:   configuration.c:122 parse_config_file(): couldn't open config 
file

Ich hab auch schon an den Pfad Einstellungen rum gespielt.

Wie geht das?

von wolfhunters (Gast)


Lesenswert?

normalerweise kannst du das Configfile folgendermaßen mit einbinden.
"ocd.exe" -f "configfile.cfg"

Bei mir sieht das konkret so aus:
openocd-ftd2xx.exe -f test.cfg

Wenn du das Configfile richtig geschrieben hast müßte sowas ähnliches 
wie
"Info:    openocd.c:93 main(): Open On-Chip Debugger (2007-09-05 09:00 
CEST)" erscheinen, je nach Version

von wolfhunters (Gast)


Lesenswert?

ich hab vergessen zu erwähnen, dass das Configfile bei mir im selben 
Ordner liegt, wie die OCD.exe

von Eric Schrön (Gast)


Lesenswert?

@wolfhunters

Exakt so wie du habe ich es auch hinbekommen - im DOS-Fenster, wenn ich 
dich richtig verstanden habe!!!

Allerdings läuft die ganze Sache nicht unter Eclipse, so wie oben 
beschrieben! Warum???

Eric

von Eric S. (ottili86)


Lesenswert?

Okay!!!
Unterhalte ich mich eben bisschen mit mir selbst! Hab das OpenOCD jetzt 
auch unter eclipse zum laufen bekommen. Hatte vergessen die Working 
Directory bei "External Tools" einzugeben. Da muss man dann das 
Verzeichnis, wo die OpenOCD exe und das config File liegen eingeben.

So was blödes aber auch!!!

Eric

von Eric S. (ottili86)


Lesenswert?

Und mal wieder funktioniert gar nix!!!!

Wollte selbes Projekt mit selben Einstellungen auf einem anderen 
Computer installieren und jetzt gibt es folgende Fehlermeldungen:

Error:   ft2232.c:1419 ft2232_init_ftd2xx(): unable to open ftdi device: 
2
Error:   ft2232.c:1434 ft2232_init_ftd2xx(): ListDevices: 2

Error:   ft2232.c:1436 ft2232_init_ftd2xx(): 0: Amontec JTAGkey B
Error:   ft2232.c:1436 ft2232_init_ftd2xx(): 1: x?
Error:   ft2232.c:1419 ft2232_init_ftd2xx(): unable to open ftdi device: 
2
Error:   ft2232.c:1434 ft2232_init_ftd2xx(): ListDevices: 2

Error:   ft2232.c:1436 ft2232_init_ftd2xx(): 0: Amontec JTAGkey B
Error:   ft2232.c:1436 ft2232_init_ftd2xx(): 1:
Info:    options.c:50 configuration_output_handler(): Open On-Chip 
Debugger (2008-06-19 19:00) svn: 717
Error:   ft2232.c:1419 ft2232_init_ftd2xx(): unable to open ftdi device: 
2
Error:   ft2232.c:1434 ft2232_init_ftd2xx(): ListDevices: 2

Error:   ft2232.c:1436 ft2232_init_ftd2xx(): 0: Amontec JTAGkey B
Error:   ft2232.c:1436 ft2232_init_ftd2xx(): 1: x?

Warum???

Bitte helft mir! Bin langsam am verzweifeln!

Eric

von Bastler (Gast)


Lesenswert?

Moin, den Fehler hatte ich mal, als der Baustein im *.cfg anders hieß 
als am PC. In der Systemsteuerung musst du (glaube ich) "Amontec JTAGkey 
A" und "Amontec JTAGkey B" finden, wenn nicht, ist da schon irgendwas 
nicht in Ordnung. In der Datei ist der "Amontec JTAGkey A" 
voreingestellt.
Ich glaube aber nicht, dass du einfach die B-Version nehmen kannst, da 
dann der B-Port des FTDI2232 angesprochen wird.
Überprüfe mal die Einstellung von "ft2232_device_desc" und 
"ft2232_vid_pid". Vieleicht ist da ein Tippfehler.
Ansonsten ist hier MProg (FTDI-Homepage) dein Freund.
Du brauchst auch nicht zwingend "ft2232_device_desc" anzugeben. Wenn du 
die Zeile auskommentierst, wird OpenOCd dir eine Meldung geben, dass es 
entweder "ft2232_device_desc" oder "ft2232_device_id" (<=oder so 
ähnlich) haben muss.
Ich habe es bei mir über die ID eingestellt, kann das aber in nächster 
Zeit nicht nachgucken, da ich meinen Arbeits-PC ne Weile nicht sehen 
werde.
Die ID solltet du mit MProg rausbekommen. Dann funktioiert das aber auch 
nur mit diesem einen Programmiergerät, jeder andere Jtagkey hat ja einen 
andere ID.

Bastler

von Eric S. (ottili86)


Lesenswert?

Danke für den Hinweis!

Hat aber noch nicht den erwünschten Erfolg gebracht! Was kann ich noch 
tun?

Das mit der B-Version hab ich noch net so richtig verstanden. Ich muss 
doch beide Kanäle installieren, oder nicht? Also werden doch auch beide 
Kanäle angesprochen? Wozu sind die eigentlich genau gut?

von Bastler (Gast)


Lesenswert?

Moin, das mit der A und B-Version ist etwas was mit dem FTDI-Chip zu tun 
hat (?) und man (auch Amontec) nicht abschalten kann. Der 2232 hat einen 
A und B-Port, wobei nur der A-Port den MPSSE-Engine (der JTAG emuliert) 
hat. Der B-Port kann einen zusätzlichen UART zur Verfügung stellen, der 
nützt uns aber für OpenOCD nichts (der Olimex Adapter nutzt den noch 
zusätzlich).
Meldet sich das Ding den bei dir in der Systemsteuerung richtig mit A 
und B-Port an?
Ansonsten kenne ich den den o.g. Fehler nur daher, weil ich mich mal 
vertippt hatte. Wie gesagt, als ich das Problem durch Angabe der ID (und 
weglassen der "ft2232_device_desc"-Zeile) gelöst hatte, wurde der 
Adapter erkannt.

Bastler

P.S.: Ich verwende nicht den Jtagkey von Amontec, sondern eine 
Eigenentwicklung, die in O.OCD lediglich mit Einstellung "ft2232_layout 
jtagkey" angesprochen wird, die originalen FTDI-Treiber und die FTDI 
Standart-VID und PID nutzt. Daher konnte ich die ID mit MProg auch 
selbst vorgeben. Dein JTAGkey und mein Adapter sind nur aus der Sicht 
von OpenOCD identisch, ansonsten nicht.

von Eric S. (ottili86)


Lesenswert?

@ Bastler

Könntest du mal deine Bastelanleitung für deinen JTAGKey posten? Bitte!

von Eric S. (ottili86)


Lesenswert?

Mittlerweile bin ich mit meinem Latein endgültig am Ende!!!

Ich habe in der Konfig-Datei rumgespielt und dabei sämtliche 
Möglichkeiten ausprobiert. Weiterhin habe ich meine gesamte Hardware, 
die ich einsetzte (Eval-Board, JTAG Key) auf Bugs unetrsucht, mit dem 
Erfolg, dass jetzt schonmal die Resetleitungen funktionieren.

Das Problem stellt sich jetzt folgendermaßen dar, dass OpenOCD immer 
sagt, dass er die JTAG chain nicht validieren kann

Error: jtag.c:1444 jatg_validate_chain(): Error validating JTAG scan 
chain, IR mismatch, scan returned 0x3F

Ich erkenne daraus, dass er aufgrund keiner geschlossen JTAG chain nicht 
kommunizieren kann. Ist das so richtig??? Und wie kann ich dem Abhilfe 
schaffen???

Bin für jede Idee dankbar! Mir sind sie nämlich ausgegangen!

Eric

von Tilo (Gast)


Lesenswert?

Zu deinen Problemem:

1. Setze den Parameter zur Config-File in "", also "c:\ ...". Sonst 
verursachen z.B. Leerzeichen, dass die Datei nicht gefunden wird.

2. Überprüfe die Einstellungen von TRST und SRST, macht der uC einen 
Dauerreset?

3. Es wird nur "JTAGKey A" verwendet. Kanal B ist nirgends 
angeschlossen. Im Gerätemanager taucht er trotzdem auf.

4. Lösche mal das Flash des uC und versuche es dann noch einmal.

von Eric S. (ottili86)


Lesenswert?

Danke für die Hinweise

zu 1.) Habe ich gemacht: keine Veränderung

zu 2.) Config Einstellung: reset_config trst_and_srst srst_pulls_trst
       Er führt keinen Dauerreset durch, sondern läuft ganz normal an

zu 3.) Genauso isses. Aber was mich stutzig macht ist, dass OpenOCD 
immer mit zwei Devices arbeiten will und das eventuell auch irgendwie 
tut, aber das ja gar nicht sein kann/darf.

zu 4.) Habe ich gemacht: keine Veränderung

Was nun???

von Tilo (Gast)


Lesenswert?

Hast du in der Config-File auch Kanal A mit angegeben? Unter Windows 
muss man das.

Wenn der bei mir Meldungen mit Kanal A & B anzeigt, dann immer nur dann, 
wenn OpenOCD schon lief und dann ein 2. mal gestartet wurde. Was mich 
irritiert, dass bei dir weiter oben nur Kanal B angezeigt wurde. 
Normalerweise werden alle vorhandenen Devices, also Kanal A und Kanal B 
aufgelistet. Sind beide im Gerätemanager vorhanden?


Welche Version nutzt du gerade? Die aktuelle cvs Version?

von Eric S. (ottili86)


Lesenswert?

Ich verwende die Version r717.

Im Gerätemanager sind beide Kanäle erkannt.
Im Konfig-Script habe ich dazu folgendes zu stehen:
     ft2232_device_desc "Amontec JTAGkey A"

Das mit dem 2. mal starten kann ich ebenfalls bestätigen.

Vielleicht habe ich mich falsch ausgedrückt. Bei mir listet er gar keine 
Devices auf. Nach Ausgabe der Version und dem Standard-Zeugs, kommt 
sofort die Fehlermeldung. Und das bei einem Aufruf mehrmals.

von Tilo (Gast)


Lesenswert?

Tja, dann wird der chip nicht erkannt. Mit einem Logicanalizer sollte 
man erkennen, was los ist. Alles andere wird schwierig.

von Eric S. (ottili86)


Lesenswert?

Was ich noch vergessen habe zu erwähnen ist, dass wenn ich eine 
Messspitze vom Oszi oder vom Logic Analyzer an die JTAG Pins dran hänge, 
die Signale deys JTAGs beeinflusst werden. Das schliesse ich daraus, 
dass andere Fehlermeldungen bzw. Warnings von OpenOCD ausgegeben werden. 
Man beachte dabei, dass ich die Pins alle laut NXP FAQs mit Pull-Ups 
bzw. Pull-Downs beschaltet habe.

Es sieht dann folgendermaßen aus: OpenOCD erkennt zwei Devices. Jedoch 
kommt direkt nach der Erkennung die Warnung:

Warning: embeddedice.c;185 embeddedice_build_reg_cache(): EmbeddedICE 
vesion 7 detected, EmbeddedICE handling might be broken

Und das alles nur wegen den Messspitzen???

Außerdem noch eine andere Frage. Auf was für Signalzustände muss ich den 
diesbezüglich achten, um heraus zufinden woran es liegt??? Geht es dabei 
nur um die JTAG Pins oder eventuell auch andere Bussignale?

von Tilo (Gast)


Lesenswert?

Da sollte sich nicht zu viel tun. Auf den Boards, mit denen ich 
gearbeitet habe, waren Pullups von 1k (Reset) oder 100k verbaut. Da 
sollte das 1Meg des Tastkopf nicht zu viel ausmachen. Eventuell einen 
1:10 Tastkopf verwenden?

Warum hast du eigene Widerstände angeschlossen? Dachte du verwendest ein 
fertiges Board? Hast du deinen Aufbau mit Referenzplänen verglichen?
Viel mehr kann ich dir dazu dann auch nicht mehr sagen.

von Eric S. (ottili86)


Lesenswert?

Ich habe gemessen auf demBoard und siehe da: die Pins hingen in der 
Luft. Ohne Widerstand. Schon komisch! Hätte ich auch net gedacht. Aber 
es war tatsächlich so

von Tilo (Gast)


Lesenswert?

Klar, dann wurde der 1Meg vom Oszi zum Pullup ;)
Bei meinem ADUC7000 ist an TRST 1k und an TDI,TMS und TCK 100k dran. TDO 
hat keinen Pullup. Bei dem hab ich JTAG auch ohne Pullups hinbekommen, 
weil ich nicht wusste, dass sie benötigt werden.

TRST und SRST sind auf dem Amontec explizit als Open Kollektor 
beschaltet. Ohne Pullup tut sich da nichts.

von Eric S. (ottili86)


Lesenswert?

Das Problem war viel weitreichender.

Der Amontec JTAGKey will die unbenutzen Pins 18 und 20 auf Masse gezogen 
wissen. Und auf meinem Eval Board hängen sie nun einfach mal frei in der 
Luft rum. Lösung: Lötzinn!

Eric

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.