2
0
mirror of git://git.code.sf.net/p/openocd/code synced 2025-07-24 05:59:49 +10:00
openocd/tcl/target/pxa255.cfg
David Brownell 60e24aa597 make PXA255 targets enumerate sort-of-OK
Startup now mostly works, except that the initial target state
is "unknown" ... previously, it refused to even start.

Getting that far required fixing the ircapture value (which
can never have been correct!) and the default JTAG clock rate,
then providing custom reset script.

The "reset" command is still iffy.  DCSR updates, and loading
the debug handler, report numerous DR/IR capture failures.
But once that's done, "poll" reports that the CPU is halted
(which it shouldn't be, this was "reset run"!), due to the
rather curious reason "target-not-halted".

Summary:  you still can't debug these parts, but it's closer.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
2009-10-08 23:51:50 -07:00

56 lines
1.2 KiB
INI

# PXA255 chip ... originally from Intel, PXA line was sold to Marvell.
# This chip is now at end-of-life. Final orders have been taken.
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME pxa255
}
if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x69264013
}
jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME xscale -endian $_ENDIAN \
-chain-position $_CHIPNAME.cpu
# PXA255 comes out of reset using 3.6864 MHz oscillator.
# Until the PLL kicks in, keep the JTAG clock slow enough
# that we get no errors.
jtag_khz 300
$_TARGETNAME configure -event "reset-start" { jtag_khz 300 }
# reset processing that works with PXA
proc init_reset {mode} {
# assert both resets; equivalent to power-on reset
jtag_reset 1 1
# drop TRST after at least 32 cycles
sleep 1
jtag_reset 0 1
# minimum 32 TCK cycles to wake up the controller
runtest 50
# now the TAP will be responsive; validate scanchain
jtag arp_init
# ... and take it out of reset
jtag_reset 0 0
}
proc jtag_init {} {
init_reset startup
}