X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Ftarget%2Fimx31.cfg;h=83a4abc44f6e90e7c6af54282a1e17aacf019e51;hp=34b35d8ba62ab35da05e9beb2e0fa8198839e7ac;hb=a28eaa85f73759bb189a46308642502c9fa5aa4b;hpb=91afc3dc3083a3d4f6a4104a5132d87c8ec03c7f diff --git a/src/target/target/imx31.cfg b/src/target/target/imx31.cfg index 34b35d8ba6..83a4abc44f 100644 --- a/src/target/target/imx31.cfg +++ b/src/target/target/imx31.cfg @@ -2,18 +2,64 @@ # # NB! Does not work yet. Work in progress -#jtag scan chain -#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) -# 4 devices otherwise openocd complains, the last one returns 0x0 for all bytes -jtag_device 4 0x1 0x0 0xe -jtag_device 5 0x1 0x1f 0x1e -#jtag_device 4 0x0 0x0 0xe -# The device below does not have an IDCODE, so lsb is 1 -jtag_device 4 0x0 0x0 0xf -jtag_device 5 0x1 0x0 0x1e +if { [info exists CHIPNAME] } { + set _CHIPNAME $CHIPNAME +} else { + set _CHIPNAME imx31 +} + +if { [info exists ENDIAN] } { + set _ENDIAN $ENDIAN +} else { + set _ENDIAN little +} + +if { [info exists CPUTAPID ] } { + set _CPUTAPID $CPUTAPID +} else { + # force an error till we get a good number + set _CPUTAPID 0xffffffff +} + +#======================================== +# The "system jtag controller" +# IMX31 reference manual, page 6-28 - figure 6-14 +if { [info exists SJCTAPID ] } { + set _SJCTAPID $SJCTAPID +} else { + set _SJCTAPID 0xffffffff +} +jtag newtap $_CHIPNAME sjc -irlen 4 -ircapture 00 irmask 0x0 -expected-id $_SJCTAPID + +# The "SDMA" - mart controller debug tap +# Based on some IO pins - this can be disabled & removed +# See diagram: 6-14 +# SIGNAL NAME: +# SJC_MOD - controls multiplexer - disables ARM1136 +# SDMA_BYPASS - disables SDMA - +# +if { [info exists SDMATAPID ] } { + set _SDMATAPID $SDMATAPID +} else { + set _SDMATAPID 0xffffffff +} +# Per section 40.17.1, table 40-85 the IR register is 4 bits +# But this conflicts with Diagram 6-13, "3bits ir and drs" +jtag newtap $_CHIPNAME smda -irlen 4 -ircapture 0xe -irmask 0xf -expected-id $_SJCTAPID + +# The ARM11 core tap +if { [info exists CPUTAPID ] } { + set _CPUTAPID $CPUTAPID +} else { + set _CPUTAPID 0xffffffff +} +# Per ARM: DDI0211J_arm1136_r1p5_trm.pdf - the ARM 1136 as a 5 bit IR register +jtag newtap $_CHIPNAME cpu -irlen 5 -ircapture 0x1e irmask 0x1f -expected-id $_SJCTAPID + jtag_nsrst_delay 500 jtag_ntrst_delay 500 -target create target0 arm11 -endian little -chain-position 1 +set _TARGETNAME [format "%s.cpu" $_CHIPNAME] +target create $_TARGETNAME arm11 -endian $_ENDIAN -chain-position $_TARGETNAME