Hi all,
I’m new to using JTAG and have been playing around with OpenOCD and an Olimex ARM-JTAG wiggler. Currently I have two completely different Intel Xscale-based boards that I have been testing on, one using an IPX425 and the other a PXA255.
In both cases I have been able to connect to the processors and can poll their state. When I try to probe the attached flash banks however, I receive errors because the processor has not been halted. When I try to halt the processor, the state remains stuck in reset.
I have tried many combinations of values for the reset_config field with no success (in both cases I believe that SRST and TRST are separate). I cannot figure out how to get the processors to come out of reset.
OpenOCD (r213, compiled from source on Ubuntu 7.10) prints an error in the function xscale_deassert_reset which I think is the likely cause:
Info: openocd.c:93 main(): Open On-Chip Debugger (2007-09-05 09:00 CEST)
Debug: jtag.c:1407 jtag_init(): -
Debug: parport.c:351 parport_init(): opening /dev/parport0...
Debug: parport.c:363 parport_init(): ...open
Debug: parport.c:234 parport_reset(): trst: 0, srst: 0
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(): -
Debug: jtag.c:1291 jtag_examine_chain(): JTAG device found: 0x19274013 (Manufacturer: 0x009, Part: 0x9274, Version: 0x1
Debug: jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST asserted
Debug: jtag.c:1197 jtag_reset_callback(): -
Debug: openocd.c:113 main(): jtag init complete
Debug: jtag.c:295 jtag_call_event_callbacks(): jtag event: SRST released
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(): -
Debug: jtag.c:295 jtag_call_event_callbacks(): jtag event: SRST released
Debug: jtag.c:1197 jtag_reset_callback(): -
Debug: parport.c:234 parport_reset(): trst: 1, srst: 0
Debug: parport.c:234 parport_reset(): trst: 0, srst: 0
Debug: xscale.c:1550 xscale_assert_reset(): target->state: unknown
Debug: jtag.c:295 jtag_call_event_callbacks(): jtag event: TRST released
Debug: jtag.c:1197 jtag_reset_callback(): -
Debug: jtag.c:295 jtag_call_event_callbacks(): jtag event: SRST asserted
Debug: jtag.c:1197 jtag_reset_callback(): -
Debug: parport.c:234 parport_reset(): trst: 0, srst: 1
Debug: xscale.c:1594 xscale_deassert_reset(): -
Debug: jtag.c:295 jtag_call_event_callbacks(): jtag event: SRST released
Debug: jtag.c:1197 jtag_reset_callback(): -
Debug: parport.c:234 parport_reset(): trst: 0, srst: 0
Error: xscale.c:1632 xscale_deassert_reset(): file open error: couldn't stat() target/xscale/debug_handler.bin: No such file or directory
Debug: openocd.c:117 main(): target init complete
Debug: openocd.c:121 main(): flash init complete
Debug: openocd.c:125 main(): NAND init complete
Debug: openocd.c:129 main(): pld init complete
Debug: gdb_server.c:1526 gdb_init(): gdb service for target xscale at port 3333
Debug: xscale.c:1218 xscale_halt(): target->state: reset
Debug: xscale.c:1233 xscale_halt(): target->state == TARGET_RESET
target/xscale/debug_handler.bin was built, and I did try moving it into the appropriate directory relative to the installed openocd executable, but without success.
Here is the configuration file for the IXP425 (the other one is very similar, with appropriate changes for the processor type and memory addresses):
# daemon configuration
telnet_port 4444
gdb_port 3333
daemon_startup reset
# interface
interface parport
parport_port 0
parport_cable wiggler
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 trst_and_srst
# jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 7 0x1 0x7f 0x7e
# target configuration
target xscale big run_and_halt 0 ixp42x
run_and_halt_time 0 30
# maps to PXA internal RAM. If you are using a PXA255
# you must initialize SDRAM or leave this option off
working_area 0 0x00020000 0x10000 nobackup
# flash bank <driver> <base> <size> <chip_width> <bus_width>
flash bank cfi 0x50000000 0x1000000 2 4 0
Any help would be appreciated.
Thanks,
Andrew