Forum: Mikrocontroller und Digitale Elektronik RCLK klappt mit Olimex USB-OCD-H JTAG nicht richtig


von Olli Z. (z80freak)


Lesenswert?

Seit kurzem bin ich stolzer Besitzer eines Olimex ARM-USB-OCD-H 
JTAG-Adapters. Gleich beim ersten Einsatz habe ich ein Problem damit.

Ich versuche das autoprobing durchzuführen. Der Adapter ist korrekt mit 
den Leitungen am Board verbunden. Dieses hat auch eine RCLK Leitung, 
sollte also adaptive Taktung können. Selbst wenn nicht müsste durch 
Verwendung des Befehls "jtag_rclk 1" der Takt auf 1 KHz zurückfallen. Da 
ich auch noch einen Segger J-Link EDU habe, weiss ich das es 
grundsätzlich mit der adaptiven Tatkung geht.

Mein openocd.cfg file sieht so aus:
1
source [find scripts/interface/ftdi/olimex-arm-usb-ocd-h.cfg]
2
3
transport select jtag
4
jtag_rclk 1
5
reset_config trst_and_srst
6
init

Leider klappt das ganz und garnicht. Er bleibt beim start von 
openocd.exe hängen:
1
C:\Programme\openocd>openocd
2
GNU MCU Eclipse 64-bits Open On-Chip Debugger 0.10.0+dev-00487-gaf359c18 (2018-05-12-19:30)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
        http://openocd.org/doc/doxygen/bugs.html
6
RCLK - adaptive
7
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst
8
Info : RCLK (adaptive clock speed)
9
Warn : There are no enabled taps.  AUTO PROBING MIGHT NOT WORK!!

Da kann ich warten so lang ich will, da passiert nix mehr :-(

Was mache ich blos falsch? Kann es vielleicht sein das die RCLK-Leitung 
keinen Pullup hat und der Adapter dies nicht zur Verfügung stellt? Oder 
das er die Signalspannung von 3,3V nicht erkennt? Dazu finde ich in den 
Startmeldungen nämlich garnichts. Jumper, wie das alte Modell, hat 
dieser nicht mehr.

Vielleicht bin ich einfach irgendwo "falsch abgebogen" und total auf dem 
Holzweg. Dann helft mir bitte! :-)

von zyxw (Gast)


Lesenswert?

Der Olimex basiert ja auf dem FT2232H, schau mal ins Datenblatt, afair 
kann er kein Clk erzeugen.
Auf welchem Pin soll denn Rclk herauskommen?
Btw, es gibt auch den USB-OCD-H-TINY, der hat keinen seriellen 2.Kanal 
und statt der Linedriver nur Widerstände, ist also kurzschlussfest.
Und deutlich günstiger.

von Olli Z. (z80freak)


Lesenswert?

Also laut Datenblatt vom Olimex ist der 20polige JTAG-Header 
Standardkonform belegt und 1:1 Kompatibel mit dem Segger J-Link.

Auf Pin 11 ist "TRTCK" (also RTCK, nicht RCLK wie ich fälschlicherweise 
geschriebene habe).

von Jim M. (turboj)


Lesenswert?

Olli Z. schrieb:
> Da
> ich auch noch einen Segger J-Link EDU habe, weiss ich das es
> grundsätzlich mit der adaptiven Tatkung geht.

So ein FT2232H schafft (angeblich) bis 30MHz, das habe ich aber noch nie 
in Funktionierend gesehen bei JTAG. Eventuell ist der mit RCLK "zu 
schnell", so dass man den langsamer takten müsste.

Olli Z. schrieb:
> Oder
> das er die Signalspannung von 3,3V nicht erkennt?

Solange der VCC Pin mit am Target angeschlossen ist, sollte er sich auf 
die jeweilige Spannung einstellen - da ist ein Pegelwandler drauf IIRC.

Olli Z. schrieb:
> [openocd]
> Da kann ich warten so lang ich will, da passiert nix mehr :-(

Da fehlt der "-d3" Debug Parameter, wo man sieht was der so treibt. 
Auto-Probing läuft mit OpenOCD aber praktisch nie IMHO, der will immer 
ein korrektes Config File sehen. Bei Dir fehlt das Target komplett.

von Olli Z. (z80freak)


Lesenswert?

Jim M. schrieb:
>> das er die Signalspannung von 3,3V nicht erkennt?
> Solange der VCC Pin mit am Target angeschlossen ist, sollte er sich auf
> die jeweilige Spannung einstellen - da ist ein Pegelwandler drauf IIRC.
Pin 1 (VREF) ist natürlich verbunden. Der Segger zeigt auch 3,3V an.

> Olli Z. schrieb:
>> [openocd]
>> Da kann ich warten so lang ich will, da passiert nix mehr :-(
> Da fehlt der "-d3" Debug Parameter, wo man sieht was der so treibt.

> Auto-Probing läuft mit OpenOCD aber praktisch nie IMHO, der will immer
> ein korrektes Config File sehen. Bei Dir fehlt das Target komplett.
Da mein Target nicht lieft und genau an derselben Stelle hängen blieb, 
wollte ich erstmal reduzieren. Irgendwas wird das Autoprobing doch 
finden und wenn es nur die IRLen ist.

Hier mal das d3 Log:
1
C:\Programme\openocd>openocd -d3
2
GNU MCU Eclipse 64-bits Open On-Chip Debugger 0.10.0+dev-00487-gaf359c18 (2018-05-12-19:30)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
        http://openocd.org/doc/doxygen/bugs.html
6
User : 13 0 command.c:544 command_print(): debug_level: 3
7
Debug: 14 31 options.c:184 add_default_dirs(): bindir=bin
8
Debug: 15 156 options.c:185 add_default_dirs(): pkgdatadir=
9
Debug: 16 359 options.c:186 add_default_dirs(): exepath=C:/Programme/openocd
10
Debug: 17 437 options.c:187 add_default_dirs(): bin2data=../
11
Debug: 18 500 configuration.c:42 add_script_search_dir(): adding C:\Users\itsme\AppData\Roaming/OpenOCD
12
Debug: 19 765 configuration.c:42 add_script_search_dir(): adding C:/Programme/openocd/..//site
13
Debug: 20 765 configuration.c:42 add_script_search_dir(): adding C:/Programme/openocd/..//scripts
14
Debug: 21 859 configuration.c:97 find_file(): found openocd.cfg
15
Debug: 22 859 configuration.c:97 find_file(): found scripts/interface/ftdi/olimex-arm-usb-ocd-h.cfg
16
Debug: 23 875 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_interface ftdi
17
Debug: 24 890 command.c:143 script_debug(): command - interface ocd_interface ftdi
18
Debug: 27 890 command.c:364 register_command_handler(): registering 'ocd_ftdi_device_desc'...
19
Debug: 28 890 command.c:364 register_command_handler(): registering 'ocd_ftdi_serial'...
20
Debug: 29 906 command.c:364 register_command_handler(): registering 'ocd_ftdi_location'...
21
Debug: 30 922 command.c:364 register_command_handler(): registering 'ocd_ftdi_channel'...
22
Debug: 31 922 command.c:364 register_command_handler(): registering 'ocd_ftdi_layout_init'...
23
Debug: 32 922 command.c:364 register_command_handler(): registering 'ocd_ftdi_layout_signal'...
24
Debug: 33 937 command.c:364 register_command_handler(): registering 'ocd_ftdi_set_signal'...
25
Debug: 34 937 command.c:364 register_command_handler(): registering 'ocd_ftdi_get_signal'...
26
Debug: 35 968 command.c:364 register_command_handler(): registering 'ocd_ftdi_vid_pid'...
27
Debug: 36 984 command.c:364 register_command_handler(): registering 'ocd_ftdi_tdo_sample_edge'...
28
Debug: 37 984 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_ftdi_device_desc Olimex OpenOCD JTAG ARM-USB-OCD-H
29
Debug: 38 1000 command.c:143 script_debug(): command - ftdi_device_desc ocd_ftdi_device_desc Olimex OpenOCD JTAG ARM-USB-OCD-H
30
Debug: 40 1015 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_ftdi_vid_pid 0x15ba 0x002b
31
Debug: 41 1015 command.c:143 script_debug(): command - ftdi_vid_pid ocd_ftdi_vid_pid 0x15ba 0x002b
32
Debug: 43 1047 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_init 0x0908 0x0b1b
33
Debug: 44 1062 command.c:143 script_debug(): command - ftdi_layout_init ocd_ftdi_layout_init 0x0908 0x0b1b
34
Debug: 46 1062 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_signal nSRST -oe 0x0200
35
Debug: 47 1078 command.c:143 script_debug(): command - ftdi_layout_signal ocd_ftdi_layout_signal nSRST -oe 0x0200
36
Debug: 49 1078 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_signal nTRST -data 0x0100
37
Debug: 50 1093 command.c:143 script_debug(): command - ftdi_layout_signal ocd_ftdi_layout_signal nTRST -data 0x0100
38
Debug: 52 1109 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_ftdi_layout_signal LED -data 0x0800
39
Debug: 53 1109 command.c:143 script_debug(): command - ftdi_layout_signal ocd_ftdi_layout_signal LED -data 0x0800
40
Debug: 55 1125 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_transport select jtag
41
Debug: 56 1140 command.c:143 script_debug(): command - ocd_transport ocd_transport select jtag
42
Debug: 57 1156 command.c:364 register_command_handler(): registering 'ocd_jtag_flush_queue_sleep'...
43
Debug: 58 1156 command.c:364 register_command_handler(): registering 'ocd_jtag_rclk'...
44
Debug: 59 1172 command.c:364 register_command_handler(): registering 'ocd_jtag_ntrst_delay'...
45
Debug: 60 1172 command.c:364 register_command_handler(): registering 'ocd_jtag_ntrst_assert_width'...
46
Debug: 61 1187 command.c:364 register_command_handler(): registering 'ocd_scan_chain'...
47
Debug: 62 1187 command.c:364 register_command_handler(): registering 'ocd_jtag_reset'...
48
Debug: 63 1187 command.c:364 register_command_handler(): registering 'ocd_runtest'...
49
Debug: 64 1203 command.c:364 register_command_handler(): registering 'ocd_irscan'...
50
Debug: 65 1218 command.c:364 register_command_handler(): registering 'ocd_verify_ircapture'...
51
Debug: 66 1218 command.c:364 register_command_handler(): registering 'ocd_verify_jtag'...
52
Debug: 67 1234 command.c:364 register_command_handler(): registering 'ocd_tms_sequence'...
53
Debug: 68 1234 command.c:364 register_command_handler(): registering 'ocd_wait_srst_deassert'...
54
Debug: 69 1250 command.c:364 register_command_handler(): registering 'ocd_jtag'...
55
Debug: 70 1265 command.c:364 register_command_handler(): registering 'ocd_jtag'...
56
Debug: 71 1265 command.c:364 register_command_handler(): registering 'ocd_jtag'...
57
Debug: 72 1281 command.c:364 register_command_handler(): registering 'ocd_jtag'...
58
Debug: 73 1281 command.c:364 register_command_handler(): registering 'ocd_jtag'...
59
Debug: 74 1297 command.c:364 register_command_handler(): registering 'ocd_jtag'...
60
Debug: 75 1297 command.c:364 register_command_handler(): registering 'ocd_jtag'...
61
Debug: 76 1312 command.c:364 register_command_handler(): registering 'ocd_jtag'...
62
Debug: 77 1312 command.c:364 register_command_handler(): registering 'ocd_jtag'...
63
Debug: 78 1328 command.c:364 register_command_handler(): registering 'ocd_jtag'...
64
Debug: 79 1328 command.c:364 register_command_handler(): registering 'ocd_jtag'...
65
Debug: 80 1343 command.c:364 register_command_handler(): registering 'ocd_jtag'...
66
Debug: 81 1343 command.c:364 register_command_handler(): registering 'ocd_jtag'...
67
Debug: 82 1359 command.c:364 register_command_handler(): registering 'ocd_svf'...
68
Debug: 83 1359 command.c:364 register_command_handler(): registering 'ocd_xsvf'...
69
Debug: 84 1359 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_jtag_rclk 1
70
Debug: 85 1375 command.c:143 script_debug(): command - jtag_rclk ocd_jtag_rclk 1
71
Debug: 87 1375 core.c:1654 jtag_config_rclk(): handle jtag rclk
72
Debug: 88 1390 core.c:1612 adapter_khz_to_speed(): convert khz to interface specific speed value
73
Debug: 89 1390 core.c:1612 adapter_khz_to_speed(): convert khz to interface specific speed value
74
User : 90 1406 command.c:544 command_print(): RCLK - adaptive
75
Debug: 91 1406 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_reset_config trst_and_srst
76
Debug: 92 1422 command.c:143 script_debug(): command - reset_config ocd_reset_config trst_and_srst
77
User : 95 1422 command.c:544 command_print(): trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain connect_deassert_srst
78
Debug: 96 1437 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_init
79
Debug: 97 1453 command.c:143 script_debug(): command - init ocd_init
80
Debug: 99 1453 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_target init
81
Debug: 100 1468 command.c:143 script_debug(): command - ocd_target ocd_target init
82
Debug: 102 1468 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_target names
83
Debug: 103 1484 command.c:143 script_debug(): command - ocd_target ocd_target names
84
Debug: 104 1484 target.c:1368 handle_target_init_command(): Initializing targets...
85
Debug: 105 1500 ftdi.c:657 ftdi_initialize(): ftdi interface using shortest path jtag state transitions
86
Debug: 106 1547 mpsse.c:428 mpsse_purge(): -
87
Debug: 107 1547 mpsse.c:709 mpsse_loopback_config(): off
88
Debug: 108 1547 mpsse.c:754 mpsse_set_frequency(): target 0 Hz
89
Debug: 109 1562 mpsse.c:746 mpsse_rtck_config(): on
90
Debug: 110 1562 core.c:1612 adapter_khz_to_speed(): convert khz to interface specific speed value
91
Debug: 111 1562 core.c:1615 adapter_khz_to_speed(): have interface set up
92
Debug: 112 1562 mpsse.c:754 mpsse_set_frequency(): target 0 Hz
93
Debug: 113 1578 mpsse.c:746 mpsse_rtck_config(): on
94
Debug: 114 1578 core.c:1612 adapter_khz_to_speed(): convert khz to interface specific speed value
95
Debug: 115 1593 core.c:1615 adapter_khz_to_speed(): have interface set up
96
Info : 116 1593 core.c:1396 adapter_init(): RCLK (adaptive clock speed)
97
Debug: 117 1593 openocd.c:166 handle_init_command(): Debug Adapter init complete
98
Debug: 118 1609 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_transport init
99
Debug: 119 1609 command.c:143 script_debug(): command - ocd_transport ocd_transport init
100
Debug: 121 1625 transport.c:239 handle_transport_init(): handle_transport_init
101
Debug: 122 1640 core.c:729 jtag_add_reset(): SRST line released
102
Debug: 123 1640 core.c:753 jtag_add_reset(): TRST line released
103
Debug: 124 1640 core.c:327 jtag_call_event_callbacks(): jtag event: TAP reset
104
Debug: 125 1656 command.c:143 script_debug(): command - ocd_command ocd_command type ocd_jtag arp_init
105
Debug: 126 1656 command.c:143 script_debug(): command - ocd_jtag ocd_jtag arp_init
106
Debug: 127 1672 core.c:1407 jtag_init_inner(): Init JTAG chain
107
Warn : 128 1672 core.c:1423 jtag_init_inner(): There are no enabled taps.  AUTO PROBING MIGHT NOT WORK!!
108
Debug: 129 1687 core.c:327 jtag_call_event_callbacks(): jtag event: TAP reset
109
Debug: 130 1687 core.c:1060 jtag_examine_chain(): DR scan interrogation for IDCODE/BYPASS
110
Debug: 131 1687 core.c:327 jtag_call_event_callbacks(): jtag event: TAP reset

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Olli Z. schrieb:
> Irgendwas wird das Autoprobing doch
> finden und wenn es nur die IRLen ist.

Die Authoren von OpenOCD sind da anderer Meinung:

> Warn : 128 1672 core.c:1423 jtag_init_inner(): There are no enabled taps.  AUTO 
PROBING MIGHT NOT WORK!!

Olli Z. schrieb:
> Da mein Target nicht lieft

Wenn das Target nicht läuft hat man oft ein Problem mit den Basics wie 
korrekt angeschlossenen Kabeln. Poste mal ein -d3 Log mit einer Config 
die zu Deinem Target passen sollte.

von Olli Z. (z80freak)


Lesenswert?

d3 Log steht ja über Deiner Antwort und die Adapter-Config ganz oben.
Eine target-config habe ich noch nicht, weil es die nicht gibt und ich 
mich erstmal rantasten muss. Es ist ein OMAP5948 über den es leider 
keine frei verfügbaren Infos gibt. Mit dem Segger kann ich daraus aber 
das Flash auslesen, und jetzt wollte ich die Infos von dem einen auf den 
anderen übertragen. Aber irgendwas stimmt da mit den Signalen noch 
nicht.
Wie gehe ich nun weiter vor?

von Olli Z. (z80freak)


Lesenswert?

SORRY SORRY SORRY!!! ICH WAR HAB DEN FEHLER GEFUNDEN !!!

Ich habe wohl ein Kabelproblem. Hab grad nochmal den Segger angesteckt 
und der konnte plötzlich auch nicht mehr. Dann habe ich die Pins mal mit 
Dupont-Wires direkt verbunden und alles klappte auf Anhieb!

Hier das log vom autoprobe, was nun auch geht (zumindest zeigt er was 
an):
1
C:\Programme\openocd>openocd
2
GNU MCU Eclipse 64-bits Open On-Chip Debugger 0.10.0+dev-00487-gaf359c18 (2018-05-12-19:30)
3
Licensed under GNU GPL v2
4
For bug reports, read
5
        http://openocd.org/doc/doxygen/bugs.html
6
RCLK - adaptive
7
trst_only separate trst_push_pull
8
Info : RCLK (adaptive clock speed)
9
Warn : There are no enabled taps.  AUTO PROBING MIGHT NOT WORK!!
10
Info : JTAG tap: auto0.tap tap/device found: 0x031f3d81 (mfg: 0x6c0 (<unknown>), part: 0x31f3, ver: 0x0)
11
Info : JTAG tap: auto1.tap tap/device found: 0x0692602f (mfg: 0x017 (Texas Instruments), part: 0x6926, ver: 0x0)
12
Info : JTAG tap: auto2.tap tap/device found: 0x2008f02f (mfg: 0x017 (Texas Instruments), part: 0x008f, ver: 0x2)
13
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -irlen 7 -expected-id 0x031f3d81"
14
Warn : AUTO auto1.tap - use "jtag newtap auto1 tap -irlen 2 -expected-id 0x0692602f"
15
Error: auto1.tap: IR capture error; saw 0x0003 not 0x0001
16
Warn : Bypassing JTAG setup events due to errors
17
Warn : gdb services need one or more targets defined
18
Info : Listening on port 6666 for tcl connections
19
Info : Listening on port 4444 for telnet connections

Die gefundenen TAP-IDs stimmen sogar. Aber nun gleich eine Frage zur 
Auswertung: Wie ist die Reihenfolge der gefundenen TAPs in relation zum 
IR zu sehen? Sprich, wenn ich nun weiss das auto0.tap device eine IRLen 
von 8 hat und ich mit dem auto1.tap device kommunizieren will, ist dann 
mein IR-Offset 8? Sprich ist die Position von auto0.tap mit Bit 0 the IR 
gleich zu setzen?

von Olli Z. (z80freak)


Lesenswert?

Jetzt muss ich noch rausfinden wie ich die ARM926 CPU im OMAP anhalte um 
aufs Flash zu kommen.

Der „integrierte“ HALT Befehl im openocd Telnet CLI ergibt nir einen 
Timeout Fehler...

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.