EmbDev.net

Forum: ARM programming with GCC/GNU tools OpenOCD/FT2232 JTAG Communication failure


von Ecc E. (exelty)


Rate this post
useful
not useful
Hi all,
I recently bought a new laptop so decided to make a new wiggler that
works on USB.  I made a PCB of the jtagkey schematic (except I added
RX/TX pins to the header) at:
http://modularcircuits.com/usb_programmer.htm
and the MProg settings from:
http://www.ethernut.de/en/hardware/turtelizer/index.html
and using the turtelizer driver that comes with openocd.
and am having some trouble with getting it to work. I keep getting
communication failure, and using a multimeter, the reset signals from
the FT2232L IC do not chage states. (nTRST remains high and its enable
low (enabled), nSRST low and its enable is always high)

I am trying to program an AT91SAM7A3 that I know is working at least
because it currently has usb code in it which enumerates when i plug it
into a pc. The problem appears to be that signals are not coming out of
the ft2232 properly.

I get the following output from R204 openocd:
Info:    openocd.c:93 main(): Open On-Chip Debugger (2007-09-05 09:00
CEST)
Debug:   jtag.c:1407 jtag_init(): -
Debug:   ft2232.c:1296 ft2232_init_ftd2xx(): 'ft2232' interface using
FTD2XX with 'jtagkey' layout (0403:bdc8)
Debug:   ft2232.c:1385 ft2232_init_ftd2xx(): current latency timer: 2
Debug:   ft2232.c:1651 jtagkey_init(): 80 08 1b
Debug:   ft2232.c:1709 jtagkey_init(): 82 09 0f
Debug:   ft2232.c:253 ft2232_speed(): 86 00 00
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Error:   jtag.c:1253 jtag_examine_chain(): JTAG communication failure,
check connection, JTAG interface, target power etc.
Error:   jtag.c:1440 jtag_init(): trying to validate configured JTAG
chain anyway...
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Error:   jtag.c:1346 jtag_validate_chain(): Error validating JTAG scan
chain, IR mismatch, scan returned 0x3f
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Error:   jtag.c:1346 jtag_validate_chain(): Error validating JTAG scan
chain, IR mismatch, scan returned 0x3f
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Error:   jtag.c:1346 jtag_validate_chain(): Error validating JTAG scan
chain, IR mismatch, scan returned 0x3f
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Error:   jtag.c:1346 jtag_validate_chain(): Error validating JTAG scan
chain, IR mismatch, scan returned 0x3f
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Error:   jtag.c:1346 jtag_validate_chain(): Error validating JTAG scan
chain, IR mismatch, scan returned 0x3f
Debug:   jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST
asserted
Debug:   jtag.c:1197 jtag_reset_callback(): -
Error:   jtag.c:1346 jtag_validate_chain(): Error validating JTAG scan
chain, IR mismatch, scan returned 0x3f
Error:   jtag.c:1448 jtag_init(): Could not validate JTAG chain, exit

and my script is:
telnet_port 4444
gdb_port 3333

#interface
interface ft2232
ft2232_device_desc "Turtelizer JTAG/RS232 Adapter A"
ft2232_layout "jtagkey"
ft2232_vid_pid 0x0403 0xBDC8
jtag_speed 0
jtag_nsrst_delay 2000
jtag_ntrst_delay 2000

#use combined on interfaces or targets that can't set TRST/SRST
separately
reset_config srst_only srst_pulls_trst

#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe

#target configuration
daemon_startup reset

#target <type> <startup mode>
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm7tdmi little run_and_init 0 arm7tdmi
run_and_halt_time 0 30

# flash-options AT91
target_script 0 reset openocd_at91sam7a3_flash.script
working_area 0 0x00200000 0x4000 nobackup
flash bank at91sam7 0 0 0 0 0

I've tried a lot of changes in the script, and even tried some other
drivers, and openocd R141, but still get the same communication failure.
Has anyone made a FT2232 wiggler that can help me as I am starting to
run out of ideas?

von Michael F. (mifi)


Rate this post
useful
not useful
Hello,

what kind of hardware debugger you have?
If you have the turtelizer, you must use the correct settings:

ft2232_device_desc "Turtelizer JTAG/RS232 Adapter A"
ft2232_layout turtelizer2

You must use the turtelizer2 layout and NOT the jtagkey.

Regards,

Michael

von Ecc E. (exelty)


Attached files:

Rate this post
useful
not useful
Hi,
Thanks Michael. I used the turtelizer2 driver because it was the only
place I could find that showed how to program the FT2322 with MProg and
the PID (pretty simple really).  I just tried reprogramming the key with
a PID of CFF8 (amontec ID), and installed the jtagkey drivers, but got
the same output.

I've attached the schematic of my hardware.  It is actually jtagkey
equivalent hardware (I think) except I put TX/RX from channel B to the
header for debugging.

The schematic should be the same as:
http://modularcircuits.com/usb_programmer.htm
and also checked it should be the same as the amontech layout which
there is a tip at:
http://www.fh-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.pdf

I have so far only had a multimeter to use to check the operation, but I
should be able to put a DSO on it tomorrow at work.  Is there some other
things I should check on the hardware tha might prevent reset from
working?

Thanks again,
B

Michael Fischer wrote:
> Hello,
>
> what kind of hardware debugger you have?
> If you have the turtelizer, you must use the correct settings:
>
> ft2232_device_desc "Turtelizer JTAG/RS232 Adapter A"
> ft2232_layout turtelizer2
>
> You must use the turtelizer2 layout and NOT the jtagkey.
>
> Regards,
>
> Michael

von Michael F. (mifi)


Rate this post
useful
not useful
Hello,

for OpenOCD, the best way is to take a look at this forum:

http://forum.sparkfun.com/viewforum.php?f=18

If your device is equivalent to a jtagkey hardware, it should works
with:

#daemon configuration
telnet_port 4444
gdb_port 3333

#interface
interface ft2232
ft2232_device_desc "Amontec JTAGkey A"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0xcff8
jtag_speed 0
jtag_nsrst_delay 200
jtag_ntrst_delay 200


#use combined on interfaces or targets that can't set TRST/SRST
separately
reset_config srst_only srst_pulls_trst

#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe

#target configuration
daemon_startup reset

#target <type> <startup mode>
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm7tdmi little run_and_init 0 arm7tdmi
run_and_halt_time 0 30

target_script 0 reset .\prj\sam7s_reset.script
working_area 0 0x00200000 0x4000 nobackup

#flash bank <driver> <base> <size> <chip_width> <bus_width>
flash bank at91sam7 0 0 0 0 0

# For more information about the configuration files, take a look at:
# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger

This was working with a SM7S256 and a JTAGkey.

Regards,

Michael

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.