jtag newtap change & huge manual update
[fw/openocd] / src / target / target / imx31.cfg
index f38de00e40d6e10fbf14358d15dd4cf8d0edcca0..83a4abc44f6e90e7c6af54282a1e17aacf019e51 100644 (file)
@@ -1,19 +1,65 @@
-# imx31 config\r
-#\r
-# NB! Does not work yet. Work in progress\r
-\r
-#jtag scan chain\r
-#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)\r
-# 4 devices otherwise openocd complains, the last one returns 0x0 for all bytes\r
-jtag_device 4 0x1 0x0 0xe\r
-jtag_device 5 0x1 0x1f 0x1e\r
-#jtag_device 4 0x0 0x0 0xe\r
-# The device below does not have an IDCODE, so lsb is 1\r
-jtag_device 4 0x0 0x0 0xf\r
-jtag_device 5 0x1 0x0 0x1e\r
-\r
-jtag_nsrst_delay 500\r
-jtag_ntrst_delay 500\r
-\r
-target arm11 little 1\r
\r
+# imx31 config
+#
+# NB! Does not work yet. Work in progress
+
+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" - <S>mart <DMA> 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
+
+set _TARGETNAME [format "%s.cpu" $_CHIPNAME]
+target create $_TARGETNAME arm11 -endian $_ENDIAN -chain-position $_TARGETNAME