aboutsummaryrefslogtreecommitdiff
path: root/tcl/target/quark_d20xx.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'tcl/target/quark_d20xx.cfg')
-rw-r--r--tcl/target/quark_d20xx.cfg50
1 files changed, 50 insertions, 0 deletions
diff --git a/tcl/target/quark_d20xx.cfg b/tcl/target/quark_d20xx.cfg
new file mode 100644
index 00000000..419f9dc4
--- /dev/null
+++ b/tcl/target/quark_d20xx.cfg
@@ -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"