AM335x: allow simultaneous debugging of A8 and M3 cores
[fw/openocd] / tcl / target / am335x.cfg
index e20c6f30f7a7a443bd2ddd48bce73c3dd522bac3..ce7cfb6d6802cad4cf0d7eee17c1e78eb8737320 100644 (file)
@@ -1,46 +1,73 @@
 source [find target/icepick.cfg]
 
 if { [info exists CHIPNAME] } {
-   set _CHIPNAME $CHIPNAME
+       set _CHIPNAME $CHIPNAME
 } else {
-   set _CHIPNAME am335x
+       set _CHIPNAME am335x
 }
 
-#
-# M3 DAP
-#
-if { [info exists M3_DAP_TAPID] } {
-       set _M3_DAP_TAPID $M3_DAP_TAPID
+# set the taps to be enabled by default. this can be overridden
+# by setting DEFAULT_TAPS in a separate configuration file
+# or directly on the command line.
+if { [info exists DEFAULT_TAPS] } {
+       set _DEFAULT_TAPS "$DEFAULT_TAPS"
 } else {
-       set _M3_DAP_TAPID 0x4b6b902f
+       set _DEFAULT_TAPS "$_CHIPNAME.dap"
 }
-jtag newtap $_CHIPNAME m3_dap -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M3_DAP_TAPID -disable
-jtag configure $_CHIPNAME.m3_dap -event tap-enable "icepick_d_tapenable $_CHIPNAME.jrc 11 0"
 
 #
 # Main DAP
 #
 if { [info exists DAP_TAPID] } {
-   set _DAP_TAPID $DAP_TAPID
+       set _DAP_TAPID $DAP_TAPID
 } else {
-   set _DAP_TAPID 0x4b6b902f
+       set _DAP_TAPID 0x4b6b902f
 }
 jtag newtap $_CHIPNAME dap -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID -disable
 jtag configure $_CHIPNAME.dap -event tap-enable "icepick_d_tapenable $_CHIPNAME.jrc 12 0"
 
+#
+# M3 DAP
+#
+if { [info exists M3_DAP_TAPID] } {
+       set _M3_DAP_TAPID $M3_DAP_TAPID
+} else {
+       set _M3_DAP_TAPID 0x4b6b902f
+}
+jtag newtap $_CHIPNAME m3_dap -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M3_DAP_TAPID -disable
+jtag configure $_CHIPNAME.m3_dap -event tap-enable "icepick_d_tapenable $_CHIPNAME.jrc 11 0"
+
 #
 # ICEpick-D (JTAG route controller)
 #
 if { [info exists JRC_TAPID] } {
-   set _JRC_TAPID $JRC_TAPID
+       set _JRC_TAPID $JRC_TAPID
 } else {
-   set _JRC_TAPID 0x0b94402f
+       set _JRC_TAPID 0x0b94402f
 }
 jtag newtap $_CHIPNAME jrc -irlen 6 -ircapture 0x1 -irmask 0x3f -expected-id $_JRC_TAPID -ignore-version
-jtag configure $_CHIPNAME.jrc -event setup "jtag tapenable $_CHIPNAME.dap"
+jtag configure $_CHIPNAME.jrc -event setup {
+       global _DEFAULT_TAPS
+       enable_default_taps $_DEFAULT_TAPS
+}
 # some TCK tycles are required to activate the DEBUG power domain
 jtag configure $_CHIPNAME.jrc -event post-reset "runtest 100"
 
+#
+# helper function that enables all taps passed as argument
+#
+proc enable_default_taps { taps } {
+       foreach tap $taps {
+               jtag tapenable $tap
+       }
+}
+
+#
+# Cortex M3 target
+#
+set _TARGETNAME_2 $_CHIPNAME.m3
+target create $_TARGETNAME_2 cortex_m -chain-position $_CHIPNAME.m3_dap
+
 #
 # Cortex A8 target
 #