summaryrefslogtreecommitdiff
path: root/src/target/arm_adi_v5.c
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2010-12-24 18:50:41 -0800
committerDavid Brownell <db@helium.(none)>2010-12-24 18:50:41 -0800
commit7cd2617384f4ac620c468343c1f2009fbfa2fc79 (patch)
treefdb1b6685ba84f1f0078bb96e9674fa16089ce10 /src/target/arm_adi_v5.c
parent4994c6008382d14875f122d2036dcabbde53221b (diff)
downloadopenocd+libswd-7cd2617384f4ac620c468343c1f2009fbfa2fc79.tar.gz
openocd+libswd-7cd2617384f4ac620c468343c1f2009fbfa2fc79.tar.bz2
openocd+libswd-7cd2617384f4ac620c468343c1f2009fbfa2fc79.tar.xz
openocd+libswd-7cd2617384f4ac620c468343c1f2009fbfa2fc79.zip
initial SWD transport (SWD infrastructure #2)
This piggy backs on JTAG so it's not yet pretty, but that seems unavoidable so far given today's OpenOCD internals. SWD init and data transfer are unfinished and untested, but that should cause no regressions, and will be addressed by the time drivers start using this infrastructure. Checking in whould get the code working better sooner, and turn up any structural/architectural issues while they're easier to fix. The debug adapter drivers will provide simple SWD driver structs with methods that kick in as needed (instead of JTAG). So far just one adapter driver has been updated (not yet ready to use or circulate). The biggest issues are probably - fault handling, where the ARM Debug Interface V5 pipelining needs work in both JTAG and SWD modes and - missing rewrite of block I/O code to work on both of our Cortex-ready transports (Current code is hard-wired to JTAG); relates also to the pipelining issue. - omitted support to activate/deactivate SWO/SWV trace (this is technically trivial, but configuring what to trace is NOT. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> ---- doc/openocd.texi | 17 ++ src/jtag/core.c | 3 src/jtag/interface.h | 4 src/jtag/jtag.h | 2 src/jtag/swd.h | 114 +++++++++++++++++++ src/jtag/tcl.c | 2 src/target/adi_v5_swd.c | 281 ++++++++++++++++++++++++++++++++++++++++++++++-- src/target/arm_adi_v5.c | 8 + src/target/arm_adi_v5.h | 3 9 files changed, 425 insertions(+), 9 deletions(-)
Diffstat (limited to 'src/target/arm_adi_v5.c')
-rw-r--r--src/target/arm_adi_v5.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index 81edba4e..69a3ce7a 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -913,8 +913,12 @@ int ahbap_debugport_init(struct adiv5_dap *dap)
LOG_DEBUG(" ");
- /* JTAG-DP or SWJ-DP, in JTAG mode */
- dap->ops = &jtag_dp_ops;
+ /* JTAG-DP or SWJ-DP, in JTAG mode
+ * ... for SWD mode this is patched as part
+ * of link switchover
+ */
+ if (!dap->ops)
+ dap->ops = &jtag_dp_ops;
/* Default MEM-AP setup.
*