3fb0263f1c6d24884497e65ee4236ee920cb478a
[fw/openocd] / tcl / target / swj-dp.tcl
1 # ARM Debug Interface V5 (ADI_V5) utility
2 # ... Mostly for SWJ-DP (not SW-DP or JTAG-DP, since
3 # SW-DP and JTAG-DP targets don't need to switch based
4 # on which transport is active.
5 #
6 # declare a JTAG or SWD Debug Access Point (DAP)
7 # based on the transport in use with this session.
8 # You can't access JTAG ops when SWD is active, etc.
9
10 # params are currently what "jtag newtap" uses
11 # because OpenOCD internals are still strongly biased
12 # to JTAG ....  but for SWD, "irlen" etc are ignored,
13 # and the internals work differently
14
15 # for now, ignore non-JTAG and non-SWD transports
16 # (e.g. initial flash programming via SPI or UART)
17
18 # split out "chip" and "tag" so we can someday handle
19 # them more uniformly irlen too...)
20
21 if [catch {transport select}] {
22   echo "Error: unable to select a session transport. Can't continue."
23   shutdown
24 }
25
26 proc swj_newdap {chip tag args} {
27  if [using_jtag] {
28      eval jtag newtap $chip $tag $args
29  } elseif [using_swd] {
30      eval swd newdap $chip $tag $args
31  } else {
32      echo "Error: transport '[ transport select ]' not supported by swj_newdap"
33      shutdown
34  }
35 }