]> git.gag.com Git - fw/openocd/blobdiff - tcl/target/quark_d20xx.cfg
quark: add Intel Quark mcu D2000 support
[fw/openocd] / tcl / target / quark_d20xx.cfg
diff --git a/tcl/target/quark_d20xx.cfg b/tcl/target/quark_d20xx.cfg
new file mode 100644 (file)
index 0000000..419f9dc
--- /dev/null
@@ -0,0 +1,50 @@
+if { [info exists CPUTAPID] } {
+   set _CPUTAPID $CPUTAPID
+} else {
+   set _CPUTAPID 0x38289013
+}
+
+jtag newtap quark_d20xx quark -irlen 8 -irmask 0xff -expected-id $_CPUTAPID -disable
+jtag newtap quark_d20xx cltap -irlen 8 -irmask 0xff -expected-id 0x0e786013 -enable
+
+proc quark_d20xx_tapenable {} {
+       echo "enabling quark core tap"
+       irscan quark_d20xx.cltap 0x11
+       drscan quark_d20xx.cltap 12 1
+       runtest 10
+}
+
+proc quark_d20xx_tapdisable {} {
+       echo "disabling quark core tap"
+       irscan quark_d20xx.cltap 0x11
+       drscan quark_d20xx.cltap 12 0
+       runtest 10
+}
+
+proc quark_d20xx_setup {} {
+       jtag tapenable quark_d20xx.quark
+}
+
+jtag configure quark_d20xx.quark -event tap-enable \
+   "quark_d20xx_tapenable"
+
+jtag configure quark_d20xx.quark -event tap-disable \
+   "quark_d20xx_tapdisable"
+
+target create quark_d20xx.quark quark_d20xx -endian little -chain-position quark_d20xx.quark
+
+quark_d20xx.quark configure -event gdb-attach { halt }
+
+quark_d20xx.quark configure -event reset-start {
+       # need to halt the target to write to memory
+       if {[quark_d20xx.quark curstate] ne "halted"} { halt }
+       # set resetbreak via the core tap
+       irscan quark_d20xx.quark 0x35 ; drscan quark_d20xx.quark 1 0x1
+       # trigger a warm reset
+       mww 0xb0800570 0x2
+       # clear resetbreak
+       irscan quark_d20xx.quark 0x35 ; drscan quark_d20xx.quark 1 0x0
+}
+
+jtag configure quark_d20xx.quark -event setup \
+   "quark_d20xx_setup"