jtagonizer

yet another JTAG tool
git clone http://frotz.net/git/jtagonizer.git
Log | Files | Refs | README

jtag.c (1526B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 
      5 #include "jtag.h"
      6 
      7 int main(int argc, char **argv) {
      8 	unsigned ir, x;
      9 	unsigned p0 = 0x80808080;
     10 	unsigned p1 = 0x12345678;
     11 	unsigned p2 = 0xaabbccdd;
     12 	unsigned x0, x1, x2;
     13 	unsigned char b0[8192], b1[8192];
     14 	unsigned n, i;
     15 	unsigned char C;
     16 	JTAG *jtag;
     17 
     18 	if (jtag_mpsse_open(&jtag)) {
     19 		fprintf(stderr, "error opening jtag\n");
     20 		return -1;
     21 	}
     22 
     23 	jtag_goto(jtag, JTAG_RESET);
     24 	jtag_goto(jtag, JTAG_RESET);
     25 	jtag_goto(jtag, JTAG_RESET);
     26 	jtag_goto(jtag, JTAG_RESET);
     27 	jtag_commit(jtag);
     28 
     29 	ir = 9;
     30 	jtag_set_dr_idle(jtag, JTAG_DRPAUSE);
     31 	jtag_goto(jtag, JTAG_RESET);
     32 	jtag_ir_wr(jtag, 6, &ir);
     33 	jtag_dr_io(jtag, 32, &p0, &x);
     34 	jtag_dr_io(jtag, 32, &p1, &x0);
     35 	jtag_dr_io(jtag, 32, &p1, &x1);
     36 	jtag_dr_wr(jtag, 32, &p2);
     37 	jtag_dr_rd(jtag, 32, &x2);
     38 	jtag_commit(jtag);
     39 
     40 	fprintf(stderr,"%x %x %x %x\n", x, x0, x1, x2);
     41 
     42 #if 1 
     43 	for (i = 0; i < 1000; i++) {
     44 	C = i;
     45 #define XX 8000
     46 	memset(b0,C,XX);
     47 	//for (n = 0; n < 256; n++) b0[n] = n;
     48 	jtag_goto(jtag, JTAG_RESET);
     49 	jtag_goto(jtag, JTAG_RESET);
     50 	jtag_ir_wr(jtag, 6, &ir);
     51 	jtag_dr_io(jtag, XX*8, b0, b1);
     52 	jtag_commit(jtag);
     53 
     54 	if ((b1[0] != 0x93) || (b1[1] != 0x10) || (b1[2] != 0x63) || (b1[3] != 0x13)) {
     55 		fprintf(stderr,"OOPS\n");
     56 		for (n = 0; n < XX; n++) printf("%02x ", b1[n]);
     57 		return -1;
     58 	}
     59 	for (n = 4; n < XX; n++) {
     60 		if (b1[n] != C) {
     61 			fprintf(stderr,"OOPS @ %d\n", n);
     62 			for (n = 0; n < XX; n++) printf("%02x ", b1[n]);
     63 			return -1;
     64 		}
     65 	}
     66 	}
     67 	fprintf(stderr,"success!\n");
     68 #endif
     69 	return 0;
     70 }