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
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
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
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?
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
@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
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
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
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
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?
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.
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
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.
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???
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?
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.
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?
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.
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
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.
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