X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=tcl%2Ftarget%2Fpxa255.cfg;h=386242597cefd9b3a8ae3d59a455c67170458a62;hp=93d27bd363378bd57eceaeba6f358a6cde4233be;hb=79d6d3cda90c6694343bde909978069994049ab7;hpb=95da247b40d13600c37588d6be0ef8b3cc9abf2f diff --git a/tcl/target/pxa255.cfg b/tcl/target/pxa255.cfg index 93d27bd363..386242597c 100644 --- a/tcl/target/pxa255.cfg +++ b/tcl/target/pxa255.cfg @@ -1,26 +1,59 @@ # PXA255 chip ... originally from Intel, PXA line was sold to Marvell. -# This chip is now at end-of-life. Final orders have been taken. +# 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 CHIPNAME] } { + set _CHIPNAME $CHIPNAME +} else { + set _CHIPNAME pxa255 } -if { [info exists ENDIAN] } { - set _ENDIAN $ENDIAN -} else { - set _ENDIAN little +if { [info exists ENDIAN] } { + set _ENDIAN $ENDIAN +} else { + set _ENDIAN little } -if { [info exists CPUTAPID ] } { +if { [info exists CPUTAPID] } { set _CPUTAPID $CPUTAPID } else { set _CPUTAPID 0x69264013 } -jtag newtap $_CHIPNAME cpu -irlen 5 -ircapture 0x1e -irmask 0x1f -expected-id $_CPUTAPID +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id $_CPUTAPID set _TARGETNAME $_CHIPNAME.cpu -target create $_TARGETNAME xscale -endian $_ENDIAN -chain-position $_TARGETNAME -debug_level 3 +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. +adapter_khz 300 +$_TARGETNAME configure -event "reset-start" { adapter_khz 300 } + +# both TRST and SRST are *required* for debug +# DCSR is often accessed with SRST active +reset_config trst_and_srst separate srst_nogate + +# 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 +}