summaryrefslogtreecommitdiff
path: root/tcl/target/swj-dp.tcl
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2010-10-10 14:41:11 -0700
committerDavid Brownell <db@helium.(none)>2010-10-10 14:41:11 -0700
commite3773e3e3d1f1ee0dbb0b69e8babe8419784d1c1 (patch)
tree5e9482cf112afba4fc9ca093bdf2f7c2a141ce99 /tcl/target/swj-dp.tcl
parent3864da1ab817acab24c41366d627da9337a7993d (diff)
downloadopenocd+libswd-e3773e3e3d1f1ee0dbb0b69e8babe8419784d1c1.tar.gz
openocd+libswd-e3773e3e3d1f1ee0dbb0b69e8babe8419784d1c1.tar.bz2
openocd+libswd-e3773e3e3d1f1ee0dbb0b69e8babe8419784d1c1.tar.xz
openocd+libswd-e3773e3e3d1f1ee0dbb0b69e8babe8419784d1c1.zip
swj-dp.tcl (SWD infrastructure #1)
Provide new helper proc that can set up either an SWD or JTAG DAP based on the transport which is in use -- mostly for SWJ-DP. Also update some SWJ-DP based chips/targets to use it. The goal is making SWD-vs-JTAG transparent in most places. SWJ-DP based chips really need this flexible configuration to cope with debug adapters that support different transports, without needing new target configs for each transport or adapter. For JTAG-DP, callers will use "jtag newtap" directly, as today; only one chip-level transport option exists. For SW-DP (e.g. LPC1[13]xx or EFM32, they'll use "swd newdap" directly (part of an upcoming SWD transport patch). Again, only one transport option exists, so hard-wiring is appropriate there. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'tcl/target/swj-dp.tcl')
-rw-r--r--tcl/target/swj-dp.tcl25
1 files changed, 25 insertions, 0 deletions
diff --git a/tcl/target/swj-dp.tcl b/tcl/target/swj-dp.tcl
new file mode 100644
index 00000000..377b7b5f
--- /dev/null
+++ b/tcl/target/swj-dp.tcl
@@ -0,0 +1,25 @@
+# ARM Debug Interface V5 (ADI_V5) utility
+# ... Mostly for SWJ-DP (not SW-DP or JTAG-DP, since
+# SW-DP and JTAG-DP targets don't need to switch based
+# on which transport is active.
+#
+# declare a JTAG or SWD Debug Access Point (DAP)
+# based on the transport in use with this session.
+# You can't access JTAG ops when SWD is active, etc.
+
+# params are currently what "jtag newtap" uses
+# because OpenOCD internals are still strongly biased
+# to JTAG .... but for SWD, "irlen" etc are ignored,
+# and the internals work differently
+
+# for now, ignore non-JTAG and non-SWD transports
+# (e.g. initial flash programming via SPI or UART)
+
+# split out "chip" and "tag" so we can someday handle
+# them more uniformly irlen too...)
+
+proc swj_newdap {chip tag args} {
+set tran [transport select]
+if [string equal $tran "jtag"] { eval jtag newtap $chip $tag $args}
+if [string equal $tran "swd"] { eval swd newdap $chip $tag $args }
+}