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 }