commit caddf455253fb5cfeb7a67d99455452b36d17f15
parent a7d29a11b2b18d515f0303071251338960cae5ce
Author: Brian Swetland <swetland@frotz.net>
Date:   Mon, 21 Apr 2014 02:15:51 -0700
more work in progress
- fix problem with post-device entries in the chain
- test xilinx USERx register
Diffstat:
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/jtag-mpsse.c b/jtag-mpsse.c
@@ -359,7 +359,7 @@ int _jtag_shift(JTAG *jtag, int count, u64 bits, u64 *out,
 	return 0;
 }
 
-#define ONES(n) (0xFFFFFFFFFFFFFFFFULL >> ((64 - (n))))
+#define ONES(n) (0x7FFFFFFFFFFFFFFFULL >> (63 - (n)))
 
 static int jtag_shift_dr(JTAG *jtag, int count, u64 bits,
 	u64 *out, int movecount, unsigned movebits) {
diff --git a/jtag.c b/jtag.c
@@ -102,15 +102,33 @@ int main(int argc, char **argv) {
 	if ((n = jtag_enumerate(jtag)) <= 0)
 		return -1;
 
+#if 0
 	if (jtag_select(jtag, 0x4ba00477))
 		return -1;
-
 	if (jtag_ir_wr(jtag, DAP_IR_IDCODE))
 		return -1;
 	if (jtag_dr_io(jtag, 32, 0, &u))
 		return -1;
+#endif
+
+	u = 0xaaaaaaaa;
+	if (jtag_select(jtag, 0x13722093))
+		return -1;
+	if (jtag_ir_wr(jtag, XIL_IDCODE))
+		return -1;
+	if (jtag_dr_io(jtag, 32, 0, &u))
+		return -1;
 	fprintf(stderr,"idcode? %08lx\n", u);
 
+	jtag_ir_wr(jtag, XIL_USER4);
+	jtag_dr_io(jtag, 32, 0x12345678, &u);
+	fprintf(stderr, "user4 %08lx\n", u);
+	jtag_dr_io(jtag, 32, 0xa7a7a7a7, &u);
+	fprintf(stderr, "user4 %08lx\n", u);
+	jtag_dr_io(jtag, 32, 0xa7a7a7a7, &u);
+	fprintf(stderr, "user4 %08lx\n", u);
+ 
+#if 0
 	jtag_dp_rd(jtag, DPACC_CSW, &x);
 	fprintf(stderr,"CSW %08x\n", x);
 
@@ -125,6 +143,7 @@ int main(int argc, char **argv) {
 
 	jtag_ap_rd(jtag, APACC_IDR, &x);
 	fprintf(stderr,"idr %08x\n", x);
+#endif
 
 #if STRESSTEST
 	for (n = 0; n < 0xFFFFFFFF; n++) { 
@@ -142,10 +161,10 @@ int main(int argc, char **argv) {
 	jtag_ap_wr(jtag, APACC_TAR, 0x12345678);
 #endif
 
+#if 0
 	jtag_ap_rd(jtag, APACC_TAR, &x);
 	fprintf(stderr,"tar %08x\n", x);
 
-#if 0
 	fprintf(stderr,"done\n");
 	jtag_dp_wr(jtag, DPACC_CSW, 0);
 #endif