AM335x: allow simultaneous debugging of A8 and M3 cores
authorMatthias Welwarsky <matthias@welwarsky.de>
Tue, 13 Oct 2015 10:02:58 +0000 (12:02 +0200)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Tue, 29 Dec 2015 21:16:54 +0000 (21:16 +0000)
This patch fixes the tap order so that it matches the actual jtag
chain when all taps are enabled. It also introduces a variable
DEFAULT_TAPS that can be set outside of this script, e.g. on the
command line, to specify which taps are to be enabled on init.
Lastly, a new debug target "am335x.m3" is added so that the Wakeup-M3
can be selected for debugging.

Change-Id: Iccf177fda8d5e3737b1b2bb8fd1eaa7d3262ed9f
Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-on: http://openocd.zylin.com/3013
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
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
 #