Forum: Mikrocontroller und Digitale Elektronik Warum geht OpenOCD mit Wiggler, aber nicht mit FTDI Adapter?


von Gunnar H. (gunnar_henne)


Lesenswert?

Hallo,

ich möchte OpenOCD mit einem Controller mit ARM 7 TDMI verbinden. Zuerst 
habe ich es mit einem Wiggler versucht und autoprobe fand den 
Controller. Aufgrund der autoprobe Ausgaben habe ich diese 
Config-Optionen gesetzt:

jtag_khz 1000
jtag newtap auto0 tap -expected-id 0x3f0f0f0f -irlen 4
target create pcd.cpu arm7tdmi  -variant arm7tdmi -chain-position 0

OpenOCD mit dem Wiggler meldet dann Erfolg:
parport port = 0x378
1000 kHz
Warn : Specify TAP 'auto0.tap' by name, not number 0
pcd.cpu
Info : clock speed 500 kHz
Info : JTAG tap: auto0.tap tap/device found: 0x3f0f0f0f (mfg: 0x787, 
part: 0xf0f0, ver: 0x3)
Info : Embedded ICE version 1
Info : pcd.cpu: hardware has 2 breakpoint/watchpoint units

Wenn ich dieselbe Konfiguration mit einem FTDI basierten JTAG Adapter 
(USB Blaster mit Jtagkey Buffer) probiere gibt es Fehler bei der 
Verbindung:

1000 kHz
Warn : Specify TAP 'auto0.tap' by name, not number 0
pcd.cpu
Info : max TCK change to: 30000 kHz
Info : clock speed 1000 kHz
Info : TAP auto0.tap does not have IDCODE
Warn : JTAG tap: auto0.tap       UNEXPECTED: 0x00000000 (mfg: 0x000, 
part: 0x0000, ver: 0x0)
Error: JTAG tap: auto0.tap  expected 1 of 1: 0x3f0f0f0f (mfg: 0x787, 
part: 0xf0f0, ver: 0x3)
Warn : Unexpected idcode after end of chain: 1 0x000001fe
...
Warn : Unexpected idcode after end of chain: 577 0x000001fe
Error: double-check your JTAG setup (interface, speed, missing TAPs, 
...)
Error: Trying to use configured scan chain anyway...
Error: auto0.tap: IR capture error; saw 0x00 not 0x01

Was kann ich noch einstellen, damit auch der USB Blaster eine Verbindung 
aufbauen kann? Ich vermute, dass er schneller ist, als der Wiggler, aber 
selbst eine Reduktion von jtag_khz auf 500 und dann 100 brachte nichts.

Viele Grüße
Gunnar

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gunnar Henne schrieb:

> Info : JTAG tap: auto0.tap tap/device found: 0x3f0f0f0f (mfg: 0x787,
> part: 0xf0f0, ver: 0x3)

Das sieht schräg aus.  Bist du dir sicher, dass da alles funktioniert?

von Gunnar H. (gunnar_henne)


Lesenswert?

Hallo Jörg,

ich bin mir sicher, dass das alles funktioniert. Hochladen des Images 
ins Ram und ausführen hat funktioniert. Inzwischen sieht meine Config so 
aus:
1
# pcd.cfg
2
telnet_port 4000
3
gdb_port 3333
4
5
#configure reset options
6
jtag_nsrst_delay 50     
7
jtag_ntrst_delay 50
8
9
#use combined on interfaces or targets that can't set TRST/SRST separately
10
reset_config trst_and_srst srst_pulls_trst trst_push_pull srst_push_pull
11
12
adapter_khz 1000
13
jtag newtap auto0 tap -expected-id 0x3f0f0f0f -irlen 4
14
target create pcd.cpu arm7tdmi  -variant arm7tdmi -chain-position 0
15
16
arm7_9 fast_memory_access enable
17
18
proc start_debug {} {
19
  halt
20
  load_image pcd_image.elf
21
  step 0x01000000
22
}

Ich habe das Problem, dass ein Aufruf von start_debug() über die 
Kommandozeile
1
openocd -f interface/parport.cfg -f pcd.cfg -c start_debug
immer behauptet, dass es die "halt" funktion nicht gibt. Wenn ich aber 
stattdessen die Funktion über das telnet Interface auf Port 4000 
aufrufe, geht es wunderbar und ich kann einen Debugger anhängen.

Kann mir dazu jemand einen Tip geben?

Viele Grüße
Gunnar

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.